Skip to content

Commit c085d0e

Browse files
committedNov 4, 2018
Move favorites action handling from gui to app
1 parent fab4154 commit c085d0e

File tree

6 files changed

+67
-12
lines changed

6 files changed

+67
-12
lines changed
 

‎python/gui/auto_generated/qgsbrowserdockwidget.sip.in

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,12 @@ Constructor for QgsBrowserDockWidget
3131
:param parent: parent widget
3232
%End
3333
~QgsBrowserDockWidget();
34-
void addFavoriteDirectory( const QString &favDir, const QString &name = QString() );
34+
35+
void addFavoriteDirectory( const QString &favDir, const QString &name = QString() ) /Deprecated/;
3536
%Docstring
36-
Add directory to favorites
37+
Add directory to favorites.
38+
39+
.. deprecated:: will be removed in QGIS 4.0 - use the methods in QgsBrowserModel instead
3740
%End
3841

3942
void setMessageBar( QgsMessageBar *bar );
@@ -78,9 +81,11 @@ Add current item to favorite.
7881
.. deprecated:: will be removed in QGIS 4.0 - use the methods in QgsBrowserModel instead
7982
%End
8083

81-
void addFavoriteDirectory();
84+
void addFavoriteDirectory() /Deprecated/;
8285
%Docstring
83-
Add directory from file dialog to favorite
86+
Add directory from file dialog to favorite.
87+
88+
.. deprecated:: will be removed in QGIS 4.0 - use the methods in QgsBrowserModel instead
8489
%End
8590

8691
void removeFavorite() /Deprecated/;

‎src/app/browser/qgsinbuiltdataitemproviders.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,3 +246,29 @@ void QgsProjectHomeItemGuiProvider::populateContextMenu( QgsDataItem *item, QMen
246246
else
247247
menu->addAction( setHome );
248248
}
249+
250+
//
251+
// QgsFavoritesItemGuiProvider
252+
//
253+
254+
QString QgsFavoritesItemGuiProvider::name()
255+
{
256+
return QStringLiteral( "favorites_item" );
257+
}
258+
259+
void QgsFavoritesItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *menu, const QList<QgsDataItem *> &, QgsDataItemGuiContext )
260+
{
261+
if ( item->type() != QgsDataItem::Favorites )
262+
return;
263+
264+
QAction *addAction = new QAction( tr( "Add a Directory…" ), menu );
265+
connect( addAction, &QAction::triggered, this, [ = ]
266+
{
267+
QString directory = QFileDialog::getExistingDirectory( QgisApp::instance(), tr( "Add Directory to Favorites" ) );
268+
if ( !directory.isEmpty() )
269+
{
270+
QgisApp::instance()->browserModel()->addFavoriteDirectory( directory );
271+
}
272+
} );
273+
menu->addAction( addAction );
274+
}

‎src/app/browser/qgsinbuiltdataitemproviders.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,21 @@ class QgsProjectHomeItemGuiProvider : public QObject, public QgsDataItemGuiProvi
6565
};
6666

6767

68+
class QgsFavoritesItemGuiProvider : public QObject, public QgsDataItemGuiProvider
69+
{
70+
Q_OBJECT
71+
72+
public:
73+
74+
QgsFavoritesItemGuiProvider() = default;
75+
76+
QString name() override;
77+
78+
void populateContextMenu( QgsDataItem *item, QMenu *menu,
79+
const QList<QgsDataItem *> &selectedItems, QgsDataItemGuiContext context ) override;
80+
81+
};
82+
6883

6984
#endif // QGSINBUILTDATAITEMPROVIDERS_H
7085

‎src/app/qgisapp.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1027,6 +1027,7 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, bool skipVersionCh
10271027

10281028
QgsGui::instance()->dataItemGuiProviderRegistry()->addProvider( new QgsAppDirectoryItemGuiProvider() );
10291029
QgsGui::instance()->dataItemGuiProviderRegistry()->addProvider( new QgsProjectHomeItemGuiProvider() );
1030+
QgsGui::instance()->dataItemGuiProviderRegistry()->addProvider( new QgsFavoritesItemGuiProvider() );
10301031

10311032
QShortcut *showBrowserDock = new QShortcut( QKeySequence( tr( "Ctrl+2" ) ), this );
10321033
connect( showBrowserDock, &QShortcut::activated, mBrowserWidget, &QgsDockWidget::toggleUserVisible );

‎src/gui/qgsbrowserdockwidget.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ void QgsBrowserDockWidget::showContextMenu( QPoint pt )
194194

195195
const QModelIndexList selection = mBrowserView->selectionModel()->selectedIndexes();
196196
QList< QgsDataItem * > selectedItems;
197+
selectedItems.reserve( selection.size() );
197198
for ( const QModelIndex &selectedIndex : selection )
198199
{
199200
QgsDataItem *selectedItem = mProxyModel->dataItem( selectedIndex );
@@ -255,10 +256,6 @@ void QgsBrowserDockWidget::showContextMenu( QPoint pt )
255256
} );
256257
}
257258
}
258-
else if ( item->type() == QgsDataItem::Favorites )
259-
{
260-
menu->addAction( tr( "Add a Directory…" ), this, SLOT( addFavoriteDirectory() ) );
261-
}
262259

263260
const QList<QMenu *> menus = item->menus( menu );
264261
QList<QAction *> actions = item->actions( menu );
@@ -308,15 +305,19 @@ void QgsBrowserDockWidget::addFavorite()
308305
if ( !dirItem )
309306
return;
310307

308+
Q_NOWARN_DEPRECATED_PUSH
311309
addFavoriteDirectory( dirItem->dirPath() );
310+
Q_NOWARN_DEPRECATED_POP
312311
}
313312

314313
void QgsBrowserDockWidget::addFavoriteDirectory()
315314
{
316315
QString directory = QFileDialog::getExistingDirectory( this, tr( "Add directory to favorites" ) );
317316
if ( !directory.isEmpty() )
318317
{
318+
Q_NOWARN_DEPRECATED_PUSH
319319
addFavoriteDirectory( directory );
320+
Q_NOWARN_DEPRECATED_POP
320321
}
321322
}
322323

‎src/gui/qgsbrowserdockwidget.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,12 @@ class GUI_EXPORT QgsBrowserDockWidget : public QgsDockWidget, private Ui::QgsBro
5353
*/
5454
explicit QgsBrowserDockWidget( const QString &name, QgsBrowserModel *browserModel, QWidget *parent SIP_TRANSFERTHIS = nullptr );
5555
~QgsBrowserDockWidget() override;
56-
//! Add directory to favorites
57-
void addFavoriteDirectory( const QString &favDir, const QString &name = QString() );
56+
57+
/**
58+
* Add directory to favorites.
59+
* \deprecated will be removed in QGIS 4.0 - use the methods in QgsBrowserModel instead
60+
*/
61+
Q_DECL_DEPRECATED void addFavoriteDirectory( const QString &favDir, const QString &name = QString() ) SIP_DEPRECATED;
5862

5963
/**
6064
* Sets a message \a bar to use alongside the dock widget. Setting this allows items
@@ -95,8 +99,11 @@ class GUI_EXPORT QgsBrowserDockWidget : public QgsDockWidget, private Ui::QgsBro
9599
*/
96100
Q_DECL_DEPRECATED void addFavorite() SIP_DEPRECATED;
97101

98-
//! Add directory from file dialog to favorite
99-
void addFavoriteDirectory();
102+
/**
103+
* Add directory from file dialog to favorite.
104+
* \deprecated will be removed in QGIS 4.0 - use the methods in QgsBrowserModel instead
105+
*/
106+
Q_DECL_DEPRECATED void addFavoriteDirectory() SIP_DEPRECATED;
100107

101108
/**
102109
* Remove from favorite.

0 commit comments

Comments
 (0)
Please sign in to comment.