[FEATURE] allow manual addition of browser favorite directories

This commit is contained in:
Juergen E. Fischer 2012-09-25 22:13:48 +02:00
parent 4c97806d26
commit 42474400bf
2 changed files with 26 additions and 4 deletions

View File

@ -19,6 +19,7 @@
#include <QMenu> #include <QMenu>
#include <QSettings> #include <QSettings>
#include <QToolButton> #include <QToolButton>
#include <QFileDialog>
#include "qgsbrowsermodel.h" #include "qgsbrowsermodel.h"
#include "qgsdataitem.h" #include "qgsdataitem.h"
@ -170,7 +171,7 @@ void QgsBrowserDockWidget::showContextMenu( const QPoint & pt )
if ( !item ) if ( !item )
return; return;
QMenu* menu = new QMenu( this ); QMenu *menu = new QMenu( this );
if ( item->type() == QgsDataItem::Directory ) if ( item->type() == QgsDataItem::Directory )
{ {
@ -188,13 +189,19 @@ void QgsBrowserDockWidget::showContextMenu( const QPoint & pt )
// only favourites can be removed // only favourites can be removed
menu->addAction( tr( "Remove favourite" ), this, SLOT( removeFavourite() ) ); menu->addAction( tr( "Remove favourite" ), this, SLOT( removeFavourite() ) );
} }
}
}
else if ( item->type() == QgsDataItem::Layer ) else if ( item->type() == QgsDataItem::Layer )
{ {
menu->addAction( tr( "Add Layer" ), this, SLOT( addCurrentLayer( ) ) ); menu->addAction( tr( "Add Layer" ), this, SLOT( addCurrentLayer( ) ) );
menu->addAction( tr( "Add Selected Layers" ), this, SLOT( addSelectedLayers() ) ); menu->addAction( tr( "Add Selected Layers" ), this, SLOT( addSelectedLayers() ) );
menu->addAction( tr( "Properties" ), this, SLOT( showProperties( ) ) ); menu->addAction( tr( "Properties" ), this, SLOT( showProperties( ) ) );
}
else if ( item->type() == QgsDataItem::Favourites )
{
menu->addAction( tr( "Add a directory" ), this, SLOT( addFavouriteDirectory() ) );
} }
QList<QAction*> actions = item->actions(); QList<QAction*> actions = item->actions();
@ -220,14 +227,27 @@ void QgsBrowserDockWidget::addFavourite()
QgsDataItem* item = mModel->dataItem( mBrowserView->currentIndex() ); QgsDataItem* item = mModel->dataItem( mBrowserView->currentIndex() );
if ( !item ) if ( !item )
return; return;
if ( item->type() != QgsDataItem::Directory ) if ( item->type() != QgsDataItem::Directory )
return; 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; QSettings settings;
QStringList favDirs = settings.value( "/browser/favourites" ).toStringList(); QStringList favDirs = settings.value( "/browser/favourites" ).toStringList();
favDirs.append( newFavDir ); favDirs.append( favDir );
settings.setValue( "/browser/favourites", favDirs ); settings.setValue( "/browser/favourites", favDirs );
// reload the browser model so that the newly added favourite directory is shown // reload the browser model so that the newly added favourite directory is shown

View File

@ -35,6 +35,7 @@ class QgsBrowserDockWidget : public QDockWidget
void showContextMenu( const QPoint & ); void showContextMenu( const QPoint & );
void addFavourite(); void addFavourite();
void addFavouriteDirectory();
void removeFavourite(); void removeFavourite();
void refresh(); void refresh();
@ -45,6 +46,7 @@ class QgsBrowserDockWidget : public QDockWidget
void showProperties(); void showProperties();
protected: protected:
void addFavouriteDirectory( QString favDir );
void refreshModel( const QModelIndex& index ); void refreshModel( const QModelIndex& index );