@@ -36,9 +36,10 @@ QGISEXTERN bool deleteLayer( const QString &uri, const QString &errCause );
36
36
37
37
38
38
QgsOgrLayerItem::QgsOgrLayerItem ( QgsDataItem *parent,
39
- QString name, QString path, QString uri, LayerType layerType )
39
+ QString name, QString path, QString uri, LayerType layerType, bool isSubLayer )
40
40
: QgsLayerItem( parent, name, path, uri, layerType, QStringLiteral( " ogr" ) )
41
41
{
42
+ mIsSubLayer = isSubLayer;
42
43
mToolTip = uri;
43
44
setState ( Populated ); // children are not expected
44
45
@@ -118,28 +119,41 @@ QString QgsOgrLayerItem::layerName() const
118
119
QList<QAction *> QgsOgrLayerItem::actions ()
119
120
{
120
121
QList<QAction *> lst;
121
- QAction *actionDeleteLayer = new QAction ( tr ( " Delete %1" ).arg ( mName ), this );
122
+ // Messages are different for files and tables
123
+ QString message = mIsSubLayer ? QObject::tr ( " Delete layer '%1'..." ).arg ( mName ) : QObject::tr ( " Delete file '%1'..." ).arg ( mUri );
124
+ QAction *actionDeleteLayer = new QAction ( message, this );
122
125
connect ( actionDeleteLayer, &QAction::triggered, this , &QgsOgrLayerItem::deleteLayer );
123
126
lst.append ( actionDeleteLayer );
124
127
return lst;
125
128
}
126
129
127
130
void QgsOgrLayerItem::deleteLayer ()
128
131
{
129
- if ( QMessageBox::question ( nullptr , QObject::tr ( " Delete Layer" ),
130
- QObject::tr ( " Are you sure you want to delete %1?" ).arg ( mName ),
132
+ // Messages are different for files and tables
133
+ QString title = mIsSubLayer ? QObject::tr ( " Delete Layer" ) : QObject::tr ( " Delete File" );
134
+ QString confirmMessage;
135
+ if ( mIsSubLayer )
136
+ {
137
+ confirmMessage = QObject::tr ( " Are you sure you want to delete layer '%1'?" ).arg ( mName );
138
+ }
139
+ else
140
+ {
141
+ confirmMessage = QObject::tr ( " Are you sure you want to delete file '%1'?" ).arg ( mUri );
142
+ }
143
+ if ( QMessageBox::question ( nullptr , title,
144
+ confirmMessage,
131
145
QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) != QMessageBox::Yes )
132
146
return ;
133
147
134
148
QString errCause;
135
149
bool res = ::deleteLayer ( mUri , errCause );
136
150
if ( !res )
137
151
{
138
- QMessageBox::warning ( nullptr , tr ( " Delete Layer " ) , errCause );
152
+ QMessageBox::warning ( nullptr , title , errCause );
139
153
}
140
154
else
141
155
{
142
- QMessageBox::information ( nullptr , tr ( " Delete Layer" ), tr ( " Layer deleted successfully." ) );
156
+ QMessageBox::information ( nullptr , title, mIsSubLayer ? tr ( " Layer deleted successfully. " ) : tr ( " File deleted successfully." ) );
143
157
if ( mParent )
144
158
mParent ->refresh ();
145
159
}
@@ -148,7 +162,7 @@ void QgsOgrLayerItem::deleteLayer()
148
162
149
163
// -------
150
164
151
- static QgsOgrLayerItem *dataItemForLayer ( QgsDataItem *parentItem, QString name, QString path, OGRDataSourceH hDataSource, int layerId )
165
+ static QgsOgrLayerItem *dataItemForLayer ( QgsDataItem *parentItem, QString name, QString path, OGRDataSourceH hDataSource, int layerId, bool isSubLayer = false )
152
166
{
153
167
OGRLayerH hLayer = OGR_DS_GetLayer ( hDataSource, layerId );
154
168
OGRFeatureDefnH hDef = OGR_L_GetLayerDefn ( hLayer );
@@ -202,7 +216,7 @@ static QgsOgrLayerItem *dataItemForLayer( QgsDataItem *parentItem, QString name,
202
216
203
217
QgsDebugMsgLevel ( " OGR layer uri : " + layerUri, 2 );
204
218
205
- return new QgsOgrLayerItem ( parentItem, name, path, layerUri, layerType );
219
+ return new QgsOgrLayerItem ( parentItem, name, path, layerUri, layerType, isSubLayer );
206
220
}
207
221
208
222
// ----
@@ -225,7 +239,7 @@ QVector<QgsDataItem *> QgsOgrDataCollectionItem::createChildren()
225
239
children.reserve ( numLayers );
226
240
for ( int i = 0 ; i < numLayers; ++i )
227
241
{
228
- QgsOgrLayerItem *item = dataItemForLayer ( this , QString (), mPath , hDataSource, i );
242
+ QgsOgrLayerItem *item = dataItemForLayer ( this , QString (), mPath , hDataSource, i, true );
229
243
children.append ( item );
230
244
}
231
245
0 commit comments