diff --git a/src/blackcore/application.cpp b/src/blackcore/application.cpp index c5c26bbc1..0120fec3b 100644 --- a/src/blackcore/application.cpp +++ b/src/blackcore/application.cpp @@ -150,7 +150,7 @@ namespace BlackCore bool s = this->startHookIn(); - // trigger loading of settings in appropriate scenarios + // trigger loading and saving of settings in appropriate scenarios if (this->m_coreFacadeConfig.getModeApplication() != CCoreFacadeConfig::Remote) { CStatusMessage m = CSettingsCache::instance()->loadFromStore(); @@ -159,6 +159,8 @@ namespace BlackCore m.setCategories(getLogCategories()); CLogMessage::preformatted(m); } + + CSettingsCache::instance()->enableLocalSave(); } if (waitForStart) diff --git a/src/blackcore/contextapplicationimpl.cpp b/src/blackcore/contextapplicationimpl.cpp index e46327b2d..3bd6f2557 100644 --- a/src/blackcore/contextapplicationimpl.cpp +++ b/src/blackcore/contextapplicationimpl.cpp @@ -24,7 +24,6 @@ namespace BlackCore CContextApplication::CContextApplication(CCoreFacadeConfig::ContextMode mode, CCoreFacade *runtime) : IContextApplication(mode, runtime) { - connect(CSettingsCache::instance(), &CSettingsCache::valuesSaveRequested, CSettingsCache::instance(), &CSettingsCache::saveToStoreByPacket); } CContextApplication *CContextApplication::registerWithDBus(BlackMisc::CDBusServer *server) diff --git a/src/blackmisc/settingscache.cpp b/src/blackmisc/settingscache.cpp index d647c8b44..43a055698 100644 --- a/src/blackmisc/settingscache.cpp +++ b/src/blackmisc/settingscache.cpp @@ -34,6 +34,11 @@ namespace BlackMisc return saveToFiles(persistentStore(), keyPrefix); } + void CSettingsCache::enableLocalSave() + { + connect(CSettingsCache::instance(), &CSettingsCache::valuesSaveRequested, CSettingsCache::instance(), &CSettingsCache::saveToStoreByPacket); + } + void CSettingsCache::saveToStoreByPacket(const CValueCachePacket &values) { CStatusMessage status = saveToFiles(persistentStore(), values.toVariantMap()); diff --git a/src/blackmisc/settingscache.h b/src/blackmisc/settingscache.h index 71dd24018..743d020c6 100644 --- a/src/blackmisc/settingscache.h +++ b/src/blackmisc/settingscache.h @@ -34,9 +34,9 @@ namespace BlackMisc //! Save core settings to disk. BlackMisc::CStatusMessage saveToStore(const QString &keyPrefix = {}); - //! Save individual settings to disk. - //! Core application context connects this slot to the valuesSaveRequested signal. - void saveToStoreByPacket(const CValueCachePacket &values); + //! Connects signal CValueCache::valuesSaveRequested to a private slot that saves the values. + //! In a dbus distributed scenario, only call this method in the core process. + void enableLocalSave(); //! Load core settings from disk. BlackMisc::CStatusMessage loadFromStore(); @@ -49,6 +49,7 @@ namespace BlackMisc private: CSettingsCache(); + void saveToStoreByPacket(const CValueCachePacket &values); }; /*!