17 #include <QListWidgetItem> 20 #include "ui_qgsdatasourcemanagerdialog.h" 36 , mMapCanvas( canvas )
39 ui->verticalLayout_2->setSpacing( 6 );
40 ui->verticalLayout_2->setMargin( 0 );
41 ui->verticalLayout_2->setContentsMargins( 0, 0, 0, 0 );
44 mMessageBar->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed );
45 static_cast<QVBoxLayout *
>( layout() )->insertWidget( 0, mMessageBar );
57 mBrowserWidget->setFeatures( QDockWidget::NoDockWidgetFeatures );
58 ui->mOptionsStackedWidget->addWidget( mBrowserWidget );
59 mPageNames.append( QStringLiteral(
"browser" ) );
68 for (
const auto &provider : sourceSelectProviders )
73 QgsMessageLog::logMessage( tr(
"Cannot get %1 select dialog from source select provider %2." ).arg( provider->name(), provider->providerKey() ), QStringLiteral(
"DataSourceManager" ),
Qgis::Critical );
76 addProviderDialog( dlg, provider->providerKey(), provider->text(), provider->icon( ), provider->toolTip( ) );
89 int pageIdx = mPageNames.indexOf( pageName );
92 QTimer::singleShot( 0,
this, [ = ] {
setCurrentPage( pageIdx ); } );
103 mPreviousRow = ui->mOptionsStackedWidget->currentIndex();
104 ui->mOptionsStackedWidget->setCurrentIndex( index );
105 setWindowTitle( tr(
"Data Source Manager | %1" ).arg( ui->mOptionsListWidget->currentItem()->text() ) );
110 int prevPage = mPreviousRow != -1 ? mPreviousRow : 0;
136 void QgsDataSourceManagerDialog::addProviderDialog(
QgsAbstractDataSourceWidget *dlg,
const QString &providerKey,
const QString &providerName,
const QIcon &icon,
const QString &toolTip )
138 mPageNames.append( providerKey );
139 ui->mOptionsStackedWidget->addWidget( dlg );
140 QListWidgetItem *layerItem =
new QListWidgetItem( providerName, ui->mOptionsListWidget );
141 layerItem->setToolTip( toolTip.isEmpty() ? tr(
"Add %1 layer" ).arg( providerName ) : toolTip );
142 layerItem->setIcon( icon );
148 connect( dlg, &QgsAbstractDataSourceWidget::rejected,
this, &QgsDataSourceManagerDialog::reject );
149 connect( dlg, &QgsAbstractDataSourceWidget::accepted,
this, &QgsDataSourceManagerDialog::accept );
150 makeConnections( dlg, providerKey );
156 connect( dlg, SIGNAL(
addDatabaseLayers( QStringList
const &, QString
const & ) ),
158 connect( dlg, SIGNAL( progressMessage( QString ) ),
163 QString key = specifiedProvider.isEmpty() ? providerKey : specifiedProvider;
171 connect( dlg, SIGNAL(
addRasterLayer( QString
const &, QString
const &, QString
const & ) ),
172 this, SIGNAL(
addRasterLayer( QString
const &, QString
const &, QString
const & ) ) );
177 connect( dlg, SIGNAL( replaceVectorLayer( QString, QString, QString, QString ) ),
186 ui->mOptionsStackedWidget->currentWidget()->show();
void rasterLayerAdded(QString const &uri, QString const &baseName, QString const &providerKey)
A raster layer was added: for signal forwarding to QgisApp TODO: use this with an internal source sel...
void connectionsChanged()
Emitted when a connection has changed inside the provider dialogs This signal is normally forwarded t...
void showEvent(QShowEvent *event) override
void refresh()
Refresh the browser view.
void initOptionsBase(bool restoreUi=true, const QString &title=QString())
Set up the base ui connections for vertical tabs.
QList< QgsSourceSelectProvider * > providers()
Gets list of available providers.
static QgsSourceSelectProviderRegistry * sourceSelectProviderRegistry()
Returns the global source select provider registry, used for managing all known source select widget ...
The QgsDataSourceManagerDialog class embeds the browser panel and all the provider dialogs...
A bar for displaying non-blocking messages to the user.
void restoreOptionsBaseUi(const QString &title=QString())
Restore the base ui.
~QgsDataSourceManagerDialog() override
void addVectorLayer(const QString &vectorLayerPath, const QString &baseName, const QString &providerKey)
Emitted when a vector layer was selected for addition: for signal forwarding to QgisApp.
void providerDialogsRefreshRequested()
One or more provider connections have changed and the dialogs should be refreshed.
void setPreviousPage()
Reset current page to previously selected page.
void handleDropUriList(const QgsMimeDataUtils::UriList &)
Emitted when drop uri list needs to be handled from the browser.
Map canvas is a class for displaying all GIS data types on a canvas.
void addMeshLayer(const QString &uri, const QString &baseName, const QString &providerKey)
Emitted when a mesh layer was selected for addition: for signal forwarding to QgisApp.
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::Warning, bool notifyUser=true)
Adds a message to the log instance (and creates it if necessary).
void openPage(const QString &pageName)
Open a given page in the dialog.
void updateProjectHome()
Update project home directory.
A base dialog for options and properties dialogs that offers vertical tabs.
void showEvent(QShowEvent *e) override
void addRasterLayer()
Emitted when the user wants to select a raster layer: for signal forwarding to QgisApp.
void vectorLayerAdded(const QString &vectorLayerPath, const QString &baseName, const QString &providerKey)
A vector layer was added: for signal forwarding to QgisApp.
void vectorLayersAdded(const QStringList &layerQStringList, const QString &enc, const QString &dataSourceType)
One or more vector layer were added: for signal forwarding to QgisApp.
void replaceSelectedVectorLayer(const QString &oldId, const QString &uri, const QString &layerName, const QString &provider)
Replace the selected layer by a vector layer defined by uri, layer name, data source uri...
void showStatusMessage(const QString &message)
Emitted when a status message needs to be shown: for signal forwarding to QgisApp.
QgsMessageBar * messageBar() const
Returns the dialog's message bar.
A model for showing available data sources and other items in a structured tree.
void openFile(const QString &fileName, const QString &fileTypeHint=QString())
Emitted when a file needs to be opened.
QgsDataSourceManagerDialog(QgsBrowserModel *browserModel, QWidget *parent=nullptr, QgsMapCanvas *canvas=nullptr, Qt::WindowFlags fl=QgsGuiUtils::ModalDialogFlags)
QgsDataSourceManagerDialog constructor.
void addDatabaseLayers(const QStringList &layerPathList, const QString &providerKey)
Emitted when a DB layer was selected for addition: for signal forwarding to QgisApp.
void addVectorLayers(const QStringList &layerQStringList, const QString &enc, const QString &dataSourceType)
Emitted when a one or more layer were selected for addition: for signal forwarding to QgisApp...
void setCurrentPage(int index)
Sync current page with the leftbar list.