Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_bookmarked_configuration_manager.cc
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2007 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8#include <QDomDocument>
9#include <QDomElement>
10#include <QString>
11
12#include <kconfig.h>
13#include <ksharedconfig.h>
14#include <klocalizedstring.h>
15#include <kconfiggroup.h>
16
17
18#include <KoID.h>
19
20#include "kis_debug.h"
22
23
26
33
35 : d(new Private)
36{
37 d->configEntryGroup = configEntryGroup;
38 d->configFactory = configFactory;
39}
40
42{
43 delete d->configFactory;
44 delete d;
45}
46
48{
49 if (!exists(configname)) {
51 return d->configFactory->createDefault();
52 else
53 return 0;
54 }
55 KConfigGroup cfg = KSharedConfig::openConfig()->group(configEntryGroup());
56
57 QDomDocument doc;
58 doc.setContent(cfg.readEntry<QString>(configname, ""));
59 QDomElement e = doc.documentElement();
60 KisSerializableConfigurationSP config = d->configFactory->create(e);
61 dbgImage << config << Qt::endl;
62 return config;
63}
64
65void KisBookmarkedConfigurationManager::save(const QString & configname, const KisSerializableConfigurationSP config)
66{
67 dbgImage << "Saving configuration " << config << " to " << configname;
68 if (!config) return;
69 KConfigGroup cfg = KSharedConfig::openConfig()->group(configEntryGroup());
70 cfg.writeEntry(configname, config->toXML());
71}
72
73bool KisBookmarkedConfigurationManager::exists(const QString & configname) const
74{
75 KSharedConfig::Ptr cfg = KSharedConfig::openConfig();
76 QMap< QString, QString > m = cfg->entryMap(configEntryGroup());
77 return (m.find(configname) != m.end());
78}
79
81{
82 KSharedConfig::Ptr cfg = KSharedConfig::openConfig();
83 QMap< QString, QString > m = cfg->entryMap(configEntryGroup());
84 QList<QString> keys = m.keys();
85 QList<QString> configsKey;
86 Q_FOREACH (const QString & key, keys) {
88 configsKey << key;
89 }
90 }
91 return configsKey;
92}
93
104
106{
107 return d->configEntryGroup;
108}
109
111{
112 KSharedConfig::Ptr cfg = KSharedConfig::openConfig();
113 KConfigGroup group = cfg->group(configEntryGroup());
114 group.deleteEntry(name);
115}
116
117QString KisBookmarkedConfigurationManager::uniqueName(const KLocalizedString & base)
118{
119#ifndef QT_NO_DEBUG
120 QString prev;
121#endif
122 int nb = 1;
123 while (true) {
124 QString cur = base.subs(nb++).toString();
125 if (!exists(cur)) return cur;
126#ifndef QT_NO_DEBUG
127 Q_ASSERT(prev != cur);
128 prev = cur;
129#endif
130 }
131}
virtual void toXML(QDomDocument &, QDomElement &) const =0
#define dbgImage
Definition kis_debug.h:46
KisSerializableConfigurationSP load(const QString &configname) const
KisBookmarkedConfigurationManager(const QString &configEntryGroup, KisSerializableConfigurationFactory *)
QString uniqueName(const KLocalizedString &base)
KisSerializableConfigurationSP defaultConfiguration() const
KisSerializableConfigurationFactory * configFactory
void save(const QString &configname, const KisSerializableConfigurationSP)