aboutsummaryrefslogtreecommitdiff
path: root/lib/settings.h
diff options
context:
space:
mode:
authorKitsune Ral <Kitsune-Ral@users.sf.net>2019-08-03 17:29:52 +0900
committerGitHub <noreply@github.com>2019-08-03 17:29:52 +0900
commit66e116b7b1e848e80577a0229c8995db0a54932e (patch)
tree763340439a0f4034e9c829d76cb1ffe9766b83c5 /lib/settings.h
parent5b236dfe895c7766002559570aa29c9033009228 (diff)
parentc05ade838f0fce81f2bbe80a3295618a8a26ff52 (diff)
downloadlibquotient-66e116b7b1e848e80577a0229c8995db0a54932e.tar.gz
libquotient-66e116b7b1e848e80577a0229c8995db0a54932e.zip
Merge pull request #295 from marcdeop/140_impose_coding_standard
140 impose coding standard
Diffstat (limited to 'lib/settings.h')
-rw-r--r--lib/settings.h244
1 files changed, 119 insertions, 125 deletions
diff --git a/lib/settings.h b/lib/settings.h
index 61e5232a..6747631e 100644
--- a/lib/settings.h
+++ b/lib/settings.h
@@ -13,145 +13,139 @@
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#pragma once
#include <QtCore/QSettings>
-#include <QtCore/QVector>
#include <QtCore/QUrl>
+#include <QtCore/QVector>
class QVariant;
-namespace QMatrixClient
-{
- class Settings: public QSettings
- {
- Q_OBJECT
- public:
- /**
- * Use this function before creating any Settings objects in order
- * to setup a read-only location where configuration has previously
- * been stored. This will provide an additional fallback in case of
- * renaming the organisation/application.
- */
- static void setLegacyNames(const QString& organizationName,
- const QString& applicationName = {});
+namespace QMatrixClient {
+class Settings : public QSettings {
+ Q_OBJECT
+public:
+ /**
+ * Use this function before creating any Settings objects in order
+ * to setup a read-only location where configuration has previously
+ * been stored. This will provide an additional fallback in case of
+ * renaming the organisation/application.
+ */
+ static void setLegacyNames(const QString& organizationName,
+ const QString& applicationName = {});
#if defined(_MSC_VER) && _MSC_VER < 1900
- // VS 2013 (and probably older) aren't friends with 'using' statements
- // that involve private constructors
- explicit Settings(QObject* parent = 0) : QSettings(parent) { }
+ // VS 2013 (and probably older) aren't friends with 'using' statements
+ // that involve private constructors
+ explicit Settings(QObject* parent = 0) : QSettings(parent) {}
#else
- using QSettings::QSettings;
+ using QSettings::QSettings;
#endif
- Q_INVOKABLE void setValue(const QString &key,
- const QVariant &value);
- Q_INVOKABLE QVariant value(const QString &key,
- const QVariant &defaultValue = {}) const;
-
- template <typename T>
- T get(const QString& key, const T& defaultValue = {}) const
- {
- const auto qv = value(key, QVariant());
- return qv.isValid() && qv.canConvert<T>() ? qv.value<T>()
- : defaultValue;
- }
-
- Q_INVOKABLE bool contains(const QString& key) const;
- Q_INVOKABLE QStringList childGroups() const;
-
- private:
- static QString legacyOrganizationName;
- static QString legacyApplicationName;
-
- protected:
- QSettings legacySettings { legacyOrganizationName,
- legacyApplicationName };
- };
+ Q_INVOKABLE void setValue(const QString& key, const QVariant& value);
+ Q_INVOKABLE QVariant value(const QString& key,
+ const QVariant& defaultValue = {}) const;
- class SettingsGroup: public Settings
+ template <typename T>
+ T get(const QString& key, const T& defaultValue = {}) const
{
- public:
- template <typename... ArgTs>
- explicit SettingsGroup(QString path, ArgTs&&... qsettingsArgs)
- : Settings(std::forward<ArgTs>(qsettingsArgs)...)
- , groupPath(std::move(path))
- { }
-
- Q_INVOKABLE bool contains(const QString& key) const;
- Q_INVOKABLE QVariant value(const QString &key,
- const QVariant &defaultValue = {}) const;
-
- template <typename T>
- T get(const QString& key, const T& defaultValue = {}) const
- {
- const auto qv = value(key, QVariant());
- return qv.isValid() && qv.canConvert<T>() ? qv.value<T>()
- : defaultValue;
- }
-
- Q_INVOKABLE QString group() const;
- Q_INVOKABLE QStringList childGroups() const;
- Q_INVOKABLE void setValue(const QString &key,
- const QVariant &value);
-
- Q_INVOKABLE void remove(const QString& key);
-
- private:
- QString groupPath;
- };
-
-#define QMC_DECLARE_SETTING(type, propname, setter) \
- Q_PROPERTY(type propname READ propname WRITE setter) \
- public: \
- type propname() const; \
- void setter(type newValue); \
- private:
-
-#define QMC_DEFINE_SETTING(classname, type, propname, qsettingname, defaultValue, setter) \
-type classname::propname() const \
-{ \
- return get<type>(QStringLiteral(qsettingname), defaultValue); \
-} \
-\
-void classname::setter(type newValue) \
-{ \
- setValue(QStringLiteral(qsettingname), std::move(newValue)); \
-} \
-
- class AccountSettings: public SettingsGroup
+ const auto qv = value(key, QVariant());
+ return qv.isValid() && qv.canConvert<T>() ? qv.value<T>() : defaultValue;
+ }
+
+ Q_INVOKABLE bool contains(const QString& key) const;
+ Q_INVOKABLE QStringList childGroups() const;
+
+private:
+ static QString legacyOrganizationName;
+ static QString legacyApplicationName;
+
+protected:
+ QSettings legacySettings { legacyOrganizationName, legacyApplicationName };
+};
+
+class SettingsGroup : public Settings {
+public:
+ template <typename... ArgTs>
+ explicit SettingsGroup(QString path, ArgTs&&... qsettingsArgs)
+ : Settings(std::forward<ArgTs>(qsettingsArgs)...)
+ , groupPath(std::move(path))
+ {}
+
+ Q_INVOKABLE bool contains(const QString& key) const;
+ Q_INVOKABLE QVariant value(const QString& key,
+ const QVariant& defaultValue = {}) const;
+
+ template <typename T>
+ T get(const QString& key, const T& defaultValue = {}) const
{
- Q_OBJECT
- Q_PROPERTY(QString userId READ userId CONSTANT)
- QMC_DECLARE_SETTING(QString, deviceId, setDeviceId)
- QMC_DECLARE_SETTING(QString, deviceName, setDeviceName)
- QMC_DECLARE_SETTING(bool, keepLoggedIn, setKeepLoggedIn)
- /** \deprecated \sa setAccessToken */
- Q_PROPERTY(QString accessToken READ accessToken WRITE setAccessToken)
- Q_PROPERTY(QByteArray encryptionAccountPickle READ encryptionAccountPickle WRITE setEncryptionAccountPickle)
- public:
- template <typename... ArgTs>
- explicit AccountSettings(const QString& accountId, ArgTs... qsettingsArgs)
- : SettingsGroup("Accounts/" + accountId, qsettingsArgs...)
- { }
-
- QString userId() const;
-
- QUrl homeserver() const;
- void setHomeserver(const QUrl& url);
-
- /** \deprecated \sa setToken */
- QString accessToken() const;
- /** \deprecated Storing accessToken in QSettings is unsafe,
- * see QMatrixClient/Quaternion#181 */
- void setAccessToken(const QString& accessToken);
- Q_INVOKABLE void clearAccessToken();
-
- QByteArray encryptionAccountPickle();
- void setEncryptionAccountPickle(const QByteArray& encryptionAccountPickle);
- Q_INVOKABLE void clearEncryptionAccountPickle();
- };
-} // namespace QMatrixClient
+ const auto qv = value(key, QVariant());
+ return qv.isValid() && qv.canConvert<T>() ? qv.value<T>() : defaultValue;
+ }
+
+ Q_INVOKABLE QString group() const;
+ Q_INVOKABLE QStringList childGroups() const;
+ Q_INVOKABLE void setValue(const QString& key, const QVariant& value);
+
+ Q_INVOKABLE void remove(const QString& key);
+
+private:
+ QString groupPath;
+};
+
+#define QMC_DECLARE_SETTING(type, propname, setter) \
+ Q_PROPERTY(type propname READ propname WRITE setter) \
+public: \
+ type propname() const; \
+ void setter(type newValue); \
+ \
+private:
+
+#define QMC_DEFINE_SETTING(classname, type, propname, qsettingname, \
+ defaultValue, setter) \
+ type classname::propname() const \
+ { \
+ return get<type>(QStringLiteral(qsettingname), defaultValue); \
+ } \
+ \
+ void classname::setter(type newValue) \
+ { \
+ setValue(QStringLiteral(qsettingname), std::move(newValue)); \
+ }
+
+class AccountSettings : public SettingsGroup {
+ Q_OBJECT
+ Q_PROPERTY(QString userId READ userId CONSTANT)
+ QMC_DECLARE_SETTING(QString, deviceId, setDeviceId)
+ QMC_DECLARE_SETTING(QString, deviceName, setDeviceName)
+ QMC_DECLARE_SETTING(bool, keepLoggedIn, setKeepLoggedIn)
+ /** \deprecated \sa setAccessToken */
+ Q_PROPERTY(QString accessToken READ accessToken WRITE setAccessToken)
+ Q_PROPERTY(QByteArray encryptionAccountPickle READ encryptionAccountPickle
+ WRITE setEncryptionAccountPickle)
+public:
+ template <typename... ArgTs>
+ explicit AccountSettings(const QString& accountId, ArgTs... qsettingsArgs)
+ : SettingsGroup("Accounts/" + accountId, qsettingsArgs...)
+ {}
+
+ QString userId() const;
+
+ QUrl homeserver() const;
+ void setHomeserver(const QUrl& url);
+
+ /** \deprecated \sa setToken */
+ QString accessToken() const;
+ /** \deprecated Storing accessToken in QSettings is unsafe,
+ * see QMatrixClient/Quaternion#181 */
+ void setAccessToken(const QString& accessToken);
+ Q_INVOKABLE void clearAccessToken();
+
+ QByteArray encryptionAccountPickle();
+ void setEncryptionAccountPickle(const QByteArray& encryptionAccountPickle);
+ Q_INVOKABLE void clearEncryptionAccountPickle();
+};
+} // namespace QMatrixClient