From 89ac38a072341401b8808db5143ad20e0edb9b7b Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 11 Aug 2016 01:33:34 +0200 Subject: [PATCH] refs #720, ui context menu finetuning * renaming / formatting * const predefined subdir menus --- src/blackgui/menus/aircraftmodelmenus.cpp | 6 +-- src/blackgui/menus/menuaction.cpp | 46 +++++++++++++++---- src/blackgui/menus/menuaction.h | 16 ++++++- .../fscommon/vpilotmodelruleset.cpp | 2 - .../simulation/fscommon/vpilotmodelruleset.h | 1 - 5 files changed, 53 insertions(+), 18 deletions(-) diff --git a/src/blackgui/menus/aircraftmodelmenus.cpp b/src/blackgui/menus/aircraftmodelmenus.cpp index 00e56e2fa..60a3f7369 100644 --- a/src/blackgui/menus/aircraftmodelmenus.cpp +++ b/src/blackgui/menus/aircraftmodelmenus.cpp @@ -138,12 +138,12 @@ namespace BlackGui if (!sGui->hasWebDataServices()) { this->nestedCustomMenu(menuActions); return; } menuActions.addMenuDatabase(); - menuActions.addMenu(CIcons::databaseEdit16(), "Consolidate with DB data", CMenuAction::pathViewDatabaseMerge()); + menuActions.addMenu(CIcons::databaseEdit16(), "Consolidate with DB data", CMenuAction::pathViewDatabaseConsolidate()); - this->m_consolidateAll = menuActions.addAction(this->m_consolidateAll, "All", CMenuAction::pathViewDatabaseMerge(), { this, &CConsolidateWithDbDataMenu::ps_consolidateData }); + this->m_consolidateAll = menuActions.addAction(this->m_consolidateAll, "All", CMenuAction::pathViewDatabaseConsolidate(), { this, &CConsolidateWithDbDataMenu::ps_consolidateData }); if (mv->hasSelection()) { - this->m_consolidateSelected = menuActions.addAction(this->m_consolidateSelected, "Selected only", CMenuAction::pathViewDatabaseMerge(), { this, &CConsolidateWithDbDataMenu::ps_consolidateSelectedData }); + this->m_consolidateSelected = menuActions.addAction(this->m_consolidateSelected, "Selected only", CMenuAction::pathViewDatabaseConsolidate(), { this, &CConsolidateWithDbDataMenu::ps_consolidateSelectedData }); } this->nestedCustomMenu(menuActions); } diff --git a/src/blackgui/menus/menuaction.cpp b/src/blackgui/menus/menuaction.cpp index 054449825..4fcbfea3a 100644 --- a/src/blackgui/menus/menuaction.cpp +++ b/src/blackgui/menus/menuaction.cpp @@ -84,6 +84,18 @@ namespace BlackGui this->m_action->setEnabled(enabled); } + const CMenuAction &CMenuAction::subMenuDatabase() + { + static const CMenuAction subdir(CIcons::appDatabase16(), "Database", CMenuAction::pathViewDatabase()); + return subdir; + } + + const CMenuAction &CMenuAction::subMenuSimulator() + { + static const CMenuAction subdir(CIcons::appSimulator16(), "Simulator", CMenuAction::pathSimulator()); + return subdir; + } + QString CMenuAction::getLastPathPart() const { if (this->m_path.contains('/')) @@ -160,6 +172,11 @@ namespace BlackGui return getMenuActions(path).size() > 0; } + CMenuAction CMenuActions::addMenu(const CMenuAction &subdirAction) + { + return this->addMenu(subdirAction.getIcon(), subdirAction.getTitle(), subdirAction.getPath()); + } + CMenuAction CMenuActions::addMenu(const QString &title, const QString &path) { return this->addMenu(QIcon(), title, path); @@ -293,22 +310,19 @@ namespace BlackGui void CMenuActions::toQMenu(QMenu &menu, bool separateGroups) const { if (this->m_actions.isEmpty()) { return; } - const QStringList keys(this->m_actions.uniqueKeys()); // Sorted ascending - QMap subMenus; // all sub menus + const QStringList keys = this->m_actions.uniqueKeys(); // Sorted ascending + QMap subMenus; // all sub menus for (const QString &key : keys) { bool addedSeparator = false; - const int pathDepth = CMenuActions::pathDepth(key); + const int pathDepth = CMenuActions::pathDepth(key); // 0 based QList actions; QList menus; this->splitSubMenus(key, actions, menus); if (actions.isEmpty()) { - // uncomment this if a subdir shall be displayed, even if there are no actions - // if (!menus.isEmpty()) { currentMenuForAction(menu, menus.fi, menus, subMenus, key, pathDepth); } - // No actions directly for that level continue; } @@ -407,7 +421,7 @@ namespace BlackGui CMenuAction CMenuActions::addMenuDatabase() { if (this->containsMenu(CMenuAction::pathViewDatabase())) { CMenuAction(); } - return this->addMenu(CIcons::appDatabase16(), "Database", CMenuAction::pathViewDatabase()); + return this->addMenu(CMenuAction::subMenuDatabase()); } CMenuAction CMenuActions::addMenuModelSet() @@ -416,17 +430,29 @@ namespace BlackGui return this->addMenu(CIcons::appModels16(), "Model set", CMenuAction::pathModelSet()); } + const CMenuActions &CMenuActions::predefinedSubmenus() + { + static const CMenuActions pd( + { + CMenuAction::subMenuDatabase(), + CMenuAction::subMenuSimulator() + }); + return pd; + } + QMenu *CMenuActions::currentMenuForAction(QMenu &menu, const CMenuAction &menuAction, const QList &menus, QMap &subMenus, const QString &key, int pathDepth) { if (pathDepth < 1) { return &menu; } - QMenu *parentMenu = &menu; if (pathDepth > 1) { // find the corresponding submenu. If this is empty the next higher level will be choosen // if not found at all, use top level menu parentMenu = findUpwardsInMenus(key, subMenus); - if (!parentMenu) { parentMenu = &menu; } + if (!parentMenu) + { + parentMenu = &menu; + } } // explicity menu? @@ -471,7 +497,7 @@ namespace BlackGui { if (menus.contains(k)) { - return menus[key]; + return menus[k]; } k = parentPath(k); } diff --git a/src/blackgui/menus/menuaction.h b/src/blackgui/menus/menuaction.h index 05b68bfff..0babe8971 100644 --- a/src/blackgui/menus/menuaction.h +++ b/src/blackgui/menus/menuaction.h @@ -149,8 +149,8 @@ namespace BlackGui //! Database static const QString &pathViewDatabase() { static const QString p("View.10.Database/Database"); return p; } - //! Database merge - static const QString &pathViewDatabaseMerge() { static const QString p("View.10.Database/Database/Merge"); return p; } + //! Database consolidation + static const QString &pathViewDatabaseConsolidate() { static const QString p("View.10.Database/Database/Consolidate"); return p; } //! Select add remove static const QString &pathViewAddRemove() { static const QString p("View.11.AddRemove"); return p; } @@ -179,6 +179,12 @@ namespace BlackGui static const QString &pathDockWidgetNested() { static const QString p("DockWidget.Nested"); return p; } //! @} + //! \name Predefined sub sub menus + //! @{ + static const CMenuAction &subMenuDatabase(); + static const CMenuAction &subMenuSimulator(); + //! @} + private: QAction *m_action = nullptr; //!< the action QIcon m_icon; //!< icon @@ -218,6 +224,9 @@ namespace BlackGui //! Elements int size() const { return m_actions.size(); } + //! Add a sub menu + CMenuAction addMenu(const CMenuAction &subdirAction); + //! Add a sub menu CMenuAction addMenu(const QString &title, const QString &path); @@ -310,6 +319,9 @@ namespace BlackGui //! @} + //! Predfefined sub menus + static const CMenuActions &predefinedSubmenus(); + private: QMultiMap m_actions; //!< actions sorted by path diff --git a/src/blackmisc/simulation/fscommon/vpilotmodelruleset.cpp b/src/blackmisc/simulation/fscommon/vpilotmodelruleset.cpp index 8b8a66755..13c3a7a42 100644 --- a/src/blackmisc/simulation/fscommon/vpilotmodelruleset.cpp +++ b/src/blackmisc/simulation/fscommon/vpilotmodelruleset.cpp @@ -25,7 +25,6 @@ namespace BlackMisc { namespace FsCommon { - CVPilotModelRuleSet::CVPilotModelRuleSet(const CCollection &other) : CCollection(other) { } @@ -143,7 +142,6 @@ namespace BlackMisc } return models; } - } // namespace } // namespace } // namespace diff --git a/src/blackmisc/simulation/fscommon/vpilotmodelruleset.h b/src/blackmisc/simulation/fscommon/vpilotmodelruleset.h index 7a4be6c8f..a670c014d 100644 --- a/src/blackmisc/simulation/fscommon/vpilotmodelruleset.h +++ b/src/blackmisc/simulation/fscommon/vpilotmodelruleset.h @@ -74,7 +74,6 @@ namespace BlackMisc //! Convert values to upper case static QStringList toUpper(const QStringList &stringList); }; - } // namespace } //namespace } // namespace