30
30
QgsDataSourceManagerDialog::QgsDataSourceManagerDialog ( QgsMapCanvas *mapCanvas, QWidget *parent, Qt::WindowFlags fl ) :
31
31
QgsOptionsDialogBase( QStringLiteral( " Data Source Manager" ), parent, fl ),
32
32
ui( new Ui::QgsDataSourceManagerDialog ),
33
- mMapCanvas( mapCanvas )
33
+ mMapCanvas( mapCanvas ),
34
+ mPreviousCurrentRow( -1 )
34
35
{
35
36
36
37
ui->setupUi ( this );
@@ -40,7 +41,7 @@ QgsDataSourceManagerDialog::QgsDataSourceManagerDialog( QgsMapCanvas *mapCanvas,
40
41
initOptionsBase ( true );
41
42
42
43
// Bind list index to the stacked dialogs
43
- connect ( ui->mOptionsListWidget , SIGNAL ( currentRowChanged ( int ) ) , this , SLOT ( setCurrentPage ( int ) ) );
44
+ connect ( ui->mOptionsListWidget , &QListWidget:: currentRowChanged, this , &QgsDataSourceManagerDialog:: setCurrentPage );
44
45
45
46
// BROWSER Add the browser widget to the first stacked widget page
46
47
mBrowserWidget = new QgsBrowserDockWidget ( QStringLiteral ( " Browser" ), this );
@@ -55,6 +56,26 @@ QgsDataSourceManagerDialog::QgsDataSourceManagerDialog( QgsMapCanvas *mapCanvas,
55
56
ogrItem->setToolTip ( tr ( " Add Vector layer" ) );
56
57
connect ( ovl, &QgsOpenVectorLayerDialog::addVectorLayers, this , &QgsDataSourceManagerDialog::vectorLayersAdded );
57
58
59
+ // RASTER (forward to app)
60
+ ui->mOptionsStackedWidget ->addWidget ( new QWidget () );
61
+ QListWidgetItem *rasterItem = new QListWidgetItem ( tr ( " Raster" ), ui->mOptionsListWidget );
62
+ rasterItem->setIcon ( QgsApplication::getThemeIcon ( QStringLiteral ( " /mActionAddRasterLayer.svg" ) ) );
63
+ rasterItem->setToolTip ( tr ( " Open a GDAL Supported Raster Data Source" ) );
64
+ connect ( ui->mOptionsListWidget , &QListWidget::currentRowChanged, this , [ = ]( int idx )
65
+ {
66
+ Q_UNUSED ( idx );
67
+ if ( rasterItem->isSelected ( ) )
68
+ {
69
+ emit addRasterLayer ();
70
+ int prevPage = mPreviousCurrentRow != -1 ? mPreviousCurrentRow : 0 ;
71
+ ui->mOptionsListWidget ->setCurrentRow ( prevPage );
72
+ ui->mOptionsListWidget ->item ( prevPage )->setSelected ( true );
73
+ ui->mOptionsListWidget ->setFocus ();
74
+ setCurrentPage ( prevPage );
75
+ }
76
+ } );
77
+
78
+
58
79
// Add data provider dialogs
59
80
QDialog *dlg = nullptr ;
60
81
@@ -113,6 +134,8 @@ QgsDataSourceManagerDialog::QgsDataSourceManagerDialog( QgsMapCanvas *mapCanvas,
113
134
connect ( dlg, SIGNAL ( addVectorLayer ( QString, QString, QString ) ), this , SLOT ( vectorLayerAdded ( QString, QString, QString ) ) );
114
135
connect ( dlg, SIGNAL ( replaceVectorLayer ( QString, QString, QString, QString ) ), this , SIGNAL ( replaceSelectedVectorLayer ( QString, QString, QString, QString ) ) );
115
136
}
137
+
138
+
116
139
}
117
140
118
141
QgsDataSourceManagerDialog::~QgsDataSourceManagerDialog ()
@@ -122,6 +145,7 @@ QgsDataSourceManagerDialog::~QgsDataSourceManagerDialog()
122
145
123
146
void QgsDataSourceManagerDialog::setCurrentPage ( int index )
124
147
{
148
+ mPreviousCurrentRow = ui->mOptionsStackedWidget ->currentIndex ( );
125
149
ui->mOptionsStackedWidget ->setCurrentIndex ( index );
126
150
setWindowTitle ( tr ( " Data Source Manager | %1" ).arg ( ui->mOptionsListWidget ->currentItem ()->text ( ) ) );
127
151
}
@@ -142,7 +166,7 @@ void QgsDataSourceManagerDialog::vectorLayersAdded( const QStringList &layerQStr
142
166
}
143
167
144
168
145
- QDialog *QgsDataSourceManagerDialog::providerDialog ( const QString providerKey, const QString providerName, const QString icon )
169
+ QDialog *QgsDataSourceManagerDialog::providerDialog ( const QString providerKey, const QString providerName, const QString icon, QString title )
146
170
{
147
171
QDialog *dlg = dynamic_cast <QDialog *>( QgsProviderRegistry::instance ()->createSelectionWidget ( providerKey, this , Qt::Widget, QgsProviderRegistry::WidgetMode::Embedded ) );
148
172
if ( !dlg )
@@ -154,15 +178,15 @@ QDialog *QgsDataSourceManagerDialog::providerDialog( const QString providerKey,
154
178
{
155
179
ui->mOptionsStackedWidget ->addWidget ( dlg );
156
180
QListWidgetItem *layerItem = new QListWidgetItem ( providerName, ui->mOptionsListWidget );
157
- layerItem->setToolTip ( tr ( " Add %1 layer" ).arg ( providerName ) );
181
+ layerItem->setToolTip ( title. isEmpty () ? tr ( " Add %1 layer" ).arg ( providerName ) : title );
158
182
layerItem->setIcon ( QgsApplication::getThemeIcon ( icon ) );
159
183
return dlg;
160
184
}
161
185
}
162
186
163
- void QgsDataSourceManagerDialog::addDbProviderDialog ( const QString providerKey, const QString providerName, const QString icon )
187
+ void QgsDataSourceManagerDialog::addDbProviderDialog ( const QString providerKey, const QString providerName, const QString icon, QString title )
164
188
{
165
- QDialog *dlg = providerDialog ( providerKey, providerName, icon );
189
+ QDialog *dlg = providerDialog ( providerKey, providerName, icon, title );
166
190
if ( dlg )
167
191
{
168
192
connect ( dlg, SIGNAL ( addDatabaseLayers ( QStringList const &, QString const & ) ),
@@ -174,9 +198,9 @@ void QgsDataSourceManagerDialog::addDbProviderDialog( const QString providerKey,
174
198
}
175
199
}
176
200
177
- void QgsDataSourceManagerDialog::addRasterProviderDialog ( const QString providerKey, const QString providerName, const QString icon )
201
+ void QgsDataSourceManagerDialog::addRasterProviderDialog ( const QString providerKey, const QString providerName, const QString icon, QString title )
178
202
{
179
- QDialog *dlg = providerDialog ( providerKey, providerName, icon );
203
+ QDialog *dlg = providerDialog ( providerKey, providerName, icon, title );
180
204
if ( dlg )
181
205
{
182
206
// Forward
0 commit comments