24 #ifndef KCONFIGGROUP_H
25 #define KCONFIGGROUP_H
31 #include <QtCore/QExplicitlySharedDataPointer>
32 #include <QtCore/QVariant>
33 #include <QtCore/QStringList>
36 class KConfigGroupPrivate;
109 bool isValid()
const;
152 #ifndef KDE_NO_DEPRECATED
153 KDE_DEPRECATED
void changeGroup(
const QString &group);
161 #ifndef KDE_NO_DEPRECATED
162 KDE_DEPRECATED
void changeGroup(
const char *group);
176 void copyTo(
KConfigBase *other, WriteConfigFlags pFlags = Normal)
const;
193 void reparent(
KConfigBase *parent, WriteConfigFlags pFlags = Normal);
222 void deleteGroup(WriteConfigFlags pFlags = Normal);
247 template <
typename T>
249 {
return readCheck(key.toUtf8().constData(), aDefault); }
251 template <
typename T>
253 {
return readCheck(key, aDefault); }
296 QVariantList
readEntry(
const QString &key,
const QVariantList &aDefault)
const;
298 QVariantList
readEntry(
const char *key,
const QVariantList &aDefault)
const;
324 {
return readListCheck(key.toUtf8().constData(), aDefault); }
328 {
return readListCheck(key, aDefault); }
357 QString readPathEntry(
const char *key,
const QString &aDefault)
const;
386 QString readEntryUntranslated(
const char *key,
399 WriteConfigFlags pFlags = Normal);
401 void writeEntry(
const char *key,
const QVariant &value,
402 WriteConfigFlags pFlags = Normal);
406 WriteConfigFlags pFlags = Normal);
408 void writeEntry(
const char *key,
const QString &value,
409 WriteConfigFlags pFlags = Normal);
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);
419 void writeEntry(
const QString &key,
const char *value, WriteConfigFlags pFlags = Normal);
421 void writeEntry(
const char *key,
const char *value, WriteConfigFlags pFlags = Normal);
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>
430 { writeCheck( key.toUtf8().constData(), value, pFlags ); }
434 WriteConfigFlags pFlags = Normal);
436 void writeEntry(
const char *key,
const QStringList &value,
437 WriteConfigFlags pFlags = Normal);
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);
447 template <
typename T>
449 { writeListCheck( key.toUtf8().constData(), value, pFlags ); }
451 template <
typename T>
453 { writeListCheck( key, value, pFlags ); }
466 WriteConfigFlags pFlags = Normal);
468 void writeXdgListEntry(
const char *pKey,
const QStringList &value,
469 WriteConfigFlags pFlags = Normal);
485 WriteConfigFlags pFlags = Normal);
487 void writePathEntry(
const char *pKey,
const QString &path,
488 WriteConfigFlags pFlags = Normal);
504 WriteConfigFlags pFlags = Normal);
506 void writePathEntry(
const char *pKey,
const QStringList &value,
507 WriteConfigFlags pFlags = Normal);
519 void deleteEntry(
const QString &pKey, WriteConfigFlags pFlags = Normal);
521 void deleteEntry(
const char *pKey, WriteConfigFlags pFlags = Normal);
538 bool hasKey(
const QString &key)
const;
540 bool hasKey(
const char *key)
const;
559 bool isEntryImmutable(
const QString &key)
const;
561 bool isEntryImmutable(
const char *key)
const;
579 void revertToDefault(
const QString &key);
581 void revertToDefault(
const char* key);
610 bool hasDefault(
const QString &key)
const;
612 bool hasDefault(
const char *key)
const;
632 QExplicitlySharedDataPointer<KConfigGroupPrivate> d;
641 inline void writeCheck(
const char *key,
const T &value, WriteConfigFlags pFlags);
644 inline void writeListCheck(
const char *key,
const QList<T> &value, WriteConfigFlags pFlags);
646 friend class KConfigGroupPrivate;
657 static QVariant convertToQVariant(
const char *pKey,
const QByteArray &value,
const QVariant &aDefault);
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."
676 #define KCONFIGGROUP_DECLARE_ENUM_QOBJECT(Class, Enum) \
677 inline Class::Enum readEntry(const KConfigGroup& group, const char* key, const Class::Enum& def) \
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())); \
686 inline void writeEntry(KConfigGroup& group, const char* key, const Class::Enum& value, KConfigBase::WriteConfigFlags flags = KConfigBase::Normal)\
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); \
699 #define KCONFIGGROUP_DECLARE_FLAGS_QOBJECT(Class, Flags) \
700 inline Class::Flags readEntry(const KConfigGroup& group, const char* key, const Class::Flags& def) \
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())); \
709 inline void writeEntry(KConfigGroup& group, const char* key, const Class::Flags& value, KConfigBase::WriteConfigFlags flags = KConfigBase::Normal)\
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); \
720 template <
typename T>
721 T KConfigGroup::readCheck(
const char *key,
const T &
defaultValue)
const
723 ConversionCheck::to_QVariant<T>();
724 return qvariant_cast<
T>(
readEntry(key, qVariantFromValue(defaultValue)));
727 template <
typename T>
730 ConversionCheck::to_QVariant<T>();
731 ConversionCheck::to_QString<T>();
735 Q_FOREACH(
const T& value, defaultValue)
736 data.append(qVariantFromValue(value));
740 Q_ASSERT(qVariantCanConvert<T>(value));
741 list.append(qvariant_cast<T>(value));
747 template <
typename T>
748 void KConfigGroup::writeCheck(
const char *key,
const T &value,
749 WriteConfigFlags pFlags)
751 ConversionCheck::to_QVariant<T>();
752 writeEntry(key, qVariantFromValue(value), pFlags);
755 template <
typename T>
756 void KConfigGroup::writeListCheck(
const char *key,
const QList<T> &list,
757 WriteConfigFlags pFlags)
759 ConversionCheck::to_QVariant<T>();
760 ConversionCheck::to_QString<T>();
762 Q_FOREACH(
const T &value, list) {
763 data.append(qVariantFromValue(value));
769 #endif // KCONFIGGROUP_H
Can be used to control the lifetime of an object that has derived QSharedData.
KAutostart::StartPhase readEntry(const KConfigGroup &group, const char *key, const KAutostart::StartPhase &aDefault)
KConfig variant using shared memory.
KSharedPtr< KSharedConfig > KSharedConfigPtr
void deleteGroup(const QByteArray &group, WriteConfigFlags flags=Normal)
Delete aGroup.
void writeEntry(const QString &key, const QVariant &value, WriteConfigFlags pFlags=Normal)
Writes a value to the configuration object.
KSharedConfigPtr config()
Returns the general config object.
virtual bool isGroupImmutableImpl(const QByteArray &aGroup) const =0
virtual AccessMode accessMode() const =0
Returns the access mode of the app-config object.
virtual KConfigGroup groupImpl(const QByteArray &b)=0
void writeEntry(const char *key, const T &value, WriteConfigFlags pFlags=Normal)
Overload for writeEntry(const QString&, const QVariant&, WriteConfigFlags)
virtual void deleteGroupImpl(const QByteArray &group, WriteConfigFlags flags=Normal)=0
void writeEntry(const QString &key, const QList< T > &value, WriteConfigFlags pFlags=Normal)
Overload for writeEntry(const QString&, const QVariant&, WriteConfigFlags)
QList< T > readEntry(const char *key, const QList< T > &aDefault) const
Overload for readEntry(const QString&, const QList&)
A class for one specific group in a KConfig object.
The central class of the KDE configuration data system.
void writeEntry(const char *key, const QList< T > &value, WriteConfigFlags pFlags=Normal)
Overload for writeEntry(const QString&, const QVariant&, WriteConfigFlags)
QList< T > readEntry(const QString &key, const QList< T > &aDefault) const
Reads a list of values from the config object.
virtual void sync()=0
Syncs the configuration object that this group belongs to.
AccessMode
Possible return values for accessMode().
virtual bool hasGroupImpl(const QByteArray &group) const =0
void writeEntry(const QString &key, const T &value, WriteConfigFlags pFlags=Normal)
Overload for writeEntry(const QString&, const QVariant&, WriteConfigFlags)
virtual bool isImmutable() const =0
Checks whether this configuration object can be modified.
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...
T readEntry(const QString &key, const T &aDefault) const
Reads the value of an entry specified by pKey in the current group.
virtual QStringList groupList() const =0
Returns a list of groups that are known about.
T readEntry(const char *key, const T &aDefault) const
Overload for readEntry(const QString&, const T&) const.
QString defaultValue(const QString &t)