void QgsBrowserDockWidget::showContextMenu( const QPoint & pt ) { QModelIndex idx = mBrowserView->indexAt( pt ); QgsDataItem* item = mModel->dataItem( idx ); if ( !item ) return; QMenu* menu = new QMenu( this ); if ( item->type() == QgsDataItem::Directory ) { QSettings settings; QStringList favDirs = settings.value( "/browser/favourites" ).toStringList(); bool inFavDirs = favDirs.contains( item->path() ); if ( item->parent() != NULL && !inFavDirs ) { // only non-root directories can be added as favourites menu->addAction( tr( "Add as a favourite" ), this, SLOT( addFavourite() ) ); } else if ( inFavDirs ) { // only favourites can be removed menu->addAction( tr( "Remove favourite" ), this, SLOT( removeFavourite() ) ); } } if ( menu->actions().count() == 0 ) { delete menu; return; } menu->popup( mBrowserView->mapToGlobal( pt ) ); }
void QgsBrowserDockWidget::showContextMenu( const QPoint & pt ) { QModelIndex idx = mBrowserView->indexAt( pt ); QgsDataItem* item = mModel->dataItem( idx ); if ( !item ) return; QMenu *menu = new QMenu( this ); if ( item->type() == QgsDataItem::Directory ) { QSettings settings; QStringList favDirs = settings.value( "/browser/favourites" ).toStringList(); bool inFavDirs = favDirs.contains( item->path() ); if ( item->parent() != NULL && !inFavDirs ) { // only non-root directories can be added as favourites menu->addAction( tr( "Add as a favourite" ), this, SLOT( addFavourite() ) ); } else if ( inFavDirs ) { // 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(); if ( !actions.isEmpty() ) { if ( !menu->actions().isEmpty() ) menu->addSeparator(); // add action to the menu menu->addActions( actions ); } if ( menu->actions().count() == 0 ) { delete menu; return; } menu->popup( mBrowserView->mapToGlobal( pt ) ); }