17#include "ui_qgsdatasourcemanagerdialog.h"
33#include <QListWidgetItem>
35#include "moc_qgsdatasourcemanagerdialog.cpp"
40 , mMapCanvas( canvas )
41 , mBrowserModel( browserModel )
44 ui->verticalLayout_2->setSpacing( 6 );
45 ui->verticalLayout_2->setContentsMargins( 0, 0, 0, 0 );
48 mMessageBar->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed );
49 static_cast<QVBoxLayout *
>( layout() )->insertWidget( 0, mMessageBar );
61 mBrowserWidget->setFeatures( QDockWidget::NoDockWidgetFeatures );
62 mBrowserWidget->setTitleBarWidget(
new QWidget( mBrowserWidget ) );
64 QWidget *browserWidgetWrapper =
new QWidget(
this );
65 browserWidgetWrapper->setLayout(
new QVBoxLayout( browserWidgetWrapper ) );
66 browserWidgetWrapper->layout()->addWidget( mBrowserWidget );
67 QDialogButtonBox *browserButtonBox =
new QDialogButtonBox( QDialogButtonBox::StandardButton::Close | QDialogButtonBox::StandardButton::Help, browserWidgetWrapper );
68 browserWidgetWrapper->layout()->addWidget( browserButtonBox );
70 connect( browserButtonBox, &QDialogButtonBox::helpRequested,
this, [] {
71 QgsHelp::openHelp( QStringLiteral(
"managing_data_source/opening_data.html#the-browser-panel" ) );
73 connect( browserButtonBox, &QDialogButtonBox::rejected,
this, &QgsDataSourceManagerDialog::reject );
75 ui->mOptionsStackedWidget->addWidget( browserWidgetWrapper );
76 mPageProviderKeys.append( QStringLiteral(
"browser" ) );
77 mPageProviderNames.append( QStringLiteral(
"browser" ) );
95 addProviderDialog( dlg, provider->providerKey(), provider->name(), provider->text(), provider->icon(), provider->toolTip() );
107 addProviderDialog( dlg, provider->providerKey(), provider->name(), provider->text(), provider->icon(), provider->toolTip() );
112 removeProviderDialog( name );
126 const int pageIdx = mPageProviderKeys.indexOf( pageName );
129 QTimer::singleShot( 0,
this, [
this, pageIdx] {
setCurrentPage( pageIdx ); } );
141 setWindowState( windowState() & ~Qt::WindowMinimized );
147 mPreviousRow = ui->mOptionsStackedWidget->currentIndex();
148 ui->mOptionsStackedWidget->setCurrentIndex( index );
149 setWindowTitle( tr(
"Data Source Manager | %1" ).arg( ui->mOptionsListWidget->currentItem()->text() ) );
155 const int prevPage = mPreviousRow != -1 ? mPreviousRow : 0;
161 mBrowserWidget->browserWidget()->refresh();
167 const int pageCount = ui->mOptionsStackedWidget->count();
168 for (
int i = 0; i < pageCount; ++i )
170 QWidget *widget = ui->mOptionsStackedWidget->widget( i );
172 if ( dataSourceWidget )
173 dataSourceWidget->
reset();
179 const int pageIdx = mPageProviderNames.indexOf( pageName );
182 QTimer::singleShot( 0,
this, [
this, pageIdx, uri] {
184 if (
QgsAbstractDataSourceWidget *dataSourceWidget = qobject_cast<QgsAbstractDataSourceWidget *>( ui->mOptionsStackedWidget->currentWidget() ) )
186 dataSourceWidget->configureFromUri( uri );
202void QgsDataSourceManagerDialog::addProviderDialog(
QgsAbstractDataSourceWidget *dlg,
const QString &providerKey,
const QString &providerName,
const QString &text,
const QIcon &icon,
const QString &toolTip )
204 mPageProviderKeys.append( providerKey );
205 mPageProviderNames.append( providerName );
206 ui->mOptionsStackedWidget->addWidget( dlg );
207 QListWidgetItem *layerItem =
new QListWidgetItem( text, ui->mOptionsListWidget );
208 layerItem->setData( Qt::UserRole, providerName );
209 layerItem->setToolTip( toolTip.isEmpty() ? tr(
"Add %1 layer" ).arg( text ) : toolTip );
210 layerItem->setIcon( icon );
218 connect( dlg, &QgsAbstractDataSourceWidget::rejected,
this, &QgsDataSourceManagerDialog::reject );
219 connect( dlg, &QgsAbstractDataSourceWidget::accepted,
this, &QgsDataSourceManagerDialog::accept );
220 makeConnections( dlg, providerKey );
223void QgsDataSourceManagerDialog::removeProviderDialog(
const QString &providerName )
225 const int pageIdx = mPageProviderNames.indexOf( providerName );
228 ui->mOptionsStackedWidget->removeWidget( ui->mOptionsStackedWidget->widget( pageIdx ) );
229 mPageProviderKeys.removeAt( pageIdx );
230 mPageProviderNames.removeAt( pageIdx );
231 ui->mOptionsListWidget->removeItemWidget( ui->mOptionsListWidget->item( pageIdx ) );
244 Q_UNUSED( providerKey )
261 emit
addLayer( type, url, baseName, providerKey );
269 const QString key = specifiedProvider.isEmpty() ? providerKey : specifiedProvider;
310 mMessageBar->pushMessage( title, message, level );
316 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