Skip to content

Commit

Permalink
[browser] Add a menu entry to the context menu for directory items
Browse files Browse the repository at this point in the history
to allow users to explicit control whether a directory is
automatically monitored for changes.
  • Loading branch information
nyalldawson committed May 31, 2021
1 parent af1900f commit 75838d3
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
25 changes: 23 additions & 2 deletions src/app/browser/qgsinbuiltdataitemproviders.cpp
Expand Up @@ -263,16 +263,29 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
menu->addAction( actionClearIconColor );
}

QAction *fastScanAction = new QAction( tr( "Fast Scan this Directory" ), menu );
QMenu *scanningMenu = new QMenu( tr( "Scanning" ), menu );

QAction *monitorAction = new QAction( tr( "Monitor for Changes" ), scanningMenu );
connect( monitorAction, &QAction::triggered, this, [ = ]
{
toggleMonitor( directoryItem );
} );
monitorAction->setCheckable( true );
monitorAction->setChecked( directoryItem->isMonitored() );
scanningMenu->addAction( monitorAction );

QAction *fastScanAction = new QAction( tr( "Fast Scan this Directory" ), scanningMenu );
connect( fastScanAction, &QAction::triggered, this, [ = ]
{
toggleFastScan( directoryItem );
} );
menu->addAction( fastScanAction );
fastScanAction->setCheckable( true );
fastScanAction->setChecked( settings.value( QStringLiteral( "qgis/scanItemsFastScanUris" ),
QStringList() ).toStringList().contains( item->path() ) );

scanningMenu->addAction( fastScanAction );
menu->addMenu( scanningMenu );

menu->addSeparator();

QAction *openFolder = new QAction( QgsApplication::getThemeIcon( QStringLiteral( "mIconFolder.svg" ) ), tr( "Open Directory…" ), menu );
Expand Down Expand Up @@ -382,6 +395,14 @@ void QgsAppDirectoryItemGuiProvider::toggleFastScan( QgsDirectoryItem *item )
settings.setValue( QStringLiteral( "qgis/scanItemsFastScanUris" ), fastScanDirs );
}

void QgsAppDirectoryItemGuiProvider::toggleMonitor( QgsDirectoryItem *item )
{
if ( item->isMonitored() )
item->setMonitoring( Qgis::BrowserDirectoryMonitoring::NeverMonitor );
else
item->setMonitoring( Qgis::BrowserDirectoryMonitoring::AlwaysMonitor );
}

void QgsAppDirectoryItemGuiProvider::showProperties( QgsDirectoryItem *item, QgsDataItemGuiContext context )
{
if ( ! item )
Expand Down
1 change: 1 addition & 0 deletions src/app/browser/qgsinbuiltdataitemproviders.h
Expand Up @@ -50,6 +50,7 @@ class QgsAppDirectoryItemGuiProvider : public QObject, public QgsDataItemGuiProv
void clearDirectoryColor( QgsDirectoryItem *item );
void hideDirectory( QgsDirectoryItem *item );
void toggleFastScan( QgsDirectoryItem *item );
void toggleMonitor( QgsDirectoryItem *item );
void showProperties( QgsDirectoryItem *item, QgsDataItemGuiContext context );
};

Expand Down

0 comments on commit 75838d3

Please sign in to comment.