[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 <QSettings>
#include <QToolButton>
#include <QFileDialog>
#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<QAction*> 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

View File

@ -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 );