summaryrefslogtreecommitdiffstats
path: root/common/resourceconfig.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2015-12-15 13:42:28 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2015-12-15 13:42:28 +0100
commitc1a43cf6dabe29bc15186f8062ceeeee4ae77993 (patch)
tree4eba8082876b6b9c04443bbbbb7b2179fc18bd52 /common/resourceconfig.cpp
parentef492409892eedb85d7555002eebebe3f046b873 (diff)
downloadsink-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.cpp29
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
25static QSharedPointer<QSettings> getSettings() 26static 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
31static QSharedPointer<QSettings> getResourceConfig(const QByteArray &identifier)
32{
33 return QSharedPointer<QSettings>::create(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/akonadi2/" + identifier, QSettings::IniFormat);
34}
35
36
30void ResourceConfig::addResource(const QByteArray &identifier, const QByteArray &type) 37void 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
49QMap<QByteArray, QByteArray> ResourceConfig::getResources() 57QMap<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
77void 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
87QMap<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