diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-12-15 13:42:28 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-12-15 13:42:28 +0100 |
commit | c1a43cf6dabe29bc15186f8062ceeeee4ae77993 (patch) | |
tree | 4eba8082876b6b9c04443bbbbb7b2179fc18bd52 /common/resourceconfig.cpp | |
parent | ef492409892eedb85d7555002eebebe3f046b873 (diff) | |
download | sink-c1a43cf6dabe29bc15186f8062ceeeee4ae77993.tar.gz sink-c1a43cf6dabe29bc15186f8062ceeeee4ae77993.zip |
A simple resource configuration mechanism
We simply write all properties we don't know to a config file.
Resources can pick up configurations as they are started.
Diffstat (limited to 'common/resourceconfig.cpp')
-rw-r--r-- | common/resourceconfig.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/common/resourceconfig.cpp b/common/resourceconfig.cpp index ec72fb9..99e111e 100644 --- a/common/resourceconfig.cpp +++ b/common/resourceconfig.cpp | |||
@@ -21,12 +21,19 @@ | |||
21 | #include <QSettings> | 21 | #include <QSettings> |
22 | #include <QSharedPointer> | 22 | #include <QSharedPointer> |
23 | #include <QStandardPaths> | 23 | #include <QStandardPaths> |
24 | #include <QFile> | ||
24 | 25 | ||
25 | static QSharedPointer<QSettings> getSettings() | 26 | static QSharedPointer<QSettings> getSettings() |
26 | { | 27 | { |
27 | return QSharedPointer<QSettings>::create(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/akonadi2/resources.ini", QSettings::IniFormat); | 28 | return QSharedPointer<QSettings>::create(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/akonadi2/resources.ini", QSettings::IniFormat); |
28 | } | 29 | } |
29 | 30 | ||
31 | static QSharedPointer<QSettings> getResourceConfig(const QByteArray &identifier) | ||
32 | { | ||
33 | return QSharedPointer<QSettings>::create(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/akonadi2/" + identifier, QSettings::IniFormat); | ||
34 | } | ||
35 | |||
36 | |||
30 | void ResourceConfig::addResource(const QByteArray &identifier, const QByteArray &type) | 37 | void ResourceConfig::addResource(const QByteArray &identifier, const QByteArray &type) |
31 | { | 38 | { |
32 | auto settings = getSettings(); | 39 | auto settings = getSettings(); |
@@ -44,6 +51,7 @@ void ResourceConfig::removeResource(const QByteArray &identifier) | |||
44 | settings->remove(""); | 51 | settings->remove(""); |
45 | settings->endGroup(); | 52 | settings->endGroup(); |
46 | settings->sync(); | 53 | settings->sync(); |
54 | QFile::remove(getResourceConfig(identifier)->fileName()); | ||
47 | } | 55 | } |
48 | 56 | ||
49 | QMap<QByteArray, QByteArray> ResourceConfig::getResources() | 57 | QMap<QByteArray, QByteArray> ResourceConfig::getResources() |
@@ -65,3 +73,24 @@ void ResourceConfig::clear() | |||
65 | settings->clear(); | 73 | settings->clear(); |
66 | settings->sync(); | 74 | settings->sync(); |
67 | } | 75 | } |
76 | |||
77 | void ResourceConfig::configureResource(const QByteArray &identifier, const QMap<QByteArray, QVariant> &configuration) | ||
78 | { | ||
79 | auto config = getResourceConfig(identifier); | ||
80 | config->clear(); | ||
81 | for (const auto &key : configuration.keys()) { | ||
82 | config->setValue(key, configuration.value(key)); | ||
83 | } | ||
84 | config->sync(); | ||
85 | } | ||
86 | |||
87 | QMap<QByteArray, QVariant> ResourceConfig::getConfiguration(const QByteArray &identifier) | ||
88 | { | ||
89 | QMap<QByteArray, QVariant> configuration; | ||
90 | auto config = getResourceConfig(identifier); | ||
91 | for (const auto &key : config->allKeys()) { | ||
92 | configuration.insert(key.toLatin1(), config->value(key)); | ||
93 | } | ||
94 | return configuration; | ||
95 | } | ||
96 | |||