diff --git a/src/blackcore/contextapplication.h b/src/blackcore/contextapplication.h index 213f15809..460b55e92 100644 --- a/src/blackcore/contextapplication.h +++ b/src/blackcore/contextapplication.h @@ -160,12 +160,18 @@ namespace BlackCore //! Get all settings currently in core settings cache virtual BlackMisc::CValueCachePacket getAllSettings() const = 0; + //! Get keys of all unsaved settings currently in core settings cache + virtual QStringList getUnsavedSettingsKeys() 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; + //! Save core settings to disk + virtual BlackMisc::CStatusMessage saveSettingsByKey(const QStringList &keys) = 0; + //! Load core settings from disk virtual BlackMisc::CStatusMessage loadSettings() = 0; diff --git a/src/blackcore/contextapplicationempty.h b/src/blackcore/contextapplicationempty.h index d21f5e6b2..65bf5de8d 100644 --- a/src/blackcore/contextapplicationempty.h +++ b/src/blackcore/contextapplicationempty.h @@ -82,6 +82,13 @@ namespace BlackCore return BlackMisc::CValueCachePacket(); } + //! \copydoc IContextApplication::getUnsavedSettingsKeys + virtual QStringList getUnsavedSettingsKeys() const override + { + logEmptyContextWarning(Q_FUNC_INFO); + return QStringList(); + } + //! \copydoc IContextApplication::synchronizeLocalSettings virtual void synchronizeLocalSettings() override { @@ -96,6 +103,14 @@ namespace BlackCore return BlackMisc::CStatusMessage(); } + //! \copydoc IContextApplication::saveSettingsByKey + virtual BlackMisc::CStatusMessage saveSettingsByKey(const QStringList &keys) override + { + Q_UNUSED(keys); + logEmptyContextWarning(Q_FUNC_INFO); + return BlackMisc::CStatusMessage(); + } + //! \copydoc IContextApplication::loadSettings virtual BlackMisc::CStatusMessage loadSettings() override { diff --git a/src/blackcore/contextapplicationimpl.cpp b/src/blackcore/contextapplicationimpl.cpp index 17cba1aa2..cc79cb746 100644 --- a/src/blackcore/contextapplicationimpl.cpp +++ b/src/blackcore/contextapplicationimpl.cpp @@ -84,6 +84,12 @@ namespace BlackCore return CSettingsCache::instance()->getAllValuesWithTimestamps(); } + QStringList CContextApplication::getUnsavedSettingsKeys() const + { + if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } + return CSettingsCache::instance()->getAllUnsavedKeys(); + } + void CContextApplication::synchronizeLocalSettings() { // no-op: proxy implements this method by calling getAllSettings @@ -95,6 +101,12 @@ namespace BlackCore return CSettingsCache::instance()->saveToStore(keyPrefix); } + BlackMisc::CStatusMessage CContextApplication::saveSettingsByKey(const QStringList &keys) + { + if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << keys.join(", "); } + return CSettingsCache::instance()->saveToStore(keys); + } + BlackMisc::CStatusMessage CContextApplication::loadSettings() { if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } diff --git a/src/blackcore/contextapplicationimpl.h b/src/blackcore/contextapplicationimpl.h index ae40988b7..62473a618 100644 --- a/src/blackcore/contextapplicationimpl.h +++ b/src/blackcore/contextapplicationimpl.h @@ -64,12 +64,18 @@ namespace BlackCore //! \copydoc IContextApplication::getAllSettings virtual BlackMisc::CValueCachePacket getAllSettings() const override; + //! \copydoc IContextApplication::getUnsavedSettingsKeys + virtual QStringList getUnsavedSettingsKeys() const override; + //! \copydoc IContextApplication::synchronizeLocalSettings virtual void synchronizeLocalSettings() override; //! \copydoc IContextApplication::saveSettings virtual BlackMisc::CStatusMessage saveSettings(const QString &keyPrefix = {}) override; + //! \copydoc IContextApplication::saveSettingsByKey + virtual BlackMisc::CStatusMessage saveSettingsByKey(const QStringList &keys) override; + //! \copydoc IContextApplication::loadSettings virtual BlackMisc::CStatusMessage loadSettings() override; diff --git a/src/blackcore/contextapplicationproxy.cpp b/src/blackcore/contextapplicationproxy.cpp index d40ca79bd..f785a6884 100644 --- a/src/blackcore/contextapplicationproxy.cpp +++ b/src/blackcore/contextapplicationproxy.cpp @@ -103,6 +103,11 @@ namespace BlackCore return this->m_dBusInterface->callDBusRet(QLatin1Literal("getAllSettings")); } + QStringList CContextApplicationProxy::getUnsavedSettingsKeys() const + { + return this->m_dBusInterface->callDBusRet(QLatin1Literal("getUnsavedSettingsKeys")); + } + void CContextApplicationProxy::synchronizeLocalSettings() { // note this proxy method does not call synchronizeLocalSettings in core @@ -114,6 +119,11 @@ namespace BlackCore return this->m_dBusInterface->callDBusRet(QLatin1Literal("saveSettings"), keyPrefix); } + BlackMisc::CStatusMessage CContextApplicationProxy::saveSettingsByKey(const QStringList &keys) + { + return this->m_dBusInterface->callDBusRet(QLatin1Literal("saveSettingsByKey"), keys); + } + BlackMisc::CStatusMessage CContextApplicationProxy::loadSettings() { return this->m_dBusInterface->callDBusRet(QLatin1Literal("loadSettings")); diff --git a/src/blackcore/contextapplicationproxy.h b/src/blackcore/contextapplicationproxy.h index 26b986d88..f66e84551 100644 --- a/src/blackcore/contextapplicationproxy.h +++ b/src/blackcore/contextapplicationproxy.h @@ -69,12 +69,18 @@ namespace BlackCore //! \copydoc IContextApplication::getAllSettings virtual BlackMisc::CValueCachePacket getAllSettings() const override; + //! \copydoc IContextApplication::getUnsavedSettingsKeys + virtual QStringList getUnsavedSettingsKeys() const override; + //! \copydoc IContextApplication::synchronizeLocalSettings virtual void synchronizeLocalSettings() override; //! \copydoc IContextApplication::saveSettings virtual BlackMisc::CStatusMessage saveSettings(const QString &keyPrefix = {}) override; + //! \copydoc IContextApplication::saveSettingsByKey + virtual BlackMisc::CStatusMessage saveSettingsByKey(const QStringList &keys) override; + //! \copydoc IContextApplication::loadSettings virtual BlackMisc::CStatusMessage loadSettings() override;