From 7295ac5331afd4446afad78f849c1736d8a5b8ad Mon Sep 17 00:00:00 2001 From: Mat Sutcliffe Date: Tue, 13 Aug 2019 19:30:01 +0100 Subject: [PATCH] Ref T709 Encapsulate the CSettingsProvider pointer in a CSettingsAware base class. --- src/xswiftbus/dbusobject.cpp | 14 +------------- src/xswiftbus/dbusobject.h | 10 +--------- src/xswiftbus/settings.cpp | 14 ++++++++++++++ src/xswiftbus/settings.h | 20 ++++++++++++++++++++ 4 files changed, 36 insertions(+), 22 deletions(-) diff --git a/src/xswiftbus/dbusobject.cpp b/src/xswiftbus/dbusobject.cpp index 927fd9fdc..cf11063ec 100644 --- a/src/xswiftbus/dbusobject.cpp +++ b/src/xswiftbus/dbusobject.cpp @@ -11,7 +11,7 @@ namespace XSwiftBus { - CDBusObject::CDBusObject(CSettingsProvider *settingsProvider) : m_settingsProvider(settingsProvider) + CDBusObject::CDBusObject(CSettingsProvider *settingsProvider) : CSettingsAware(settingsProvider) {} CDBusObject::~CDBusObject() @@ -73,18 +73,6 @@ namespace XSwiftBus } } - CSettings CDBusObject::getSettings() const - { - if (m_settingsProvider) { return m_settingsProvider->getSettings(); } - return CSettings(); - } - - bool CDBusObject::setSettings(const CSettings &s) - { - if (m_settingsProvider) { m_settingsProvider->setSettings(s); } - return false; - } - void CDBusObject::dbusObjectPathUnregisterFunction(DBusConnection *connection, void *data) { (void)connection; // unused diff --git a/src/xswiftbus/dbusobject.h b/src/xswiftbus/dbusobject.h index 7b13c33c0..8bf5fec44 100644 --- a/src/xswiftbus/dbusobject.h +++ b/src/xswiftbus/dbusobject.h @@ -18,7 +18,7 @@ namespace XSwiftBus { //! DBus base object - class CDBusObject + class CDBusObject : public CSettingsAware { public: //! Constructor @@ -80,14 +80,6 @@ namespace XSwiftBus //! Invoke all pending DBus calls. They will be executed in the calling thread. void invokeQueuedDBusCalls(); - //! Get the settings - CSettings getSettings() const; - - //! Set the settings - bool setSettings(const CSettings &s); - - CSettingsProvider *m_settingsProvider; //!< get the settings from here - private: static void dbusObjectPathUnregisterFunction(DBusConnection *connection, void *data); static DBusHandlerResult dbusObjectPathMessageFunction(DBusConnection *connection, DBusMessage *message, void *data); diff --git a/src/xswiftbus/settings.cpp b/src/xswiftbus/settings.cpp index 543ae0f2c..e253c918d 100644 --- a/src/xswiftbus/settings.cpp +++ b/src/xswiftbus/settings.cpp @@ -39,5 +39,19 @@ namespace XSwiftBus m_pluginSettings = settings; } + CSettingsAware::CSettingsAware(CSettingsProvider *provider) : m_provider(provider) + { + // void + } + + CSettings CSettingsAware::getSettings() const + { + return m_provider->getSettings(); + } + + void CSettingsAware::setSettings(const CSettings &settings) + { + m_provider->setSettings(settings); + } } // ns diff --git a/src/xswiftbus/settings.h b/src/xswiftbus/settings.h index 7e4e03f26..8bcbb54fe 100644 --- a/src/xswiftbus/settings.h +++ b/src/xswiftbus/settings.h @@ -48,6 +48,26 @@ namespace XSwiftBus mutable std::mutex m_settingsMutex; CSettings m_pluginSettings; //!< owner of the settings }; + + //! Something having access to the settings + class CSettingsAware + { + protected: + //! Constructor + CSettingsAware(CSettingsProvider *provider); + + //! Destructor + ~CSettingsAware() = default; + + //! \copydoc CSettingsProvider::getSettings + CSettings getSettings() const; + + //! \copydoc CSettingsProvider::setSettings + void setSettings(const CSettings &settings); + + private: + CSettingsProvider *m_provider = nullptr; + }; } // ns #endif