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 ) ); }
bool FavouriteModCollection::loadFavouritesList(const char * fileName) { if(!m_initialized || m_mods == NULL) { return false; } QString favouritesListPath(fileName); QFileInfo favouritesListFileInfo(favouritesListPath); if(!favouritesListFileInfo.exists()) { return false; } QFile input(favouritesListPath); if(!input.open(QIODevice::ReadOnly | QIODevice::Text)) { return false; } clearFavourites(); QString line; ModInformation * newFavourite = NULL; while(true) { if(input.atEnd()) { break; } line = input.readLine().trimmed(); if(line.length() == 0) { continue; } const Mod * mod = m_mods->getMod(line); if(mod != NULL) { newFavourite = new ModInformation(mod->getName(), mod->getLatestVersion()); if(!addFavourite(newFavourite)) { printf("Attempted to add duplicate favourite mod: %s\n", newFavourite->getFullName()); delete newFavourite; } } else { QByteArray lineBytes = line.toLocal8Bit(); printf("Unknown or missing mod in favourites list: %s\n", lineBytes.data()); } } if(m_favourites.size() > 0) { printf("%d favourite mod%s loaded.\n", m_favourites.size(), m_favourites.size() == 1 ? "" : "s"); } input.close(); return true; }
/** * @author Macai * @connect signal and slot * @brief MainWindow::setActions */ void MainWindow::setActions() { connect(ui->action_Exit, SIGNAL(triggered()), this, SLOT(close()) ); connect(ui->action_Add, SIGNAL(triggered()), this, SLOT(showAddContactDlg()) ); connect(ui->action_Delete, SIGNAL(triggered()), this, SLOT(deleteContact()) ); connect(ui->action_Edit, SIGNAL(triggered()), this, SLOT(showEditContactDlg()) ); connect(ui->action_Query, SIGNAL(triggered()), this, SLOT(showFindWidget()) ); connect(ui->action_Favorites, SIGNAL(triggered()), this, SLOT(addFavourite()) ); connect(ui->action_Details, SIGNAL(triggered()), this, SLOT(showDetailDlg()) ); connect(ui->action_Settings, SIGNAL(triggered()), this, SLOT(showSettingDlg()) ); connect(ui->action_About, SIGNAL(triggered()), this, SLOT(showAboutDlg()) ); connect(ui->menu_Background, SIGNAL(triggered(QAction*)), this, SLOT(backgroundChanged(QAction*)) ); connect(ui->menu_Backmusic, SIGNAL(triggered(QAction*)), this, SLOT(backmusicChanged(QAction*)) ); connect(Global::g_settingThemes, SIGNAL(setMainWinBackground(QString)), this, SLOT(setBackground(QString)) ); connect(Global::g_settingThemes, SIGNAL(setMainWinFontColor(int,int,int)), this, SLOT(updateFontColor(int,int,int)) ); connect(ui->btn_findBtn, SIGNAL(clicked(bool)), this, SLOT(findContact(bool)) ); connect(ui->grouplistWidget, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(filterGroup(QListWidgetItem*, QListWidgetItem*)) ); connect(ui->grouplistWidget, SIGNAL(updateGroupContacts(const QString&)), this, SLOT(updateGroupContacts(const QString&)) ); connect(ui->contactTableView, SIGNAL(clicked(QModelIndex)), this, SLOT(showDetail(QModelIndex)) ); connect(ui->contactTableView, SIGNAL(updateButton(bool)), this, SLOT(updateButton(bool)) ); connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(tabWidgetChanged(int)) ); connect(ui->favoritTableView, SIGNAL(clicked(QModelIndex)), this, SLOT(showDetail(QModelIndex)) ); connect(ui->favoritTableView, SIGNAL(updateButton(bool)), this, SLOT(updateButton(bool)) ); connect(ui->favoritTableView, SIGNAL(findContactAct()), this, SLOT(showFindWidget()) ); connect(ui->favoritTableView, SIGNAL(deleteContactAct()), this, SLOT(deleteContact()) ); connect(ui->favoritTableView, SIGNAL(sendMailAct()), this, SLOT(showDetailDlg()) ); connect(ui->favoritTableView, SIGNAL(viewDetailAct()), this, SLOT(showDetailDlg()) ); connect(ui->contactTableView, SIGNAL(addContactAct()), this, SLOT(showAddContactDlg()) ); connect(ui->contactTableView, SIGNAL(editContactAct()), this, SLOT(showEditContactDlg()) ); connect(ui->contactTableView, SIGNAL(findContactAct()), this, SLOT(showFindWidget()) ); connect(ui->contactTableView, SIGNAL(deleteContactAct()), this, SLOT(deleteContact()) ); connect(ui->contactTableView, SIGNAL(addFavouriteAct()), this, SLOT(addFavourite()) ); connect(ui->contactTableView, SIGNAL(sendMailAct()), this, SLOT(showDetailDlg()) ); connect(ui->contactTableView, SIGNAL(viewDetailAct()), this, SLOT(showDetailDlg()) ); }
bool FavouriteModCollection::loadFavouritesXML(const char * fileName) { if(!m_initialized) { return false; } if(fileName == NULL || Utilities::stringLength(fileName) == 0) { return false; } QString favouritesListPath(fileName); QFileInfo favouritesListFileInfo(favouritesListPath); if(!favouritesListFileInfo.exists()) { return false; } QFile favouritesListFile(favouritesListPath); if(!favouritesListFile.open(QIODevice::ReadOnly | QIODevice::Text)) { return false; } clearFavourites(); QXmlStreamReader input(&favouritesListFile); QXmlStreamAttributes attributes; ModInformation * newFavourite = NULL; QString name, version; bool foundRootNode = false; while(true) { if(input.atEnd() || input.hasError()) { break; } if(input.readNext() == QXmlStreamReader::StartDocument) { continue; } if(input.isStartElement()) { if(!foundRootNode) { if(QString::compare(input.name().toString(), "favourites", Qt::CaseInsensitive) == 0) { foundRootNode = true; attributes = input.attributes(); QString game, fileVersion; if(attributes.hasAttribute("game")) { game = attributes.value("game").toString(); if(m_mods != NULL && !game.isEmpty() && QString::compare(game, m_mods->getGameName(), Qt::CaseInsensitive) != 0) { printf("Attempted to load a favourite mod list for game \"%s\", while mod list is for game \"%s\".\n", game.toLocal8Bit().data(), m_mods->getGameName()); break; } } else { printf("Root mods node missing required game attribute.\n"); break; } if(attributes.hasAttribute("favourites_version")) { fileVersion = attributes.value("favourites_version").toString(); if(QString::compare(fileVersion, "1.0", Qt::CaseInsensitive) != 0) { printf("Mod list version %s is unsupported.\n", fileVersion.toLocal8Bit().data()); break; } } else { printf("Root mods node missing required mods_version attribute.\n"); break; } } continue; } if(QString::compare(input.name().toString(), "mod", Qt::CaseInsensitive) == 0) { attributes = input.attributes(); if(attributes.hasAttribute("name")) { name = attributes.value("name").toString(); } else { printf("Found favourite mod entry missing required name attribute.\n"); break; } if(attributes.hasAttribute("version")) { version = attributes.value("version").toString(); } } if(!name.isEmpty()) { newFavourite = new ModInformation(name, version); if(!addFavourite(newFavourite)) { printf("Attempted to add duplicate favourite mod: %s\n", newFavourite->getFullName()); delete newFavourite; } } name.clear(); version.clear(); } else if(input.isEndElement()) { if(QString::compare(input.name().toString(), "favourites", Qt::CaseInsensitive) == 0) { break; } } } favouritesListFile.close(); return true; }