Skip to content

Commit 162339d

Browse files
committed
Different messages for file and table layer deletion
1 parent 2ffa7ba commit 162339d

File tree

3 files changed

+28
-12
lines changed

3 files changed

+28
-12
lines changed

src/providers/ogr/qgsgeopackagedataitems.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ QgsGeoPackageRasterLayerItem::QgsGeoPackageRasterLayerItem( QgsDataItem *parent,
361361
QList<QAction *> QgsGeoPackageVectorLayerItem::actions()
362362
{
363363
QList<QAction *> lst = QgsGeoPackageAbstractLayerItem::actions();
364-
QAction *actionDeleteLayer = new QAction( tr( "Delete %1" ).arg( mName ), this );
364+
QAction *actionDeleteLayer = new QAction( tr( "Delete layer '%1'..." ).arg( mName ), this );
365365
connect( actionDeleteLayer, &QAction::triggered, this, &QgsGeoPackageVectorLayerItem::deleteLayer );
366366
lst.append( actionDeleteLayer );
367367
return lst;
@@ -371,7 +371,7 @@ QList<QAction *> QgsGeoPackageVectorLayerItem::actions()
371371
void QgsGeoPackageVectorLayerItem::deleteLayer()
372372
{
373373
if ( QMessageBox::question( nullptr, QObject::tr( "Delete Layer" ),
374-
QObject::tr( "Are you sure you want to delete %1?" ).arg( mName ),
374+
QObject::tr( "Are you sure you want to delete layer '%1'?" ).arg( mName ),
375375
QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) != QMessageBox::Yes )
376376
return;
377377

src/providers/ogr/qgsogrdataitems.cpp

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ QGISEXTERN bool deleteLayer( const QString &uri, const QString &errCause );
3636

3737

3838
QgsOgrLayerItem::QgsOgrLayerItem( QgsDataItem *parent,
39-
QString name, QString path, QString uri, LayerType layerType )
39+
QString name, QString path, QString uri, LayerType layerType, bool isSubLayer )
4040
: QgsLayerItem( parent, name, path, uri, layerType, QStringLiteral( "ogr" ) )
4141
{
42+
mIsSubLayer = isSubLayer;
4243
mToolTip = uri;
4344
setState( Populated ); // children are not expected
4445

@@ -118,28 +119,41 @@ QString QgsOgrLayerItem::layerName() const
118119
QList<QAction *> QgsOgrLayerItem::actions()
119120
{
120121
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 );
122125
connect( actionDeleteLayer, &QAction::triggered, this, &QgsOgrLayerItem::deleteLayer );
123126
lst.append( actionDeleteLayer );
124127
return lst;
125128
}
126129

127130
void QgsOgrLayerItem::deleteLayer()
128131
{
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,
131145
QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) != QMessageBox::Yes )
132146
return;
133147

134148
QString errCause;
135149
bool res = ::deleteLayer( mUri, errCause );
136150
if ( !res )
137151
{
138-
QMessageBox::warning( nullptr, tr( "Delete Layer" ), errCause );
152+
QMessageBox::warning( nullptr, title, errCause );
139153
}
140154
else
141155
{
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." ) );
143157
if ( mParent )
144158
mParent->refresh();
145159
}
@@ -148,7 +162,7 @@ void QgsOgrLayerItem::deleteLayer()
148162

149163
// -------
150164

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 )
152166
{
153167
OGRLayerH hLayer = OGR_DS_GetLayer( hDataSource, layerId );
154168
OGRFeatureDefnH hDef = OGR_L_GetLayerDefn( hLayer );
@@ -202,7 +216,7 @@ static QgsOgrLayerItem *dataItemForLayer( QgsDataItem *parentItem, QString name,
202216

203217
QgsDebugMsgLevel( "OGR layer uri : " + layerUri, 2 );
204218

205-
return new QgsOgrLayerItem( parentItem, name, path, layerUri, layerType );
219+
return new QgsOgrLayerItem( parentItem, name, path, layerUri, layerType, isSubLayer );
206220
}
207221

208222
// ----
@@ -225,7 +239,7 @@ QVector<QgsDataItem *> QgsOgrDataCollectionItem::createChildren()
225239
children.reserve( numLayers );
226240
for ( int i = 0; i < numLayers; ++i )
227241
{
228-
QgsOgrLayerItem *item = dataItemForLayer( this, QString(), mPath, hDataSource, i );
242+
QgsOgrLayerItem *item = dataItemForLayer( this, QString(), mPath, hDataSource, i, true );
229243
children.append( item );
230244
}
231245

src/providers/ogr/qgsogrdataitems.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class QgsOgrLayerItem : public QgsLayerItem
2424
{
2525
Q_OBJECT
2626
public:
27-
QgsOgrLayerItem( QgsDataItem *parent, QString name, QString path, QString uri, LayerType layerType );
27+
QgsOgrLayerItem( QgsDataItem *parent, QString name, QString path, QString uri, LayerType layerType, bool isSubLayer = false );
2828

2929
bool setCrs( const QgsCoordinateReferenceSystem &crs ) override;
3030

@@ -35,6 +35,8 @@ class QgsOgrLayerItem : public QgsLayerItem
3535
public slots:
3636
void deleteLayer();
3737
#endif
38+
private:
39+
bool mIsSubLayer;
3840
};
3941

4042

0 commit comments

Comments
 (0)