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

KDECore

  • sources
  • kde-4.14
  • kdelibs
  • 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 
35 class KConfig;
36 class KConfigGroupPrivate;
37 class KSharedConfig;
38 template <typename T> class KSharedPtr;
39 typedef KSharedPtr<KSharedConfig> KSharedConfigPtr;
40 
53 class KDECORE_EXPORT KConfigGroup : public KConfigBase
54 {
55 public:
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
155 
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 
624 protected:
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 
631 private:
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) \
677 inline Class::Enum readEntry(const KConfigGroup& group, const char* key, const Class::Enum& def) \
678 { \
679 const QMetaObject* M_obj = &Class::staticMetaObject; \
680 const int M_index = M_obj->indexOfEnumerator(#Enum); \
681 kFatal(M_index == -1) << KCONFIGGROUP_ENUMERATOR_ERROR(#Enum) << endl; \
682 const QMetaEnum M_enum = M_obj->enumerator(M_index); \
683 const QByteArray M_data = group.readEntry(key, QByteArray(M_enum.valueToKey(def)));\
684 return static_cast<Class::Enum>(M_enum.keyToValue(M_data.constData())); \
685 } \
686 inline void writeEntry(KConfigGroup& group, const char* key, const Class::Enum& value, KConfigBase::WriteConfigFlags flags = KConfigBase::Normal)\
687 { \
688 const QMetaObject* M_obj = &Class::staticMetaObject; \
689 const int M_index = M_obj->indexOfEnumerator(#Enum); \
690 kFatal(M_index == -1) << KCONFIGGROUP_ENUMERATOR_ERROR(#Enum) << endl; \
691 const QMetaEnum M_enum = M_obj->enumerator(M_index); \
692 group.writeEntry(key, QByteArray(M_enum.valueToKey(value)), flags); \
693 }
694 
699 #define KCONFIGGROUP_DECLARE_FLAGS_QOBJECT(Class, Flags) \
700 inline Class::Flags readEntry(const KConfigGroup& group, const char* key, const Class::Flags& def) \
701 { \
702 const QMetaObject* M_obj = &Class::staticMetaObject; \
703 const int M_index = M_obj->indexOfEnumerator(#Flags); \
704 kFatal(M_index == -1) << KCONFIGGROUP_ENUMERATOR_ERROR(#Flags) << endl; \
705 const QMetaEnum M_enum = M_obj->enumerator(M_index); \
706 const QByteArray M_data = group.readEntry(key, QByteArray(M_enum.valueToKeys(def)));\
707 return static_cast<Class::Flags>(M_enum.keysToValue(M_data.constData())); \
708 } \
709 inline void writeEntry(KConfigGroup& group, const char* key, const Class::Flags& value, KConfigBase::WriteConfigFlags flags = KConfigBase::Normal)\
710 { \
711 const QMetaObject* M_obj = &Class::staticMetaObject; \
712 const int M_index = M_obj->indexOfEnumerator(#Flags); \
713 kFatal(M_index == -1) << KCONFIGGROUP_ENUMERATOR_ERROR(#Flags) << endl; \
714 const QMetaEnum M_enum = M_obj->enumerator(M_index); \
715 group.writeEntry(key, QByteArray(M_enum.valueToKeys(value)), flags); \
716 }
717 
718 #include "conversion_check.h"
719 
720 template <typename T>
721 T 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 
727 template <typename T>
728 QList<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 
747 template <typename T>
748 void 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 
755 template <typename T>
756 void 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
KSharedPtr
Can be used to control the lifetime of an object that has derived QSharedData.
Definition: kconfiggroup.h:38
readEntry
KAutostart::StartPhase readEntry(const KConfigGroup &group, const char *key, const KAutostart::StartPhase &aDefault)
Definition: kautostart.cpp:227
KSharedConfig
KConfig variant using shared memory.
Definition: ksharedconfig.h:40
KSharedConfigPtr
KSharedPtr< KSharedConfig > KSharedConfigPtr
Definition: kconfiggroup.h:38
T
#define T
kdecore_export.h
QByteArray
KMacroExpander::group
Definition: kmacroexpander_unix.cpp:34
QMap
KConfigBase::deleteGroup
void deleteGroup(const QByteArray &group, WriteConfigFlags flags=Normal)
Delete aGroup.
Definition: kconfigbase.cpp:74
KConfigGroup::writeEntry
void writeEntry(const QString &key, const QVariant &value, WriteConfigFlags pFlags=Normal)
Writes a value to the configuration object.
Definition: kconfiggroup.cpp:1037
KGlobal::config
KSharedConfigPtr config()
Returns the general config object.
Definition: kglobal.cpp:139
KConfigBase::isGroupImmutableImpl
virtual bool isGroupImmutableImpl(const QByteArray &aGroup) const =0
KConfigBase::accessMode
virtual AccessMode accessMode() const =0
Returns the access mode of the app-config object.
QByteArray::constData
const char * constData() const
QString
QList
Definition: kaboutdata.h:33
KConfigBase::groupImpl
virtual KConfigGroup groupImpl(const QByteArray &b)=0
KConfigBase
Definition: kconfigbase.h:38
QStringList
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
KConfigBase::deleteGroupImpl
virtual void deleteGroupImpl(const QByteArray &group, WriteConfigFlags flags=Normal)=0
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::readEntry
QList< T > readEntry(const char *key, const QList< T > &aDefault) const
Overload for readEntry(const QString&, const QList&)
Definition: kconfiggroup.h:327
KConfigGroup
A class for one specific group in a KConfig object.
Definition: kconfiggroup.h:53
KConfig
The central class of the KDE configuration data system.
Definition: kconfig.h:70
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
conversion_check.h
KServicePrivate
Definition: kservice_p.h:29
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
KConfigBase::sync
virtual void sync()=0
Syncs the configuration object that this group belongs to.
KConfigBase::AccessMode
AccessMode
Possible return values for accessMode().
Definition: kconfigbase.h:133
KConfigBase::hasGroupImpl
virtual bool hasGroupImpl(const QByteArray &group) const =0
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
kconfigbase.h
KConfigBase::isImmutable
virtual bool isImmutable() const =0
Checks whether this configuration object can be modified.
QExplicitlySharedDataPointer< KConfigGroupPrivate >
KConfigBase::markAsClean
virtual void markAsClean()=0
Reset the dirty flags of all entries in the entry map, so the values will not be written to disk on a...
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
KConfigBase::groupList
virtual QStringList groupList() const =0
Returns a list of groups that are known about.
KConfigGroup::readEntry
T readEntry(const char *key, const T &aDefault) const
Overload for readEntry(const QString&, const T&) const.
Definition: kconfiggroup.h:252
defaultValue
QString defaultValue(const QString &t)
Definition: kconfig_compiler.cpp:950
QVariant
QString::toUtf8
QByteArray toUtf8() const
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:22:11 by doxygen 1.8.7 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 API Reference

Skip menu "kdelibs 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

Search



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