diff --git a/src/blackcore/context_settings.cpp b/src/blackcore/context_settings.cpp index 2fb928128..8a950a8ad 100644 --- a/src/blackcore/context_settings.cpp +++ b/src/blackcore/context_settings.cpp @@ -7,9 +7,10 @@ #include "coreruntime.h" #include "blackmisc/settingutilities.h" +using namespace BlackMisc; using namespace BlackMisc::Settings; using namespace BlackMisc::Network; -using namespace BlackMisc; +using namespace BlackMisc::Hardware; namespace BlackCore { @@ -17,7 +18,7 @@ namespace BlackCore /* * Init this context */ - CContextSettings::CContextSettings(CCoreRuntime *runtime) : IContextSettings(runtime), m_settingsNetwork() + CContextSettings::CContextSettings(CCoreRuntime *runtime) : IContextSettings(runtime) { // create some dummy settings // this would actually be reading the settings from disk .. @@ -28,6 +29,17 @@ namespace BlackCore this->m_settingsNetwork.addTrafficNetworkServer(CServer("Europe CC", "VATSIM Server", "5.9.155.43", 6809, CUser("vatsimid", "Black Client", "", "vatsimpw"))); this->m_settingsNetwork.addTrafficNetworkServer(CServer("UK", "VATSIM Server", "109.169.48.148", 6809, CUser("vatsimid", "Black Client", "", "vatsimpw"))); this->m_settingsNetwork.addTrafficNetworkServer(CServer("USA-W", "VATSIM Server", "64.151.108.52", 6809, CUser("vatsimid", "Black Client", "", "vatsimpw"))); + + // hotkeys + this->m_hotkeys.initAsHotkeyList(); + } + + /* + * Hotkeys + */ + Hardware::CKeyboardKeyList CContextSettings::getHotkeys() const + { + return this->m_hotkeys; } /* @@ -45,15 +57,40 @@ namespace BlackCore { Q_ASSERT(path.length() > 3); Q_ASSERT(path.indexOf('/') >= 0); + + BlackMisc::CStatusMessageList msgs; + if (path.contains(IContextSettings::PathRoot())) + { + if (path.contains(IContextSettings::PathHotkeys())) + { + if (command == CSettingUtilities::CmdUpdate()) + { + BlackMisc::Hardware::CKeyboardKeyList hotkeys = value.value(); + this->m_hotkeys = hotkeys; + emit this->changedSettings(); + msgs.push_back(CStatusMessage::getInfoMessage("set hotkeys")); + return msgs; + } + } + } + + // next level QString nextLevelPath = CSettingUtilities::removeLeadingPath(path); - BlackMisc::CStatusMessageList msgs = CSettingUtilities::wrongPathMessages(path); bool changed = false; if (path.startsWith(IContextSettings::PathNetworkSettings())) { msgs = this->m_settingsNetwork.value(nextLevelPath, command, value, changed); - if (changed) emit this->changedNetworkSettings(); + if (changed) + { + emit this->changedNetworkSettings(); + emit this->changedSettings(); + } + } + else + { + // wrong path + msgs = CSettingUtilities::wrongPathMessages(path); } return msgs; } - } // namespace diff --git a/src/blackcore/context_settings.h b/src/blackcore/context_settings.h index 952d01318..69e37a876 100644 --- a/src/blackcore/context_settings.h +++ b/src/blackcore/context_settings.h @@ -9,8 +9,8 @@ #include "blackcore/coreruntime.h" #include "blackcore/dbus_server.h" #include "blackcore/context_settings_interface.h" -#include "blackmisc/statusmessage.h" #include "blackmisc/statusmessagelist.h" +#include "blackmisc/hwkeyboardkeylist.h" #include #define BLACKCORE_CONTEXTSETTINGS_INTERFACENAME "blackcore.contextsettings" @@ -29,50 +29,37 @@ namespace BlackCore public: - /*! - * Context - * \param runtime - */ + //! \brief Constructor CContextSettings(CCoreRuntime *runtime); - /*! - * Destructor - */ + //! Destructor virtual ~CContextSettings() {} - /*! - * \brief Register myself in DBus - * \param server - */ + //! \brief Register myself in DBus void registerWithDBus(CDBusServer *server) { server->addObject(IContextSettings::ServicePath(), this); } - /*! - * \brief Runtime - * \return - */ + //! \brief Runtime const CCoreRuntime *getRuntime() const { return static_cast(this->parent()); } - /*! - * \copydoc IContextSettings::value() - */ + //! \copydoc IContextSettings::value() virtual BlackMisc::CStatusMessageList value(const QString &path, const QString &command, const QVariant &value); public slots: - /*! - * \copydoc IContextSettings::getNetworkSettings() - */ + //! \copydoc IContextSettings::getNetworkSettings() virtual BlackMisc::Settings::CSettingsNetwork getNetworkSettings() const; + //! \copydoc IContextSettings::getHotkeys() + virtual BlackMisc::Hardware::CKeyboardKeyList getHotkeys() const; private: BlackMisc::Settings::CSettingsNetwork m_settingsNetwork; - + BlackMisc::Hardware::CKeyboardKeyList m_hotkeys; }; } diff --git a/src/blackcore/context_settings_interface.cpp b/src/blackcore/context_settings_interface.cpp index a5f6c8e56..184523ad3 100644 --- a/src/blackcore/context_settings_interface.cpp +++ b/src/blackcore/context_settings_interface.cpp @@ -40,6 +40,14 @@ namespace BlackCore return this->m_dBusInterface->callDBusRet(QLatin1Literal("getNetworkSettings")); } + /* + * Relay tp DBus + */ + BlackMisc::Hardware::CKeyboardKeyList IContextSettings::getHotkeys() const + { + return this->m_dBusInterface->callDBusRet(QLatin1Literal("getHotkeys")); + } + /* * Relay to DBus, but make this no slot */ diff --git a/src/blackcore/context_settings_interface.h b/src/blackcore/context_settings_interface.h index d2f9d1e84..55349f89a 100644 --- a/src/blackcore/context_settings_interface.h +++ b/src/blackcore/context_settings_interface.h @@ -10,6 +10,7 @@ #include "blackmisc/genericdbusinterface.h" #include "blackmisc/settingutilities.h" #include "blackmisc/setnetwork.h" +#include "blackmisc/hwkeyboardkeylist.h" #include #include #include @@ -53,7 +54,7 @@ namespace BlackCore /*! * \brief Path for network settings - * \remark no to be confused with DBus paths + * \remarks no to be confused with DBus paths */ static const QString &PathNetworkSettings() { @@ -61,6 +62,26 @@ namespace BlackCore return s; } + /*! + * \brief Path for network settings + * \remarks no to be confused with DBus paths + */ + static const QString &PathRoot() + { + static QString s("root"); + return s; + } + + /*! + * \brief Path for hotkeys + * \remarks no to be confused with DBus paths + */ + static const QString &PathHotkeys() + { + static QString s("hotkeys"); + return s; + } + /*! * \brief DBus version constructor */ @@ -102,26 +123,25 @@ namespace BlackCore IContextSettings(QObject *parent = nullptr) : QObject(parent), m_dBusInterface(nullptr) {} signals: + //! \brief Settings have been changed + void changedSettings(); - /*! - * \brief Settings have been changed - */ + //! \brief Network settings have been changed void changedNetworkSettings(); public slots: - /*! - * \brief Network settings - */ + //! \brief Network settings virtual BlackMisc::Settings::CSettingsNetwork getNetworkSettings() const; + //! \brief Hotkeys + virtual BlackMisc::Hardware::CKeyboardKeyList getHotkeys() const; /*! * \brief DBus version of value method. * \remarks Basically an unwanted signature as this is different from the "local" signature and * contains explicit DBus types (a: QDbusArgument, b: type for conversion). * If this can be removed, fine. - * */ virtual BlackMisc::CStatusMessageList value(const QString &path, const QString &command, QDBusVariant value, int unifiedBlackMetaType); }; diff --git a/src/blackmisc/setnetwork.cpp b/src/blackmisc/setnetwork.cpp index f20069013..d4b49f69f 100644 --- a/src/blackmisc/setnetwork.cpp +++ b/src/blackmisc/setnetwork.cpp @@ -127,7 +127,7 @@ namespace BlackMisc // TODO: This needs to be refactored to a smarter way to delegate commands changedFlag = false; CStatusMessageList msgs; - if (path == CSettingsNetwork::PathTrafficServer()) + if (path == CSettingsNetwork::ValueTrafficServer()) { const CServer server = value.value(); if (command == CSettingsNetwork::CmdSetCurrentServer()) diff --git a/src/blackmisc/setnetwork.h b/src/blackmisc/setnetwork.h index 478140ff4..25e84833c 100644 --- a/src/blackmisc/setnetwork.h +++ b/src/blackmisc/setnetwork.h @@ -50,7 +50,7 @@ namespace BlackMisc * \brief Path * \return */ - static const QString &PathTrafficServer() + static const QString &ValueTrafficServer() { static const QString cmd("trafficserver"); return cmd; @@ -66,7 +66,6 @@ namespace BlackMisc /*! * Traffic network server objects - * \return */ BlackMisc::Network::CServerList getTrafficNetworkServers() const { return m_trafficNetworkServers; } @@ -77,7 +76,6 @@ namespace BlackMisc /*! * \brief URL of booking service - * \return */ QString getBookingServiceUrl() const { return "http://vatbook.euroutepro.com/xml2.php"; }