summaryrefslogtreecommitdiffstats
path: root/common/resourceconfig.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-03-15 14:44:06 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-03-15 15:19:41 +0100
commitd838e58a3fd94a04d9db82560f7004433300b77e (patch)
treee464e72ba3e207c20bf9c5628f2513bf6170a552 /common/resourceconfig.cpp
parent3978a0128925081dac0d16c1956328b694796ce6 (diff)
downloadsink-d838e58a3fd94a04d9db82560f7004433300b77e.tar.gz
sink-d838e58a3fd94a04d9db82560f7004433300b77e.zip
Added support for accounts
Diffstat (limited to 'common/resourceconfig.cpp')
-rw-r--r--common/resourceconfig.cpp93
1 files changed, 82 insertions, 11 deletions
diff --git a/common/resourceconfig.cpp b/common/resourceconfig.cpp
index b988718..4b33990 100644
--- a/common/resourceconfig.cpp
+++ b/common/resourceconfig.cpp
@@ -23,19 +23,20 @@
23#include <QStandardPaths> 23#include <QStandardPaths>
24#include <QFile> 24#include <QFile>
25 25
26static QSharedPointer<QSettings> getSettings() 26static QSharedPointer<QSettings> getConfig(const QByteArray &identifier)
27{ 27{
28 return QSharedPointer<QSettings>::create(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/sink/resources.ini", QSettings::IniFormat); 28 return QSharedPointer<QSettings>::create(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/sink/" + identifier + ".ini", QSettings::IniFormat);
29} 29}
30 30
31static QSharedPointer<QSettings> getResourceConfig(const QByteArray &identifier) 31static QSharedPointer<QSettings> getSettings()
32{ 32{
33 return QSharedPointer<QSettings>::create(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/sink/" + identifier, QSettings::IniFormat); 33 return getConfig("resources");
34} 34}
35 35
36
36QByteArray ResourceConfig::newIdentifier(const QByteArray &type) 37QByteArray ResourceConfig::newIdentifier(const QByteArray &type)
37{ 38{
38 auto settings = getSettings(); 39 auto settings = getConfig("resources");
39 const auto counter = settings->value("instanceCounter", 0).toInt() + 1; 40 const auto counter = settings->value("instanceCounter", 0).toInt() + 1;
40 const QByteArray identifier = type + ".instance" + QByteArray::number(counter); 41 const QByteArray identifier = type + ".instance" + QByteArray::number(counter);
41 settings->setValue("instanceCounter", counter); 42 settings->setValue("instanceCounter", counter);
@@ -45,7 +46,7 @@ QByteArray ResourceConfig::newIdentifier(const QByteArray &type)
45 46
46void ResourceConfig::addResource(const QByteArray &identifier, const QByteArray &type) 47void ResourceConfig::addResource(const QByteArray &identifier, const QByteArray &type)
47{ 48{
48 auto settings = getSettings(); 49 auto settings = getConfig("resources");
49 settings->beginGroup(QString::fromLatin1(identifier)); 50 settings->beginGroup(QString::fromLatin1(identifier));
50 settings->setValue("type", type); 51 settings->setValue("type", type);
51 settings->endGroup(); 52 settings->endGroup();
@@ -54,18 +55,18 @@ void ResourceConfig::addResource(const QByteArray &identifier, const QByteArray
54 55
55void ResourceConfig::removeResource(const QByteArray &identifier) 56void ResourceConfig::removeResource(const QByteArray &identifier)
56{ 57{
57 auto settings = getSettings(); 58 auto settings = getConfig("resources");
58 settings->beginGroup(QString::fromLatin1(identifier)); 59 settings->beginGroup(QString::fromLatin1(identifier));
59 settings->remove(""); 60 settings->remove("");
60 settings->endGroup(); 61 settings->endGroup();
61 settings->sync(); 62 settings->sync();
62 QFile::remove(getResourceConfig(identifier)->fileName()); 63 QFile::remove(getConfig(identifier)->fileName());
63} 64}
64 65
65QMap<QByteArray, QByteArray> ResourceConfig::getResources() 66QMap<QByteArray, QByteArray> ResourceConfig::getResources()
66{ 67{
67 QMap<QByteArray, QByteArray> resources; 68 QMap<QByteArray, QByteArray> resources;
68 auto settings = getSettings(); 69 auto settings = getConfig("resources");
69 for (const auto &identifier : settings->childGroups()) { 70 for (const auto &identifier : settings->childGroups()) {
70 settings->beginGroup(identifier); 71 settings->beginGroup(identifier);
71 const auto type = settings->value("type").toByteArray(); 72 const auto type = settings->value("type").toByteArray();
@@ -84,7 +85,7 @@ void ResourceConfig::clear()
84 85
85void ResourceConfig::configureResource(const QByteArray &identifier, const QMap<QByteArray, QVariant> &configuration) 86void ResourceConfig::configureResource(const QByteArray &identifier, const QMap<QByteArray, QVariant> &configuration)
86{ 87{
87 auto config = getResourceConfig(identifier); 88 auto config = getConfig(identifier);
88 config->clear(); 89 config->clear();
89 for (const auto &key : configuration.keys()) { 90 for (const auto &key : configuration.keys()) {
90 config->setValue(key, configuration.value(key)); 91 config->setValue(key, configuration.value(key));
@@ -95,7 +96,77 @@ void ResourceConfig::configureResource(const QByteArray &identifier, const QMap<
95QMap<QByteArray, QVariant> ResourceConfig::getConfiguration(const QByteArray &identifier) 96QMap<QByteArray, QVariant> ResourceConfig::getConfiguration(const QByteArray &identifier)
96{ 97{
97 QMap<QByteArray, QVariant> configuration; 98 QMap<QByteArray, QVariant> configuration;
98 auto config = getResourceConfig(identifier); 99 auto config = getConfig(identifier);
100 for (const auto &key : config->allKeys()) {
101 configuration.insert(key.toLatin1(), config->value(key));
102 }
103 return configuration;
104}
105
106
107QByteArray AccountConfig::newIdentifier(const QByteArray &type)
108{
109 auto settings = getConfig("accounts");
110 const auto counter = settings->value("instanceCounter", 0).toInt() + 1;
111 const QByteArray identifier = type + ".instance" + QByteArray::number(counter);
112 settings->setValue("instanceCounter", counter);
113 settings->sync();
114 return identifier;
115}
116
117void AccountConfig::addAccount(const QByteArray &identifier, const QByteArray &type)
118{
119 auto settings = getConfig("accounts");
120 settings->beginGroup(QString::fromLatin1(identifier));
121 settings->setValue("type", type);
122 settings->endGroup();
123 settings->sync();
124}
125
126void AccountConfig::removeAccount(const QByteArray &identifier)
127{
128 auto settings = getConfig("accounts");
129 settings->beginGroup(QString::fromLatin1(identifier));
130 settings->remove("");
131 settings->endGroup();
132 settings->sync();
133 QFile::remove(getConfig(identifier)->fileName());
134}
135
136QMap<QByteArray, QByteArray> AccountConfig::getAccounts()
137{
138 QMap<QByteArray, QByteArray> accounts;
139 auto settings = getConfig("accounts");
140 for (const auto &identifier : settings->childGroups()) {
141 settings->beginGroup(identifier);
142 const auto type = settings->value("type").toByteArray();
143 accounts.insert(identifier.toLatin1(), type);
144 settings->endGroup();
145 }
146 return accounts;
147}
148
149void AccountConfig::clear()
150{
151 auto settings = getSettings();
152 settings->clear();
153 settings->sync();
154}
155
156void AccountConfig::configureAccount(const QByteArray &identifier, const QMap<QByteArray, QVariant> &configuration)
157{
158 auto config = getConfig(identifier);
159 config->clear();
160 for (const auto &key : configuration.keys()) {
161 config->setValue(key, configuration.value(key));
162 }
163 config->sync();
164}
165
166QMap<QByteArray, QVariant> AccountConfig::getConfiguration(const QByteArray &identifier)
167{
168 QMap<QByteArray, QVariant> configuration;
169 auto config = getConfig(identifier);
99 for (const auto &key : config->allKeys()) { 170 for (const auto &key : config->allKeys()) {
100 configuration.insert(key.toLatin1(), config->value(key)); 171 configuration.insert(key.toLatin1(), config->value(key));
101 } 172 }