From d7029bb5a5325fc1a44de48272f4490fe94235cd Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Mon, 18 Sep 2017 14:08:48 +0200 Subject: [PATCH] Geopackage: switch the action from add/remove connection depending on the connection being already stored or not, this allows the user to remove and existing connection. --- src/providers/ogr/qgsgeopackagedataitems.cpp | 19 ++++++++++++++----- src/providers/ogr/qgsgeopackagedataitems.h | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/providers/ogr/qgsgeopackagedataitems.cpp b/src/providers/ogr/qgsgeopackagedataitems.cpp index dd9db7d4725..6fab61e935c 100644 --- a/src/providers/ogr/qgsgeopackagedataitems.cpp +++ b/src/providers/ogr/qgsgeopackagedataitems.cpp @@ -166,10 +166,19 @@ QList QgsGeoPackageCollectionItem::actions() { QList lst; - // Add to stored connections - QAction *actionAddConnection = new QAction( tr( "Add connection" ), this ); - connect( actionAddConnection, &QAction::triggered, this, &QgsGeoPackageCollectionItem::addConnection ); - lst.append( actionAddConnection ); + if ( QgsOgrDbConnection::connectionList( QStringLiteral( "GPKG" ) ).contains( mName ) ) + { + QAction *actionDeleteConnection = new QAction( tr( "Remove connection" ), this ); + connect( actionDeleteConnection, &QAction::triggered, this, &QgsGeoPackageConnectionItem::deleteConnection ); + lst.append( actionDeleteConnection ); + } + else + { + // Add to stored connections + QAction *actionAddConnection = new QAction( tr( "Add connection" ), this ); + connect( actionAddConnection, &QAction::triggered, this, &QgsGeoPackageCollectionItem::addConnection ); + lst.append( actionAddConnection ); + } // Add table to existing DB QAction *actionAddTable = new QAction( tr( "Create a new layer or table..." ), this ); @@ -481,7 +490,7 @@ QList QgsGeoPackageConnectionItem::actions() return lst; } -void QgsGeoPackageConnectionItem::deleteConnection() +void QgsGeoPackageCollectionItem::deleteConnection() { QgsOgrDbConnection::deleteConnection( name(), QStringLiteral( "GPKG" ) ); mParent->refreshConnections(); diff --git a/src/providers/ogr/qgsgeopackagedataitems.h b/src/providers/ogr/qgsgeopackagedataitems.h index 3e4b93ac427..e4b49233ae7 100644 --- a/src/providers/ogr/qgsgeopackagedataitems.h +++ b/src/providers/ogr/qgsgeopackagedataitems.h @@ -93,6 +93,7 @@ class QgsGeoPackageCollectionItem : public QgsDataCollectionItem #ifdef HAVE_GUI void addTable(); void addConnection(); + void deleteConnection(); #endif protected: @@ -119,7 +120,6 @@ class QgsGeoPackageConnectionItem : public QgsGeoPackageCollectionItem public slots: #ifdef HAVE_GUI void editConnection(); - void deleteConnection(); #endif };