Skip to content

Commit

Permalink
[browser] Only show Rename layer action for gpkg when there's a single
Browse files Browse the repository at this point in the history
layer selected

This operation only works on single layers, so it's misleading to
show when the user has many items selected (also matches behavior
to file based items)

Also clear clazy warnings from file
  • Loading branch information
nyalldawson committed Aug 12, 2021
1 parent 4fe8e23 commit 0cc2e1a
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 14 deletions.
17 changes: 9 additions & 8 deletions src/gui/providers/ogr/qgsgeopackageitemguiprovider.cpp
Expand Up @@ -42,13 +42,14 @@
#include "qgsogrproviderutils.h"

void QgsGeoPackageItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *menu,
const QList<QgsDataItem *> &,
const QList<QgsDataItem *> &selectedItems,
QgsDataItemGuiContext context )
{
if ( QgsGeoPackageVectorLayerItem *layerItem = qobject_cast< QgsGeoPackageVectorLayerItem * >( item ) )
{
// Check capabilities
if ( layerItem->capabilities2() & Qgis::BrowserItemCapability::Rename )
// (We only show the rename action when the user has a single layer selected -- it doesn't work on multi-layers at once)
if ( selectedItems.size() == 1 && layerItem->capabilities2() & Qgis::BrowserItemCapability::Rename )
{
QMenu *manageLayerMenu = new QMenu( tr( "Manage" ), menu );

Expand Down Expand Up @@ -127,7 +128,7 @@ void QgsGeoPackageItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu
}
}

void QgsGeoPackageItemGuiProvider::deleteGpkg( const QString &itemPath, const QString &name, QPointer< QgsDataItem > parent, const QgsDataItemGuiContext &context )
void QgsGeoPackageItemGuiProvider::deleteGpkg( const QString &itemPath, const QString &name, QPointer< QgsDataItem > parent, QgsDataItemGuiContext context )
{
QString path = itemPath;
path = path.remove( QStringLiteral( "gpkg:/" ) );
Expand Down Expand Up @@ -273,7 +274,7 @@ bool QgsGeoPackageItemGuiProvider::rename( QgsDataItem *item, const QString &new
}

void QgsGeoPackageItemGuiProvider::renameVectorLayer( const QString &uri, const QString &key, const QStringList &tableNames,
QPointer< QgsDataItem > item, const QgsDataItemGuiContext &context )
const QPointer< QgsDataItem > &item, QgsDataItemGuiContext context )
{
// Get layer name from layer URI
QVariantMap pieces( QgsProviderRegistry::instance()->decodeUri( key, uri ) );
Expand Down Expand Up @@ -357,7 +358,7 @@ bool QgsGeoPackageItemGuiProvider::deleteLayer( QgsLayerItem *layerItem, QgsData
}
}

void QgsGeoPackageItemGuiProvider::vacuumGeoPackageDbAction( const QString &path, const QString &name, const QgsDataItemGuiContext &context )
void QgsGeoPackageItemGuiProvider::vacuumGeoPackageDbAction( const QString &path, const QString &name, QgsDataItemGuiContext context )
{
Q_UNUSED( path )
QString errCause;
Expand All @@ -372,14 +373,14 @@ void QgsGeoPackageItemGuiProvider::vacuumGeoPackageDbAction( const QString &path
}
}

void QgsGeoPackageItemGuiProvider::vacuum( const QString &itemPath, const QString &name, const QgsDataItemGuiContext &context )
void QgsGeoPackageItemGuiProvider::vacuum( const QString &itemPath, const QString &name, QgsDataItemGuiContext context )
{
QString path = itemPath;
path = path.remove( QStringLiteral( "gpkg:/" ) );
vacuumGeoPackageDbAction( path, name, context );
}

void QgsGeoPackageItemGuiProvider::createDatabase( QPointer< QgsGeoPackageRootItem > item )
void QgsGeoPackageItemGuiProvider::createDatabase( const QPointer< QgsGeoPackageRootItem > &item )
{
if ( item )
{
Expand Down Expand Up @@ -414,7 +415,7 @@ bool QgsGeoPackageItemGuiProvider::handleDrop( QgsDataItem *item, QgsDataItemGui
return false;
}

bool QgsGeoPackageItemGuiProvider::handleDropGeopackage( QgsGeoPackageCollectionItem *item, const QMimeData *data, const QgsDataItemGuiContext &context )
bool QgsGeoPackageItemGuiProvider::handleDropGeopackage( QgsGeoPackageCollectionItem *item, const QMimeData *data, QgsDataItemGuiContext context )
{
if ( !QgsMimeDataUtils::isUriList( data ) )
return false;
Expand Down
12 changes: 6 additions & 6 deletions src/gui/providers/ogr/qgsgeopackageitemguiprovider.h
Expand Up @@ -50,16 +50,16 @@ class QgsGeoPackageItemGuiProvider : public QObject, public QgsDataItemGuiProvid
const QMimeData *data,
Qt::DropAction action ) override;
private:
bool handleDropGeopackage( QgsGeoPackageCollectionItem *item, const QMimeData *data, const QgsDataItemGuiContext &context );
bool handleDropGeopackage( QgsGeoPackageCollectionItem *item, const QMimeData *data, QgsDataItemGuiContext context );
//! Compacts (VACUUM) a geopackage database
void vacuumGeoPackageDbAction( const QString &path, const QString &name, const QgsDataItemGuiContext &context );
void createDatabase( QPointer< QgsGeoPackageRootItem > item );
void vacuumGeoPackageDbAction( const QString &path, const QString &name, QgsDataItemGuiContext context );
void createDatabase( const QPointer< QgsGeoPackageRootItem > &item );

protected slots:
void vacuum( const QString &path, const QString &name, const QgsDataItemGuiContext &context );
void vacuum( const QString &path, const QString &name, QgsDataItemGuiContext context );
void renameVectorLayer( const QString &uri, const QString &key, const QStringList &tableNames,
QPointer< QgsDataItem > item, const QgsDataItemGuiContext &context );
void deleteGpkg( const QString &itemPath, const QString &name, QPointer<QgsDataItem> parent, const QgsDataItemGuiContext &context );
const QPointer< QgsDataItem > &item, QgsDataItemGuiContext context );
void deleteGpkg( const QString &itemPath, const QString &name, QPointer<QgsDataItem> parent, QgsDataItemGuiContext context );
};

///@endcond
Expand Down

0 comments on commit 0cc2e1a

Please sign in to comment.