Skip to content

Commit 75838d3

Browse files
committedMay 31, 2021
[browser] Add a menu entry to the context menu for directory items
to allow users to explicit control whether a directory is automatically monitored for changes.
1 parent af1900f commit 75838d3

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed
 

‎src/app/browser/qgsinbuiltdataitemproviders.cpp

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,16 +263,29 @@ void QgsAppDirectoryItemGuiProvider::populateContextMenu( QgsDataItem *item, QMe
263263
menu->addAction( actionClearIconColor );
264264
}
265265

266-
QAction *fastScanAction = new QAction( tr( "Fast Scan this Directory" ), menu );
266+
QMenu *scanningMenu = new QMenu( tr( "Scanning" ), menu );
267+
268+
QAction *monitorAction = new QAction( tr( "Monitor for Changes" ), scanningMenu );
269+
connect( monitorAction, &QAction::triggered, this, [ = ]
270+
{
271+
toggleMonitor( directoryItem );
272+
} );
273+
monitorAction->setCheckable( true );
274+
monitorAction->setChecked( directoryItem->isMonitored() );
275+
scanningMenu->addAction( monitorAction );
276+
277+
QAction *fastScanAction = new QAction( tr( "Fast Scan this Directory" ), scanningMenu );
267278
connect( fastScanAction, &QAction::triggered, this, [ = ]
268279
{
269280
toggleFastScan( directoryItem );
270281
} );
271-
menu->addAction( fastScanAction );
272282
fastScanAction->setCheckable( true );
273283
fastScanAction->setChecked( settings.value( QStringLiteral( "qgis/scanItemsFastScanUris" ),
274284
QStringList() ).toStringList().contains( item->path() ) );
275285

286+
scanningMenu->addAction( fastScanAction );
287+
menu->addMenu( scanningMenu );
288+
276289
menu->addSeparator();
277290

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

398+
void QgsAppDirectoryItemGuiProvider::toggleMonitor( QgsDirectoryItem *item )
399+
{
400+
if ( item->isMonitored() )
401+
item->setMonitoring( Qgis::BrowserDirectoryMonitoring::NeverMonitor );
402+
else
403+
item->setMonitoring( Qgis::BrowserDirectoryMonitoring::AlwaysMonitor );
404+
}
405+
385406
void QgsAppDirectoryItemGuiProvider::showProperties( QgsDirectoryItem *item, QgsDataItemGuiContext context )
386407
{
387408
if ( ! item )

‎src/app/browser/qgsinbuiltdataitemproviders.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class QgsAppDirectoryItemGuiProvider : public QObject, public QgsDataItemGuiProv
5050
void clearDirectoryColor( QgsDirectoryItem *item );
5151
void hideDirectory( QgsDirectoryItem *item );
5252
void toggleFastScan( QgsDirectoryItem *item );
53+
void toggleMonitor( QgsDirectoryItem *item );
5354
void showProperties( QgsDirectoryItem *item, QgsDataItemGuiContext context );
5455
};
5556

0 commit comments

Comments
 (0)
Please sign in to comment.