/***************************************************************************
- * Copyright (C) 2005-2018 by the Quassel Project *
+ * Copyright (C) 2005-2019 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#include <QStringList>
-
#include "settings.h"
-const int VERSION = 1; /// Settings version for backwords/forwards incompatible changes
+#include <QStringList>
+
+const int VERSION = 1; /// Settings version for backwords/forwards incompatible changes
// This is used if no VersionMinor key exists, e.g. upgrading from a Quassel version before this
// change. This shouldn't be increased from 1; instead, change the logic in Core::Core() and
// QtUiApplication::init() to handle upgrading and downgrading.
-const int VERSION_MINOR_INITIAL = 1; /// Initial settings version for compatible changes
+const int VERSION_MINOR_INITIAL = 1; /// Initial settings version for compatible changes
QHash<QString, QVariant> Settings::_settingsCache;
QHash<QString, bool> Settings::_settingsKeyPersistedCache;
QHash<QString, std::shared_ptr<SettingsChangeNotifier>> Settings::_settingsChangeNotifier;
#ifdef Q_OS_MAC
-# define create_qsettings QSettings s(QCoreApplication::organizationDomain(), _appName)
+# define create_qsettings QSettings s(QCoreApplication::organizationDomain(), _appName)
#else
-# define create_qsettings QSettings s(fileName(), format())
+# define create_qsettings QSettings s(fileName(), format())
#endif
Settings::Settings(QString group, QString appName)
- : _group(std::move(group)), _appName(std::move(appName))
+ : _group(std::move(group))
+ , _appName(std::move(appName))
{}
-
-void Settings::setGroup(QString group) {
- _group = std::move(group);
-}
-
-
-void Settings::notify(const QString &key, QObject *receiver, const char *slot) const
+void Settings::setGroup(QString group)
{
- QObject::connect(notifier(normalizedKey(_group, key)), SIGNAL(valueChanged(const QVariant &)),
- receiver, slot);
+ _group = std::move(group);
}
-
-void Settings::initAndNotify(const QString &key, QObject *receiver, const char *slot, const QVariant &defaultValue) const
+QString Settings::keyForNotify(const QString& key) const
{
- notify(key, receiver, slot);
- emit notifier(normalizedKey(_group, key))->valueChanged(localValue(key, defaultValue));
+ return key;
}
-
uint Settings::version() const
{
// we don't cache this value, and we ignore the group
return ver;
}
-
uint Settings::versionMinor() const
{
// Don't cache this value; ignore the group
// const_cast is ok, because setVersionMinor() doesn't actually change this instance
const_cast<Settings*>(this)->setVersionMinor(VERSION_MINOR_INITIAL);
return VERSION_MINOR_INITIAL;
- } else {
+ }
+ else {
return verMinor;
}
}
-
void Settings::setVersionMinor(const uint versionMinor)
{
// Don't cache this value; ignore the group
s.setValue("Config/VersionMinor", versionMinor);
}
-
QSettings::Format Settings::format() const
{
#ifdef Q_OS_WIN
#endif
}
-
bool Settings::sync()
{
create_qsettings;
s.sync();
switch (s.status()) {
- case QSettings::NoError:
- return true;
- default:
- return false;
+ case QSettings::NoError:
+ return true;
+ default:
+ return false;
}
}
-
bool Settings::isWritable() const
{
create_qsettings;
return s.isWritable();
}
-
QStringList Settings::allLocalKeys() const
{
create_qsettings;
return res;
}
-
-QStringList Settings::localChildKeys(const QString &rootkey) const
+QStringList Settings::localChildKeys(const QString& rootkey) const
{
QString g;
if (rootkey.isEmpty())
return res;
}
-
-QStringList Settings::localChildGroups(const QString &rootkey) const
+QStringList Settings::localChildGroups(const QString& rootkey) const
{
QString g;
if (rootkey.isEmpty())
return res;
}
-
-void Settings::setLocalValue(const QString &key, const QVariant &data)
+void Settings::setLocalValue(const QString& key, const QVariant& data)
{
QString normKey = normalizedKey(_group, key);
create_qsettings;
}
}
-
-QVariant Settings::localValue(const QString &key, const QVariant &def) const
+QVariant Settings::localValue(const QString& key, const QVariant& def) const
{
QString normKey = normalizedKey(_group, key);
if (!isCached(normKey)) {
return def;
}
-
-bool Settings::localKeyExists(const QString &key) const
+bool Settings::localKeyExists(const QString& key) const
{
QString normKey = normalizedKey(_group, key);
if (!isKeyPersistedCached(normKey)) {
return cacheKeyPersisted(normKey);
}
-
-void Settings::removeLocalKey(const QString &key)
+void Settings::removeLocalKey(const QString& key)
{
create_qsettings;
s.beginGroup(_group);
}
}
-
QString Settings::fileName() const
{
- return Quassel::configDirPath() + _appName
- + ((format() == QSettings::NativeFormat) ? QLatin1String(".conf") : QLatin1String(".ini"));
+ return Quassel::configDirPath() + _appName + ((format() == QSettings::NativeFormat) ? QLatin1String(".conf") : QLatin1String(".ini"));
}
-
-QString Settings::normalizedKey(const QString &group, const QString &key) const
+QString Settings::normalizedKey(const QString& group, const QString& key) const
{
if (group.isEmpty())
return key;
return group + '/' + key;
}
-
-void Settings::setCacheKeyPersisted(const QString &normKey, bool exists) const
+void Settings::setCacheKeyPersisted(const QString& normKey, bool exists) const
{
_settingsKeyPersistedCache[normKey] = exists;
}
-
-bool Settings::cacheKeyPersisted(const QString &normKey) const
+bool Settings::cacheKeyPersisted(const QString& normKey) const
{
return _settingsKeyPersistedCache[normKey];
}
-
-bool Settings::isKeyPersistedCached(const QString &normKey) const
+bool Settings::isKeyPersistedCached(const QString& normKey) const
{
return _settingsKeyPersistedCache.contains(normKey);
}
-
-void Settings::setCacheValue(const QString &normKey, const QVariant &data) const
+void Settings::setCacheValue(const QString& normKey, const QVariant& data) const
{
_settingsCache[normKey] = data;
}
-
-QVariant Settings::cacheValue(const QString &normKey) const
+QVariant Settings::cacheValue(const QString& normKey) const
{
return _settingsCache[normKey];
}
-
-bool Settings::isCached(const QString &normKey) const
+bool Settings::isCached(const QString& normKey) const
{
return _settingsCache.contains(normKey);
}
-
-SettingsChangeNotifier *Settings::notifier(const QString &normKey) const
+SettingsChangeNotifier* Settings::notifier(const QString& normKey) const
{
if (!hasNotifier(normKey))
_settingsChangeNotifier[normKey] = std::make_shared<SettingsChangeNotifier>();
return _settingsChangeNotifier[normKey].get();
}
-
-bool Settings::hasNotifier(const QString &normKey) const
+bool Settings::hasNotifier(const QString& normKey) const
{
return _settingsChangeNotifier.contains(normKey);
}