Refs T159 Context method to get unsaved settings keys with their human readable descriptions.

This commit is contained in:
Mathew Sutcliffe
2017-09-24 18:59:33 +01:00
parent 91f6652072
commit efe5419e9a
7 changed files with 37 additions and 0 deletions

View File

@@ -60,6 +60,9 @@ namespace BlackCore
//! Used when marshalling CLogSubscriptionHash, as a QHash with CIdentifier keys can't be marshalled
using CLogSubscriptionPair = QPair<BlackMisc::CIdentifier, QList<BlackMisc::CLogPattern>>;
//! Value type for settings keys with descriptions
using CSettingsDictionary = BlackMisc::CDictionary<QString, QString, QMap>;
//! Application context interface
class BLACKCORE_EXPORT IContextApplication : public CContext
{
@@ -152,6 +155,9 @@ namespace BlackCore
//! Get keys of all unsaved settings currently in core settings cache
virtual QStringList getUnsavedSettingsKeys() const = 0;
//! Get keys and descriptions of all unsaved settings currently in core settings cache
virtual BlackCore::Context::CSettingsDictionary getUnsavedSettingsKeysDescribed() const = 0;
//! Update local settings with settings from core
virtual void synchronizeLocalSettings() = 0;
@@ -219,5 +225,6 @@ const QDBusArgument &operator >>(const QDBusArgument &arg, BlackCore::Context::C
Q_DECLARE_METATYPE(BlackCore::Context::CLogSubscriptionHash)
Q_DECLARE_METATYPE(BlackCore::Context::CLogSubscriptionPair)
Q_DECLARE_METATYPE(BlackCore::Context::CSettingsDictionary)
#endif // guard

View File

@@ -90,6 +90,13 @@ namespace BlackCore
return QStringList();
}
//! \copydoc IContextApplication::getUnsavedSettingsKeys
virtual BlackCore::Context::CSettingsDictionary getUnsavedSettingsKeysDescribed() const override
{
logEmptyContextWarning(Q_FUNC_INFO);
return CSettingsDictionary();
}
//! \copydoc IContextApplication::synchronizeLocalSettings
virtual void synchronizeLocalSettings() override
{

View File

@@ -92,6 +92,15 @@ namespace BlackCore
return CSettingsCache::instance()->getAllUnsavedKeys();
}
CSettingsDictionary CContextApplication::getUnsavedSettingsKeysDescribed() const
{
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
const QStringList keys = CSettingsCache::instance()->getAllUnsavedKeys();
CSettingsDictionary result;
for (const QString &key : keys) { result.insert(key, CSettingsCache::instance()->getHumanReadableName(key)); }
return result;
}
void CContextApplication::synchronizeLocalSettings()
{
// no-op: proxy implements this method by calling getAllSettings

View File

@@ -54,6 +54,7 @@ namespace BlackCore
virtual void changeSettings(const BlackMisc::CValueCachePacket &settings, const BlackMisc::CIdentifier &origin) override;
virtual BlackMisc::CValueCachePacket getAllSettings() const override;
virtual QStringList getUnsavedSettingsKeys() const override;
virtual BlackCore::Context::CSettingsDictionary getUnsavedSettingsKeysDescribed() const override;
virtual void synchronizeLocalSettings() override;
virtual BlackMisc::CStatusMessage saveSettings(const QString &keyPrefix = {}) override;
virtual BlackMisc::CStatusMessage saveSettingsByKey(const QStringList &keys) override;

View File

@@ -111,6 +111,17 @@ namespace BlackCore
return this->m_dBusInterface->callDBusRet<QStringList>(QLatin1String("getUnsavedSettingsKeys"));
}
CSettingsDictionary CContextApplicationProxy::getUnsavedSettingsKeysDescribed() const
{
CSettingsDictionary result = this->m_dBusInterface->callDBusRet<CSettingsDictionary>(QLatin1String("getUnsavedSettingsKeysDescribed"));
for (auto it = result.begin(); it != result.end(); ++it)
{
// consolidate with local names to fill any gaps in remote names
if (it.value().isEmpty()) { it.value() = CSettingsCache::instance()->getHumanReadableName(it.key()); }
}
return result;
}
void CContextApplicationProxy::synchronizeLocalSettings()
{
// note this proxy method does not call synchronizeLocalSettings in core

View File

@@ -59,6 +59,7 @@ namespace BlackCore
virtual void changeSettings(const BlackMisc::CValueCachePacket &settings, const BlackMisc::CIdentifier &origin) override;
virtual BlackMisc::CValueCachePacket getAllSettings() const override;
virtual QStringList getUnsavedSettingsKeys() const override;
virtual BlackCore::Context::CSettingsDictionary getUnsavedSettingsKeysDescribed() const override;
virtual void synchronizeLocalSettings() override;
virtual BlackMisc::CStatusMessage saveSettings(const QString &keyPrefix = {}) override;
virtual BlackMisc::CStatusMessage saveSettingsByKey(const QStringList &keys) override;

View File

@@ -30,6 +30,7 @@ namespace BlackCore
{
qDBusRegisterMetaType<BlackCore::Context::CLogSubscriptionHash>();
qDBusRegisterMetaType<BlackCore::Context::CLogSubscriptionPair>();
qDBusRegisterMetaType<BlackCore::Context::CSettingsDictionary>();
qDBusRegisterMetaType<BlackCore::INetwork::ConnectionStatus>();
qDBusRegisterMetaType<BlackCore::INetwork::LoginMode>();
qDBusRegisterMetaType<BlackCore::IVoiceChannel::ConnectionStatus>();