17#include "ui_qgsdatasourcemanagerdialog.h"
33#include <QListWidgetItem>
35#include "moc_qgsdatasourcemanagerdialog.cpp"
41 , mMapCanvas( canvas )
42 , mBrowserModel( browserModel )
45 ui->verticalLayout_2->setSpacing( 6 );
46 ui->verticalLayout_2->setContentsMargins( 0, 0, 0, 0 );
49 mMessageBar->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed );
50 static_cast<QVBoxLayout *
>( layout() )->insertWidget( 0, mMessageBar );
62 mBrowserWidget->setFeatures( QDockWidget::NoDockWidgetFeatures );
63 mBrowserWidget->setTitleBarWidget(
new QWidget( mBrowserWidget ) );
65 QWidget *browserWidgetWrapper =
new QWidget(
this );
66 browserWidgetWrapper->setLayout(
new QVBoxLayout( browserWidgetWrapper ) );
67 browserWidgetWrapper->layout()->addWidget( mBrowserWidget );
68 QDialogButtonBox *browserButtonBox =
new QDialogButtonBox( QDialogButtonBox::StandardButton::Close | QDialogButtonBox::StandardButton::Help, browserWidgetWrapper );
69 browserWidgetWrapper->layout()->addWidget( browserButtonBox );
71 connect( browserButtonBox, &QDialogButtonBox::helpRequested,
this, [] {
72 QgsHelp::openHelp( QStringLiteral(
"managing_data_source/opening_data.html#the-browser-panel" ) );
74 connect( browserButtonBox, &QDialogButtonBox::rejected,
this, &QgsDataSourceManagerDialog::reject );
76 ui->mOptionsStackedWidget->addWidget( browserWidgetWrapper );
77 mPageProviderKeys.append( QStringLiteral(
"browser" ) );
78 mPageProviderNames.append( QStringLiteral(
"browser" ) );
96 addProviderDialog( dlg, provider->providerKey(), provider->name(), provider->text(), provider->icon(), provider->toolTip() );
108 addProviderDialog( dlg, provider->providerKey(), provider->name(), provider->text(), provider->icon(), provider->toolTip() );
113 removeProviderDialog( name );
127 const int pageIdx = mPageProviderKeys.indexOf( pageName );
130 QTimer::singleShot( 0,
this, [
this, pageIdx] {
setCurrentPage( pageIdx ); } );
142 setWindowState( windowState() & ~Qt::WindowMinimized );
148 mPreviousRow = ui->mOptionsStackedWidget->currentIndex();
149 ui->mOptionsStackedWidget->setCurrentIndex( index );
150 setWindowTitle( tr(
"Data Source Manager | %1" ).arg( ui->mOptionsListWidget->currentItem()->text() ) );
156 const int prevPage = mPreviousRow != -1 ? mPreviousRow : 0;
162 mBrowserWidget->browserWidget()->refresh();
168 const int pageCount = ui->mOptionsStackedWidget->count();
169 for (
int i = 0; i < pageCount; ++i )
171 QWidget *widget = ui->mOptionsStackedWidget->widget( i );
173 if ( dataSourceWidget )
174 dataSourceWidget->
reset();
180 const int pageIdx = mPageProviderNames.indexOf( pageName );
183 QTimer::singleShot( 0,
this, [
this, pageIdx, uri] {
185 if (
QgsAbstractDataSourceWidget *dataSourceWidget = qobject_cast<QgsAbstractDataSourceWidget *>( ui->mOptionsStackedWidget->currentWidget() ) )
187 dataSourceWidget->configureFromUri( uri );
203void QgsDataSourceManagerDialog::addProviderDialog(
QgsAbstractDataSourceWidget *dlg,
const QString &providerKey,
const QString &providerName,
const QString &text,
const QIcon &icon,
const QString &toolTip )
205 mPageProviderKeys.append( providerKey );
206 mPageProviderNames.append( providerName );
207 ui->mOptionsStackedWidget->addWidget( dlg );
208 QListWidgetItem *layerItem =
new QListWidgetItem( text, ui->mOptionsListWidget );
209 layerItem->setData( Qt::UserRole, providerName );
210 layerItem->setToolTip( toolTip.isEmpty() ? tr(
"Add %1 layer" ).arg( text ) : toolTip );
211 layerItem->setIcon( icon );
219 connect( dlg, &QgsAbstractDataSourceWidget::rejected,
this, &QgsDataSourceManagerDialog::reject );
220 connect( dlg, &QgsAbstractDataSourceWidget::accepted,
this, &QgsDataSourceManagerDialog::accept );
221 makeConnections( dlg, providerKey );
224void QgsDataSourceManagerDialog::removeProviderDialog(
const QString &providerName )
226 const int pageIdx = mPageProviderNames.indexOf( providerName );
229 ui->mOptionsStackedWidget->removeWidget( ui->mOptionsStackedWidget->widget( pageIdx ) );
230 mPageProviderKeys.removeAt( pageIdx );
231 mPageProviderNames.removeAt( pageIdx );
232 ui->mOptionsListWidget->removeItemWidget( ui->mOptionsListWidget->item( pageIdx ) );
245 Q_UNUSED( providerKey )
262 emit
addLayer( type, url, baseName, providerKey );
270 const QString key = specifiedProvider.isEmpty() ? providerKey : specifiedProvider;
311 mMessageBar->pushMessage( title, message, level );
317 ui->mOptionsStackedWidget->currentWidget()->show();
MessageLevel
Level for messages This will be used both for message log and message bar in application.
@ Critical
Critical/error message.
LayerType
Types of layers that can be added to a map.
@ Group
Composite group layer. Added in QGIS 3.24.
@ Plugin
Plugin based layer.
@ TiledScene
Tiled scene layer. Added in QGIS 3.34.
@ Annotation
Contains freeform, georeferenced annotations. Added in QGIS 3.16.
@ VectorTile
Vector tile layer. Added in QGIS 3.14.
@ Mesh
Mesh layer. Added in QGIS 3.2.
@ PointCloud
Point cloud layer. Added in QGIS 3.18.
A model for showing available data sources and other items in a structured tree.
void reset()
Resets the interface of the datasource manager after reopening the dialog.
void refresh()
Refresh the browser view.
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 openFile(const QString &fileName, const QString &fileTypeHint=QString())
Emitted when a file needs to be opened.
QgsMessageBar * messageBar() const
Returns the dialog's message bar.
void rasterLayersAdded(const QStringList &layersList)
One or more raster layer were added: for signal forwarding to QgisApp.
void setPreviousPage()
Reset current page to previously selected page.
QgsDataSourceManagerDialog(QgsBrowserGuiModel *browserModel, QWidget *parent=nullptr, QgsMapCanvas *canvas=nullptr, Qt::WindowFlags fl=Qt::Window)
QgsDataSourceManagerDialog constructor.
void showStatusMessage(const QString &message)
Emitted when a status message needs to be shown: for signal forwarding to QgisApp.
void showEvent(QShowEvent *event) override
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 configureFromUri(const QString &pageName, const QString &uri)
Shows the page pageName and configure the source select widget from the layer uri.
void openPage(const QString &pageName)
Open a given page in the dialog.
void activate()
Raise, unminimize and activate this window.
void connectionsChanged()
Emitted when a connection has changed inside the provider dialogs This signal is normally forwarded t...
void vectorLayersAdded(const QStringList &layerQStringList, const QString &enc, const QString &dataSourceType)
One or more vector layer were added: for signal forwarding to QgisApp.
void addDatabaseLayers(const QStringList &layerPathList, const QString &providerKey)
Emitted when a DB layer was selected for addition: for signal forwarding to QgisApp.
void handleDropUriList(const QgsMimeDataUtils::UriList &)
Emitted when drop uri list needs to be handled from the browser.
void providerDialogsRefreshRequested()
One or more provider connections have changed and the dialogs should be refreshed.
void addLayer(Qgis::LayerType type, const QString &url, const QString &baseName, const QString &providerKey)
Emitted when a layer has been selected for addition.
void updateProjectHome()
Update project home directory.
void setCurrentPage(int index)
Sync current page with the leftbar list.
void addRasterLayers(const QStringList &layersList)
Emitted when a one or more layer were selected for addition: for signal forwarding to QgisApp.
~QgsDataSourceManagerDialog() override
static QgsSourceSelectProviderRegistry * sourceSelectProviderRegistry()
Returns the global source select provider registry, used for managing all known source select widget ...
static void openHelp(const QString &key)
Opens help topic for the given help key using default system web browser.
Map canvas is a class for displaying all GIS data types on a canvas.
A bar for displaying non-blocking messages to the user.
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::MessageLevel::Warning, bool notifyUser=true, const char *file=__builtin_FILE(), const char *function=__builtin_FUNCTION(), int line=__builtin_LINE())
Adds a message to the log instance (and creates it if necessary).
void resizeAlltabs(int index)
Resizes all tabs when the dialog is resized.
QgsOptionsDialogBase(const QString &settingsKey, QWidget *parent=nullptr, Qt::WindowFlags fl=Qt::WindowFlags(), QgsSettings *settings=nullptr)
Constructor.
void restoreOptionsBaseUi(const QString &title=QString())
Restore the base ui.
void initOptionsBase(bool restoreUi=true, const QString &title=QString())
Set up the base ui connections for vertical tabs.
void showEvent(QShowEvent *e) override
void providerRemoved(const QString &name)
Emitted whenever a provider is removed from the registry.
void providerAdded(const QString &name)
Emitted whenever a provider is added to the registry.
QList< QgsSourceSelectProvider * > providers()
Gets list of available providers.
An interface for pages shown in a QgsDataSourceManagerDialog.
#define Q_NOWARN_DEPRECATED_POP
#define Q_NOWARN_DEPRECATED_PUSH