From d8e13159711576394099f8954368aeb9da7fa87a Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 10 Mar 2016 14:45:15 +0100 Subject: AccountsController --- framework/settings/settings.cpp | 30 ++++++++++++++++++++++++++---- framework/settings/settings.h | 2 ++ 2 files changed, 28 insertions(+), 4 deletions(-) (limited to 'framework/settings') diff --git a/framework/settings/settings.cpp b/framework/settings/settings.cpp index a4e28190..246c4a99 100644 --- a/framework/settings/settings.cpp +++ b/framework/settings/settings.cpp @@ -26,21 +26,24 @@ using namespace Kube; Settings::Settings(QObject *parent) - : QObject(parent) + : QObject(parent), + mLoaded(false) { } Settings::Settings(const QByteArray &id, QObject *parent) : QObject(parent), - mIdentifier(id) + mIdentifier(id), + mLoaded(false) { load(); } Settings::Settings(const Settings &other) : QObject(other.parent()), - mIdentifier(other.mIdentifier) + mIdentifier(other.mIdentifier), + mLoaded(false) { load(); } @@ -59,8 +62,19 @@ void Settings::save() { qWarning() << "Saving" << mIdentifier; auto settings = getSettings(); + + for (const auto &p : dynamicPropertyNames()) { + qWarning() << "setting " << p << property(p); + if (p == "identifier") { + continue; + } + settings->setValue(p, property(p)); + } for (int i = metaObject()->propertyOffset(); i < metaObject()->propertyCount(); i++) { const auto p = metaObject()->property(i).name(); + if (p == QByteArray("identifier")) { + continue; + } qWarning() << "setting " << p << property(p); settings->setValue(p, property(p)); } @@ -69,7 +83,10 @@ void Settings::save() void Settings::load() { - qWarning() << "loading" << mIdentifier; + if (mLoaded) { + return; + } + mLoaded = true; for (int i = metaObject()->propertyOffset(); i < metaObject()->propertyCount(); i++) { auto p = metaObject()->property(i).name(); setProperty(p, QVariant()); @@ -114,6 +131,11 @@ Identity Account::primaryIdentity() const return Identity(property("primaryIdentityId").toByteArray()); } +QByteArray Account::type() const +{ + return property("type").toByteArray(); +} + Identity::Identity(const QByteArray &identifier) : Settings("identity." + identifier) { diff --git a/framework/settings/settings.h b/framework/settings/settings.h index bfee55cb..685d67aa 100644 --- a/framework/settings/settings.h +++ b/framework/settings/settings.h @@ -42,6 +42,7 @@ private: void load(); QSharedPointer getSettings(); QByteArray mIdentifier; + bool mLoaded; }; class Account; @@ -63,6 +64,7 @@ class Account : public Settings public: Account(const QByteArray &identifier); Identity primaryIdentity() const; + QByteArray type() const; }; class Identity : public Settings -- cgit v1.2.3