• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KDECore

  • kdecore
  • config
kconfiggroup.h
Go to the documentation of this file.
1/*
2 This file is part of the KDE libraries
3 Copyright (c) 2006, 2007 Thomas Braxton <kde.braxton@gmail.com>
4 Copyright (c) 1999 Preston Brown <pbrown@kde.org>
5 Copyright (c) 1997 Matthias Kalle Dalheimer <kalle@kde.org>
6 Copyright (c) 2001 Waldo Bastian <bastian@kde.org>
7
8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Library General Public
10 License as published by the Free Software Foundation; either
11 version 2 of the License, or (at your option) any later version.
12
13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Library General Public License for more details.
17
18 You should have received a copy of the GNU Library General Public License
19 along with this library; see the file COPYING.LIB. If not, write to
20 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 Boston, MA 02110-1301, USA.
22*/
23
24#ifndef KCONFIGGROUP_H
25#define KCONFIGGROUP_H
26
27#include "kconfigbase.h"
28
29#include <kdecore_export.h>
30
31#include <QtCore/QExplicitlySharedDataPointer>
32#include <QtCore/QVariant>
33#include <QtCore/QStringList>
34
35class KConfig;
36class KConfigGroupPrivate;
37class KSharedConfig;
38template <typename T> class KSharedPtr;
39typedef KSharedPtr<KSharedConfig> KSharedConfigPtr;
40
53class KDECORE_EXPORT KConfigGroup : public KConfigBase
54{
55public:
61 KConfigGroup();
62
71 KConfigGroup(KConfigBase *master, const QString &group);
73 KConfigGroup(KConfigBase *master, const char *group);
74
83 KConfigGroup(const KConfigBase *master, const QString &group);
85 KConfigGroup(const KConfigBase *master, const char *group);
86
88 KConfigGroup(const KSharedConfigPtr &master, const QString &group);
90 KConfigGroup(const KSharedConfigPtr &master, const char *group);
91
95 KConfigGroup(const KConfigGroup &);
96 KConfigGroup &operator=(const KConfigGroup &);
97
98 ~KConfigGroup();
99
109 bool isValid() const;
110
116 QString name() const;
117
122 bool exists() const;
123
129 void sync();
130
132 void markAsClean();
133
135 AccessMode accessMode() const;
136
140 KConfig* config();
144 const KConfig* config() const;
145
152#ifndef KDE_NO_DEPRECATED
153 KDE_DEPRECATED void changeGroup(const QString &group);
154#endif
161#ifndef KDE_NO_DEPRECATED
162 KDE_DEPRECATED void changeGroup(const char *group);
163#endif
164
176 void copyTo(KConfigBase *other, WriteConfigFlags pFlags = Normal) const;
177
193 void reparent(KConfigBase *parent, WriteConfigFlags pFlags = Normal);
194
203 KConfigGroup parent() const;
204
208 QStringList groupList() const;
209
213 QStringList keyList() const;
214
222 void deleteGroup(WriteConfigFlags pFlags = Normal);
223 using KConfigBase::deleteGroup;
224
247 template <typename T>
248 inline T readEntry(const QString &key, const T &aDefault) const
249 { return readCheck(key.toUtf8().constData(), aDefault); }
251 template <typename T>
252 inline T readEntry(const char *key, const T &aDefault) const
253 { return readCheck(key, aDefault); }
254
264 QVariant readEntry(const QString &key, const QVariant &aDefault) const;
266 QVariant readEntry(const char *key, const QVariant &aDefault) const;
267
279 QString readEntry(const QString &key, const QString &aDefault) const;
281 QString readEntry(const char *key, const QString &aDefault) const;
282
284 QString readEntry(const QString &key, const char *aDefault = 0) const;
286 QString readEntry(const char *key, const char *aDefault = 0) const;
287
296 QVariantList readEntry(const QString &key, const QVariantList &aDefault) const;
298 QVariantList readEntry(const char *key, const QVariantList &aDefault) const;
299
309 QStringList readEntry(const QString &key, const QStringList &aDefault) const;
311 QStringList readEntry(const char *key, const QStringList &aDefault) const;
312
322 template<typename T>
323 inline QList<T> readEntry(const QString &key, const QList<T> &aDefault) const
324 { return readListCheck(key.toUtf8().constData(), aDefault); }
326 template<typename T>
327 inline QList<T> readEntry(const char *key, const QList<T> &aDefault) const
328 { return readListCheck(key, aDefault); }
329
340 QStringList readXdgListEntry(const QString &pKey, const QStringList &aDefault = QStringList()) const;
342 QStringList readXdgListEntry(const char *pKey, const QStringList &aDefault = QStringList()) const;
343
355 QString readPathEntry(const QString &pKey, const QString &aDefault) const;
357 QString readPathEntry(const char *key, const QString &aDefault) const;
358
370 QStringList readPathEntry(const QString &pKey, const QStringList &aDefault) const;
372 QStringList readPathEntry(const char *key, const QStringList &aDefault) const;
373
383 QString readEntryUntranslated(const QString &pKey,
384 const QString &aDefault = QString()) const;
386 QString readEntryUntranslated(const char *key,
387 const QString &aDefault = QString()) const;
388
398 void writeEntry(const QString &key, const QVariant &value,
399 WriteConfigFlags pFlags = Normal);
401 void writeEntry(const char *key, const QVariant &value,
402 WriteConfigFlags pFlags = Normal);
403
405 void writeEntry(const QString &key, const QString &value,
406 WriteConfigFlags pFlags = Normal);
408 void writeEntry(const char *key, const QString &value,
409 WriteConfigFlags pFlags = Normal);
410
412 void writeEntry(const QString &key, const QByteArray &value,
413 WriteConfigFlags pFlags = Normal);
415 void writeEntry(const char *key, const QByteArray &value,
416 WriteConfigFlags pFlags = Normal);
417
419 void writeEntry(const QString &key, const char *value, WriteConfigFlags pFlags = Normal);
421 void writeEntry(const char *key, const char *value, WriteConfigFlags pFlags = Normal);
422
424 template <typename T>
425 inline void writeEntry(const char *key, const T &value, WriteConfigFlags pFlags = Normal)
426 { writeCheck( key, value, pFlags ); }
428 template <typename T>
429 inline void writeEntry(const QString &key, const T &value, WriteConfigFlags pFlags = Normal)
430 { writeCheck( key.toUtf8().constData(), value, pFlags ); }
431
433 void writeEntry(const QString &key, const QStringList &value,
434 WriteConfigFlags pFlags = Normal);
436 void writeEntry(const char *key, const QStringList &value,
437 WriteConfigFlags pFlags = Normal);
438
440 void writeEntry(const QString &key, const QVariantList &value,
441 WriteConfigFlags pFlags = Normal);
443 void writeEntry(const char *key, const QVariantList &value,
444 WriteConfigFlags pFlags = Normal);
445
447 template <typename T>
448 inline void writeEntry(const QString &key, const QList<T> &value, WriteConfigFlags pFlags = Normal)
449 { writeListCheck( key.toUtf8().constData(), value, pFlags ); }
451 template <typename T>
452 inline void writeEntry(const char *key, const QList<T> &value, WriteConfigFlags pFlags = Normal)
453 { writeListCheck( key, value, pFlags ); }
454
465 void writeXdgListEntry(const QString &pKey, const QStringList &value,
466 WriteConfigFlags pFlags = Normal);
468 void writeXdgListEntry(const char *pKey, const QStringList &value,
469 WriteConfigFlags pFlags = Normal);
470
484 void writePathEntry(const QString &pKey, const QString &path,
485 WriteConfigFlags pFlags = Normal);
487 void writePathEntry(const char *pKey, const QString &path,
488 WriteConfigFlags pFlags = Normal);
489
503 void writePathEntry(const QString &pKey, const QStringList &value,
504 WriteConfigFlags pFlags = Normal);
506 void writePathEntry(const char *pKey, const QStringList &value,
507 WriteConfigFlags pFlags = Normal);
508
519 void deleteEntry(const QString &pKey, WriteConfigFlags pFlags = Normal);
521 void deleteEntry(const char *pKey, WriteConfigFlags pFlags = Normal);
522
538 bool hasKey(const QString &key) const;
540 bool hasKey(const char *key) const;
541
547 bool isImmutable() const;
548
559 bool isEntryImmutable(const QString &key) const;
561 bool isEntryImmutable(const char *key) const;
562
579 void revertToDefault(const QString &key);
581 void revertToDefault(const char* key);
582
610 bool hasDefault(const QString &key) const;
612 bool hasDefault(const char *key) const;
613
622 QMap<QString, QString> entryMap() const;
623
624protected:
625 bool hasGroupImpl(const QByteArray &group) const;
626 KConfigGroup groupImpl(const QByteArray &b);
627 const KConfigGroup groupImpl(const QByteArray &b) const;
628 void deleteGroupImpl(const QByteArray &group, WriteConfigFlags flags);
629 bool isGroupImmutableImpl(const QByteArray &aGroup) const;
630
631private:
632 QExplicitlySharedDataPointer<KConfigGroupPrivate> d;
633
634 template<typename T>
635 inline T readCheck(const char *key, const T &defaultValue) const;
636
637 template<typename T>
638 inline QList<T> readListCheck(const char *key, const QList<T> &defaultValue) const;
639
640 template<typename T>
641 inline void writeCheck(const char *key, const T &value, WriteConfigFlags pFlags);
642
643 template<typename T>
644 inline void writeListCheck(const char *key, const QList<T> &value, WriteConfigFlags pFlags);
645
646 friend class KConfigGroupPrivate;
647
657 static QVariant convertToQVariant(const char *pKey, const QByteArray &value, const QVariant &aDefault);
658 friend class KServicePrivate; // XXX yeah, ugly^5
659};
660
661#define KCONFIGGROUP_ENUMERATOR_ERROR(ENUM) \
662"The Qt MetaObject system does not seem to know about \"" ENUM \
663"\" please use Q_ENUMS or Q_FLAGS to register it."
664
676#define KCONFIGGROUP_DECLARE_ENUM_QOBJECT(Class, Enum) \
677inline Class::Enum readEntry(const KConfigGroup& group, const char* key, const Class::Enum& def) \
678{ \
679const QMetaObject* M_obj = &Class::staticMetaObject; \
680const int M_index = M_obj->indexOfEnumerator(#Enum); \
681kFatal(M_index == -1) << KCONFIGGROUP_ENUMERATOR_ERROR(#Enum) << endl; \
682const QMetaEnum M_enum = M_obj->enumerator(M_index); \
683const QByteArray M_data = group.readEntry(key, QByteArray(M_enum.valueToKey(def)));\
684return static_cast<Class::Enum>(M_enum.keyToValue(M_data.constData())); \
685} \
686inline void writeEntry(KConfigGroup& group, const char* key, const Class::Enum& value, KConfigBase::WriteConfigFlags flags = KConfigBase::Normal)\
687{ \
688const QMetaObject* M_obj = &Class::staticMetaObject; \
689const int M_index = M_obj->indexOfEnumerator(#Enum); \
690kFatal(M_index == -1) << KCONFIGGROUP_ENUMERATOR_ERROR(#Enum) << endl; \
691const QMetaEnum M_enum = M_obj->enumerator(M_index); \
692group.writeEntry(key, QByteArray(M_enum.valueToKey(value)), flags); \
693}
694
699#define KCONFIGGROUP_DECLARE_FLAGS_QOBJECT(Class, Flags) \
700inline Class::Flags readEntry(const KConfigGroup& group, const char* key, const Class::Flags& def) \
701{ \
702const QMetaObject* M_obj = &Class::staticMetaObject; \
703const int M_index = M_obj->indexOfEnumerator(#Flags); \
704kFatal(M_index == -1) << KCONFIGGROUP_ENUMERATOR_ERROR(#Flags) << endl; \
705const QMetaEnum M_enum = M_obj->enumerator(M_index); \
706const QByteArray M_data = group.readEntry(key, QByteArray(M_enum.valueToKeys(def)));\
707return static_cast<Class::Flags>(M_enum.keysToValue(M_data.constData())); \
708} \
709inline void writeEntry(KConfigGroup& group, const char* key, const Class::Flags& value, KConfigBase::WriteConfigFlags flags = KConfigBase::Normal)\
710{ \
711const QMetaObject* M_obj = &Class::staticMetaObject; \
712const int M_index = M_obj->indexOfEnumerator(#Flags); \
713kFatal(M_index == -1) << KCONFIGGROUP_ENUMERATOR_ERROR(#Flags) << endl; \
714const QMetaEnum M_enum = M_obj->enumerator(M_index); \
715group.writeEntry(key, QByteArray(M_enum.valueToKeys(value)), flags); \
716}
717
718#include "conversion_check.h"
719
720template <typename T>
721T KConfigGroup::readCheck(const char *key, const T &defaultValue) const
722{
723 ConversionCheck::to_QVariant<T>();
724 return qvariant_cast<T>(readEntry(key, qVariantFromValue(defaultValue)));
725}
726
727template <typename T>
728QList<T> KConfigGroup::readListCheck(const char *key, const QList<T> &defaultValue) const
729{
730 ConversionCheck::to_QVariant<T>();
731 ConversionCheck::to_QString<T>();
732
733 QVariantList data;
734
735 Q_FOREACH(const T& value, defaultValue)
736 data.append(qVariantFromValue(value));
737
738 QList<T> list;
739 Q_FOREACH (const QVariant &value, readEntry<QVariantList>(key, data)) {
740 Q_ASSERT(qVariantCanConvert<T>(value));
741 list.append(qvariant_cast<T>(value));
742 }
743
744 return list;
745}
746
747template <typename T>
748void KConfigGroup::writeCheck(const char *key, const T &value,
749 WriteConfigFlags pFlags)
750{
751 ConversionCheck::to_QVariant<T>();
752 writeEntry(key, qVariantFromValue(value), pFlags);
753}
754
755template <typename T>
756void KConfigGroup::writeListCheck(const char *key, const QList<T> &list,
757 WriteConfigFlags pFlags)
758{
759 ConversionCheck::to_QVariant<T>();
760 ConversionCheck::to_QString<T>();
761 QVariantList data;
762 Q_FOREACH(const T &value, list) {
763 data.append(qVariantFromValue(value));
764 }
765
766 writeEntry(key, data, pFlags);
767}
768
769#endif // KCONFIGGROUP_H
KConfigBase
Definition: kconfigbase.h:39
KConfigBase::deleteGroup
void deleteGroup(const QByteArray &group, WriteConfigFlags flags=Normal)
Delete aGroup.
Definition: kconfigbase.cpp:74
KConfigBase::AccessMode
AccessMode
Possible return values for accessMode().
Definition: kconfigbase.h:133
KConfigGroup
A class for one specific group in a KConfig object.
Definition: kconfiggroup.h:54
KConfigGroup::readEntry
T readEntry(const QString &key, const T &aDefault) const
Reads the value of an entry specified by pKey in the current group.
Definition: kconfiggroup.h:248
KConfigGroup::writeEntry
void writeEntry(const QString &key, const QVariant &value, WriteConfigFlags pFlags=Normal)
Writes a value to the configuration object.
Definition: kconfiggroup.cpp:1037
KConfigGroup::writeEntry
void writeEntry(const char *key, const T &value, WriteConfigFlags pFlags=Normal)
Overload for writeEntry(const QString&, const QVariant&, WriteConfigFlags)
Definition: kconfiggroup.h:425
KConfigGroup::readEntry
T readEntry(const char *key, const T &aDefault) const
Overload for readEntry(const QString&, const T&) const.
Definition: kconfiggroup.h:252
KConfigGroup::writeEntry
void writeEntry(const QString &key, const QList< T > &value, WriteConfigFlags pFlags=Normal)
Overload for writeEntry(const QString&, const QVariant&, WriteConfigFlags)
Definition: kconfiggroup.h:448
KConfigGroup::writeEntry
void writeEntry(const char *key, const QList< T > &value, WriteConfigFlags pFlags=Normal)
Overload for writeEntry(const QString&, const QVariant&, WriteConfigFlags)
Definition: kconfiggroup.h:452
KConfigGroup::readEntry
QList< T > readEntry(const QString &key, const QList< T > &aDefault) const
Reads a list of values from the config object.
Definition: kconfiggroup.h:323
KConfigGroup::writeEntry
void writeEntry(const QString &key, const T &value, WriteConfigFlags pFlags=Normal)
Overload for writeEntry(const QString&, const QVariant&, WriteConfigFlags)
Definition: kconfiggroup.h:429
KConfigGroup::readEntry
QList< T > readEntry(const char *key, const QList< T > &aDefault) const
Overload for readEntry(const QString&, const QList<T>&)
Definition: kconfiggroup.h:327
KConfig
The central class of the KDE configuration data system.
Definition: kconfig.h:71
KServicePrivate
Definition: kservice_p.h:30
KSharedConfig
KConfig variant using shared memory.
Definition: ksharedconfig.h:41
KSharedPtr
Can be used to control the lifetime of an object that has derived QSharedData.
Definition: ksharedptr.h:64
QList
Definition: kaboutdata.h:33
QMap
QStringList
QString
QVariant
conversion_check.h
readEntry
KAutostart::StartPhase readEntry(const KConfigGroup &group, const char *key, const KAutostart::StartPhase &aDefault)
Definition: kautostart.cpp:227
defaultValue
QString defaultValue(const QString &t)
Definition: kconfig_compiler.cpp:950
kconfigbase.h
KSharedConfigPtr
KSharedPtr< KSharedConfig > KSharedConfigPtr
Definition: kconfiggroup.h:39
kdecore_export.h
T
#define T
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDECore

Skip menu "KDECore"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal