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); }
327 inline QList<T>
readEntry(
const char *key,
const QList<T> &aDefault)
const
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>
429 inline void writeEntry(
const QString &key,
const T &value, WriteConfigFlags pFlags = Normal)
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>
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 ); }
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;
635 inline T readCheck(
const char *key,
const T &
defaultValue)
const;
638 inline QList<T> readListCheck(
const char *key,
const QList<T> &
defaultValue)
const;
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>
728 QList<T> KConfigGroup::readListCheck(
const char *key,
const QList<T> &
defaultValue)
const
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