diff --git a/src/blackcore/context_application.h b/src/blackcore/context_application.h index c090f23b5..47dca3d9b 100644 --- a/src/blackcore/context_application.h +++ b/src/blackcore/context_application.h @@ -104,6 +104,12 @@ namespace BlackCore //! \note This is the function which relays cache changes via DBus. virtual void changeSettings(const BlackMisc::CVariantMap &settings, const BlackMisc::CIdentifier &origin); + //! Get all settings currently in core settings cache + virtual BlackMisc::CVariantMap getAllSettings() const = 0; + + //! Update local settings with settings from core + virtual void synchronizeLocalSettings() = 0; + //! Save core settings to disk virtual BlackMisc::CStatusMessage saveSettings(const QString &keyPrefix = {}) = 0; diff --git a/src/blackcore/context_application_impl.cpp b/src/blackcore/context_application_impl.cpp index f53a80813..3bbeb3298 100644 --- a/src/blackcore/context_application_impl.cpp +++ b/src/blackcore/context_application_impl.cpp @@ -47,6 +47,17 @@ namespace BlackCore emit this->settingsChanged(settings, origin); } + BlackMisc::CVariantMap CContextApplication::getAllSettings() const + { + if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } + return CSettingsCache::instance()->getAllValues(); + } + + void CContextApplication::synchronizeLocalSettings() + { + // no-op: proxy implements this method by calling getAllSettings + } + BlackMisc::CStatusMessage CContextApplication::saveSettings(const QString &keyPrefix) { if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << keyPrefix; } diff --git a/src/blackcore/context_application_impl.h b/src/blackcore/context_application_impl.h index 6899dfc53..697e23aa7 100644 --- a/src/blackcore/context_application_impl.h +++ b/src/blackcore/context_application_impl.h @@ -35,6 +35,12 @@ namespace BlackCore //! \copydoc IContextApplication::changeSettings virtual void changeSettings(const BlackMisc::CVariantMap &settings, const BlackMisc::CIdentifier &origin) override; + //! \copydoc IContextApplication::getAllSettings + virtual BlackMisc::CVariantMap getAllSettings() const override; + + //! \copydoc IContextApplication::synchronizeLocalSettings + virtual void synchronizeLocalSettings() override; + //! \copydoc IContextApplication::saveSettings virtual BlackMisc::CStatusMessage saveSettings(const QString &keyPrefix = {}) override; diff --git a/src/blackcore/context_application_proxy.cpp b/src/blackcore/context_application_proxy.cpp index 82f1bc9c3..fc1d8f384 100644 --- a/src/blackcore/context_application_proxy.cpp +++ b/src/blackcore/context_application_proxy.cpp @@ -67,6 +67,17 @@ namespace BlackCore this->m_dBusInterface->callDBus(QLatin1Literal("changeSettings"), settings, origin); } + BlackMisc::CVariantMap CContextApplicationProxy::getAllSettings() const + { + return this->m_dBusInterface->callDBusRet(QLatin1Literal("getAllSettings")); + } + + void CContextApplicationProxy::synchronizeLocalSettings() + { + // note this proxy method does not call synchronizeLocalSettings in core + CSettingsCache::instance()->insertValues(this->getAllSettings()); + } + BlackMisc::CStatusMessage CContextApplicationProxy::saveSettings(const QString &keyPrefix) { return this->m_dBusInterface->callDBusRet(QLatin1Literal("saveSettings"), keyPrefix); diff --git a/src/blackcore/context_application_proxy.h b/src/blackcore/context_application_proxy.h index 8904a07ed..de91a9e4c 100644 --- a/src/blackcore/context_application_proxy.h +++ b/src/blackcore/context_application_proxy.h @@ -31,6 +31,12 @@ namespace BlackCore //! \copydoc IContextApplication::changeSettings virtual void changeSettings(const BlackMisc::CVariantMap &settings, const BlackMisc::CIdentifier &origin) override; + //! \copydoc IContextApplication::getAllSettings + virtual BlackMisc::CVariantMap getAllSettings() const override; + + //! \copydoc IContextApplication::synchronizeLocalSettings + virtual void synchronizeLocalSettings() override; + //! \copydoc IContextApplication::saveSettings virtual BlackMisc::CStatusMessage saveSettings(const QString &keyPrefix = {}) override; diff --git a/src/swiftgui_standard/swiftguistd_init.cpp b/src/swiftgui_standard/swiftguistd_init.cpp index 786526524..83c4b410e 100644 --- a/src/swiftgui_standard/swiftguistd_init.cpp +++ b/src/swiftgui_standard/swiftguistd_init.cpp @@ -211,6 +211,8 @@ void SwiftGuiStd::initGuiSignals() void SwiftGuiStd::initialDataReads() { + this->getIContextApplication()->synchronizeLocalSettings(); + this->setContextAvailability(); if (!this->m_coreAvailable) {