From 42474400bf539f95234cdc4c1f6884b0462eec5b Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Tue, 25 Sep 2012 22:13:48 +0200 Subject: [PATCH] [FEATURE] allow manual addition of browser favorite directories --- src/app/qgsbrowserdockwidget.cpp | 28 ++++++++++++++++++++++++---- src/app/qgsbrowserdockwidget.h | 2 ++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/app/qgsbrowserdockwidget.cpp b/src/app/qgsbrowserdockwidget.cpp index 671bf9968cc2..6d331ed510fc 100644 --- a/src/app/qgsbrowserdockwidget.cpp +++ b/src/app/qgsbrowserdockwidget.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include "qgsbrowsermodel.h" #include "qgsdataitem.h" @@ -170,7 +171,7 @@ void QgsBrowserDockWidget::showContextMenu( const QPoint & pt ) if ( !item ) return; - QMenu* menu = new QMenu( this ); + QMenu *menu = new QMenu( this ); if ( item->type() == QgsDataItem::Directory ) { @@ -188,13 +189,19 @@ void QgsBrowserDockWidget::showContextMenu( const QPoint & pt ) // only favourites can be removed menu->addAction( tr( "Remove favourite" ), this, SLOT( removeFavourite() ) ); } - } + } else if ( item->type() == QgsDataItem::Layer ) { menu->addAction( tr( "Add Layer" ), this, SLOT( addCurrentLayer( ) ) ); menu->addAction( tr( "Add Selected Layers" ), this, SLOT( addSelectedLayers() ) ); menu->addAction( tr( "Properties" ), this, SLOT( showProperties( ) ) ); + + } + else if ( item->type() == QgsDataItem::Favourites ) + { + menu->addAction( tr( "Add a directory" ), this, SLOT( addFavouriteDirectory() ) ); + } QList actions = item->actions(); @@ -220,14 +227,27 @@ void QgsBrowserDockWidget::addFavourite() QgsDataItem* item = mModel->dataItem( mBrowserView->currentIndex() ); if ( !item ) return; + if ( item->type() != QgsDataItem::Directory ) return; - QString newFavDir = item->path(); + addFavouriteDirectory( item->path() ); +} +void QgsBrowserDockWidget::addFavouriteDirectory() +{ + QString directory = QFileDialog::getExistingDirectory( this, tr( "Add directory to favourites" ) ); + if ( !directory.isEmpty() ) + { + addFavouriteDirectory( directory ); + } +} + +void QgsBrowserDockWidget::addFavouriteDirectory( QString favDir ) +{ QSettings settings; QStringList favDirs = settings.value( "/browser/favourites" ).toStringList(); - favDirs.append( newFavDir ); + favDirs.append( favDir ); settings.setValue( "/browser/favourites", favDirs ); // reload the browser model so that the newly added favourite directory is shown diff --git a/src/app/qgsbrowserdockwidget.h b/src/app/qgsbrowserdockwidget.h index 7b7430d828a2..946301ac90b2 100644 --- a/src/app/qgsbrowserdockwidget.h +++ b/src/app/qgsbrowserdockwidget.h @@ -35,6 +35,7 @@ class QgsBrowserDockWidget : public QDockWidget void showContextMenu( const QPoint & ); void addFavourite(); + void addFavouriteDirectory(); void removeFavourite(); void refresh(); @@ -45,6 +46,7 @@ class QgsBrowserDockWidget : public QDockWidget void showProperties(); protected: + void addFavouriteDirectory( QString favDir ); void refreshModel( const QModelIndex& index );