34#include <QtCore/QDate>
35#include <QtCore/QSharedData>
36#include <QtCore/QFile>
37#include <QtCore/QPoint>
38#include <QtCore/QRect>
39#include <QtCore/QString>
40#include <QtCore/QTextStream>
45class KConfigGroupPrivate :
public QSharedData
48 KConfigGroupPrivate(
KConfig* owner,
bool isImmutable,
bool isConst,
const QByteArray &name)
49 : mOwner(owner), mName(name), bImmutable(isImmutable), bConst(isConst)
54 : sOwner(owner), mOwner(sOwner.data()), mName(name),
55 bImmutable(name.isEmpty()? owner->isImmutable(): owner->isGroupImmutable(name)), bConst(false)
59 KConfigGroupPrivate(
KConfigGroup* parent,
bool isImmutable,
bool isConst,
const QByteArray& name)
60 : sOwner(parent->d->sOwner), mOwner(parent->d->mOwner), mName(name),
61 bImmutable(isImmutable), bConst(isConst)
63 if (!parent->d->mName.isEmpty())
67 KConfigGroupPrivate(
const KConfigGroupPrivate* other,
bool isImmutable,
const QByteArray &name)
68 : sOwner(other->sOwner), mOwner(other->mOwner), mName(name),
69 bImmutable(isImmutable), bConst(other->bConst)
71 if (!other->mName.isEmpty())
72 mParent =
const_cast<KConfigGroupPrivate *
>(other);
77 QExplicitlySharedDataPointer<KConfigGroupPrivate> mParent;
81 const bool bImmutable:1;
84 QByteArray fullName()
const
89 return mParent->fullName(mName);
92 QByteArray name()
const
99 QByteArray fullName(
const QByteArray& aGroup)
const
103 return fullName() +
'\x1d' + aGroup;
106 static QExplicitlySharedDataPointer<KConfigGroupPrivate> create(
KConfigBase *master,
107 const QByteArray &name,
111 QExplicitlySharedDataPointer<KConfigGroupPrivate> data;
113 data =
new KConfigGroupPrivate(
dynamic_cast<KConfigGroup*
>(master), isImmutable, isConst, name);
115 data =
new KConfigGroupPrivate(
dynamic_cast<KConfig*
>(master), isImmutable, isConst, name);
125 QByteArray value =
"";
127 if (!list.isEmpty()) {
131 value = QByteArray(*it).replace(
'\\',
"\\\\").replace(
',',
"\\,");
133 while (++it != end) {
139 value += QByteArray(*it).replace(
'\\',
"\\\\").replace(
',',
"\\,");
154 if (data == QLatin1String(
"\\0"))
158 val.reserve(data.size());
160 for (
int p = 0; p < data.length(); p++) {
164 }
else if (data[p].unicode() ==
'\\') {
166 }
else if (data[p].unicode() ==
',') {
170 val.reserve(data.size() - p);
182 Q_FOREACH(
const QByteArray& s,
string.split(
','))
190 Q_FOREACH(
const QByteArray& s,
string.split(
','))
191 list << s.toDouble();
196 return QString::fromLatin1(
"\"%1\" - conversion of \"%3\" to %2 failed")
197 .arg(QString::fromLatin1(pKey))
198 .arg(QString::fromLatin1(QVariant::typeToName(aDefault.type())))
199 .arg(QString::fromLatin1(value));
203 return QString::fromLatin1(
" (wrong format: expected %1 items, got %2)").arg( expected ).arg( got );
206QVariant KConfigGroup::convertToQVariant(
const char *pKey,
const QByteArray& value,
const QVariant& aDefault)
211 switch( aDefault.type() ) {
212 case QVariant::Invalid:
214 case QVariant::String:
218 return QString::fromUtf8(value);
220 case QVariant::StringList:
221 return KConfigGroupPrivate::deserializeList(QString::fromUtf8(value));
222 case QVariant::ByteArray:
224 case QVariant::Bool: {
225 const QByteArray lower(value.toLower());
226 if (lower ==
"false" || lower ==
"no" || lower ==
"off" || lower ==
"0")
230 case QVariant::Double:
231 case QMetaType::Float:
234 case QVariant::LongLong:
235 case QVariant::ULongLong: {
237 if ( !tmp.convert(aDefault.type()) )
241 case QVariant::Point: {
244 if ( list.count() != 2 ) {
249 return QPoint(list.at( 0 ), list.at( 1 ));
251 case QVariant::PointF: {
254 if ( list.count() != 2 ) {
259 return QPointF(list.at( 0 ), list.at( 1 ));
261 case QVariant::Rect: {
264 if ( list.count() != 4 ) {
269 const QRect rect(list.at( 0 ), list.at( 1 ), list.at( 2 ), list.at( 3 ));
270 if ( !rect.isValid() ) {
276 case QVariant::RectF: {
279 if ( list.count() != 4 ) {
284 const QRectF rect(list.at( 0 ), list.at( 1 ), list.at( 2 ), list.at( 3 ));
285 if ( !rect.isValid() ) {
291 case QVariant::Size: {
294 if ( list.count() != 2 ) {
299 const QSize size(list.at( 0 ), list.at( 1 ));
300 if ( !size.isValid() ) {
306 case QVariant::SizeF: {
309 if ( list.count() != 2 ) {
314 const QSizeF size(list.at( 0 ), list.at( 1 ));
315 if ( !size.isValid() ) {
321 case QVariant::DateTime: {
323 if ( list.count() != 6 ) {
328 const QDate date( list.at( 0 ), list.at( 1 ), list.at( 2 ) );
329 const QTime time( list.at( 3 ), list.at( 4 ), list.at( 5 ) );
331 if ( !dt.isValid() ) {
337 case QVariant::Date: {
339 if ( list.count() == 6 )
340 list = list.mid(0, 3);
341 if ( list.count() != 3 ) {
346 const QDate date( list.at( 0 ), list.at( 1 ), list.at( 2 ) );
347 if ( !date.isValid() ) {
353 case QVariant::Color:
355 kWarning() <<
"KConfigGroup::readEntry was passed GUI type '"
356 << aDefault.typeName()
357 <<
"' but kdeui isn't linked! If it is linked to your program, "
358 "this is a platform bug. Please inform the KDE developers";
361 return QUrl(QString::fromUtf8(value));
364 if( aDefault.canConvert<
KUrl>() ) {
365 const KUrl url(QString::fromUtf8(value));
366 return qVariantFromValue<KUrl>( url );
371 kWarning() <<
"unhandled type " << aDefault.typeName();
376# include <QtCore/QDir>
382 if (!QDir::convertSeparators(path).startsWith(QDir::convertSeparators(homeDir)))
385 if (!path.startsWith(homeDir))
389 int len = homeDir.length();
391 if (len && (path.length() == len || path[len] == QLatin1Char(
'/'))) {
392 path.replace(0, len, QString::fromLatin1(
"$HOME"));
404 path.replace(QLatin1Char(
'$'), QLatin1String(
"$$"));
406 bool startsWithFile = path.startsWith(QLatin1String(
"file:"), Qt::CaseInsensitive);
410 if ((!startsWithFile && QFileInfo(path).isRelative()) ||
411 (startsWithFile && QFileInfo(path.mid(5)).isRelative()))
418 while (path[0] == QLatin1Char(
'/') && path[1] == QLatin1Char(
'/'))
425 const QString homeDir0 = QFile::decodeName(qgetenv(
"HOME"));
426 const QString homeDir1 = QDir::homePath();
427 const QString homeDir2 = QDir(homeDir1).canonicalPath();
435 path.prepend(QString::fromLatin1(
"file://"));
447 return 0 != d.constData();
460 KConfigGroup::WriteConfigFlags flags)
468 : d(KConfigGroupPrivate::create(master, _group.toUtf8(), master->isGroupImmutable(_group), false))
473 : d(KConfigGroupPrivate::create(master, _group, master->isGroupImmutable(_group), false))
478 : d(KConfigGroupPrivate::create(const_cast<
KConfigBase*>(master), _group.toUtf8(), master->isGroupImmutable(_group), true))
483 : d(KConfigGroupPrivate::create(const_cast<
KConfigBase*>(master), _group, master->isGroupImmutable(_group), true))
488 : d(new KConfigGroupPrivate(master, _group.toUtf8()))
493 : d(new KConfigGroupPrivate(master, _group))
515 Q_ASSERT_X(
isValid(),
"KConfigGroup::groupImpl",
"accessing an invalid group");
516 Q_ASSERT_X(!aGroup.isEmpty(),
"KConfigGroup::groupImpl",
"can not have an unnamed child group");
527 Q_ASSERT_X(
isValid(),
"KConfigGroup::groupImpl",
"accessing an invalid group");
528 Q_ASSERT_X(!aGroup.isEmpty(),
"KConfigGroup::groupImpl",
"can not have an unnamed child group");
540 Q_ASSERT_X(
isValid(),
"KConfigGroup::parent",
"accessing an invalid group");
545 parentGroup.d = d->mParent;
547 parentGroup.d =
new KConfigGroupPrivate(d->mOwner, d->mOwner->isImmutable(), d->bConst,
"");
549 parentGroup.d->sOwner = d->sOwner;
557 Q_ASSERT_X(
isValid(),
"KConfigGroup::deleteGroup",
"accessing an invalid group");
558 Q_ASSERT_X(!d->bConst,
"KConfigGroup::deleteGroup",
"deleting a read-only group");
563#ifndef KDE_NO_DEPRECATED
566 Q_ASSERT_X(
isValid(),
"KConfigGroup::changeGroup",
"accessing an invalid group");
568 d->mName = group.toUtf8();
572#ifndef KDE_NO_DEPRECATED
575 Q_ASSERT_X(
isValid(),
"KConfigGroup::changeGroup",
"accessing an invalid group");
583 Q_ASSERT_X(
isValid(),
"KConfigGroup::name",
"accessing an invalid group");
585 return QString::fromUtf8(d->name());
590 Q_ASSERT_X(
isValid(),
"KConfigGroup::exists",
"accessing an invalid group");
597 Q_ASSERT_X(
isValid(),
"KConfigGroup::sync",
"accessing an invalid group");
605 Q_ASSERT_X(
isValid(),
"KConfigGroup::entryMap",
"accessing an invalid group");
612 Q_ASSERT_X(
isValid(),
"KConfigGroup::config",
"accessing an invalid group");
619 Q_ASSERT_X(
isValid(),
"KConfigGroup::config",
"accessing an invalid group");
626 Q_ASSERT_X(
isValid(),
"KConfigGroup::isEntryImmutable",
"accessing an invalid group");
628 return (isImmutable() ||
629 !
config()->d_func()->canWriteEntry(d->fullName(), key,
config()->readDefaults()));
644 Q_ASSERT_X(
isValid(),
"KConfigGroup::readEntryUntranslated",
"accessing an invalid group");
646 QString result =
config()->d_func()->lookupData(d->fullName(), key, KEntryMap::SearchFlags(), 0);
654 return readEntry(key, QString::fromUtf8(aDefault));
659 return readEntry(key.toUtf8().constData(), aDefault);
664 Q_ASSERT_X(
isValid(),
"KConfigGroup::readEntry",
"accessing an invalid group");
682 return readEntry(key.toUtf8().constData(), aDefault);
687 Q_ASSERT_X(
isValid(),
"KConfigGroup::readEntry",
"accessing an invalid group");
693 return KConfigGroupPrivate::deserializeList(data);
698 return readEntry( key.toUtf8().constData(), aDefault );
703 Q_ASSERT_X(
isValid(),
"KConfigGroup::readEntry",
"accessing an invalid group");
711 return convertToQVariant(key, data, aDefault);
718 return readEntry( key.toUtf8().constData(), aDefault );
723 Q_ASSERT_X(
isValid(),
"KConfigGroup::readEntry",
"accessing an invalid group");
730 foreach(
const QString& v, KConfigGroupPrivate::deserializeList(data))
738 return readEntry( key.toUtf8().constData(), aDefault );
748 Q_ASSERT_X(
isValid(),
"KConfigGroup::readXdgListEntry",
"accessing an invalid group");
756 val.reserve(data.size());
760 for (
int p = 0; p < data.length(); p++) {
764 }
else if (data[p] == QLatin1Char(
'\\')) {
766 }
else if (data[p] == QLatin1Char(
';')) {
769 val.reserve(data.size() - p);
774 if (!val.isEmpty()) {
787 Q_ASSERT_X(
isValid(),
"KConfigGroup::readPathEntry",
"accessing an invalid group");
806 Q_ASSERT_X(
isValid(),
"KConfigGroup::readPathEntry",
"accessing an invalid group");
812 return KConfigGroupPrivate::deserializeList(data);
817 Q_ASSERT_X(
isValid(),
"KConfigGroup::writeEntry",
"accessing an invalid group");
818 Q_ASSERT_X(!d->bConst,
"KConfigGroup::writeEntry",
"writing to a read-only group");
825 writeEntry(key.toUtf8().constData(), value, flags);
830 Q_ASSERT_X(
isValid(),
"KConfigGroup::writeEntry",
"accessing an invalid group");
831 Q_ASSERT_X(!d->bConst,
"KConfigGroup::writeEntry",
"writing to a read-only group");
842 WriteConfigFlags flags )
844 Q_ASSERT_X(
isValid(),
"KConfigGroup::writeEntry",
"accessing an invalid group");
845 Q_ASSERT_X(!d->bConst,
"KConfigGroup::writeEntry",
"writing to a read-only group");
847 config()->d_func()->putData(d->fullName(), key, value.isNull()? QByteArray(
""): value, flags);
851 WriteConfigFlags pFlags)
853 writeEntry(key.toUtf8().constData(), value, pFlags);
858 Q_ASSERT_X(
isValid(),
"KConfigGroup::writeEntry",
"accessing an invalid group");
859 Q_ASSERT_X(!d->bConst,
"KConfigGroup::writeEntry",
"writing to a read-only group");
863 foreach(
const QString &entry, list)
864 balist.append(entry.toUtf8());
866 writeEntry(key, KConfigGroupPrivate::serializeList(balist), flags);
871 writeEntry(key.toUtf8().constData(), list, flags);
876 Q_ASSERT_X(
isValid(),
"KConfigGroup::writeEntry",
"accessing an invalid group");
877 Q_ASSERT_X(!d->bConst,
"KConfigGroup::writeEntry",
"writing to a read-only group");
882 if (v.type() == QVariant::ByteArray)
883 data << v.toByteArray();
885 data << v.toString().toUtf8();
888 writeEntry(key, KConfigGroupPrivate::serializeList(data), flags);
892 WriteConfigFlags flags )
894 Q_ASSERT_X(
isValid(),
"KConfigGroup::writeEntry",
"accessing an invalid group");
895 Q_ASSERT_X(!d->bConst,
"KConfigGroup::writeEntry",
"writing to a read-only group");
904 switch( value.type() ) {
905 case QVariant::Invalid:
908 case QVariant::ByteArray:
909 data = value.toByteArray();
911 case QVariant::String:
914 case QVariant::Double:
915 case QMetaType::Float:
917 case QVariant::LongLong:
918 case QVariant::ULongLong:
919 data = value.toString().toUtf8();
922 kError(!value.canConvert(QVariant::StringList))
923 <<
"not all types in \"" << key <<
"\" can convert to QString,"
924 " information will be lost";
925 case QVariant::StringList:
928 case QVariant::Point: {
930 const QPoint rPoint = value.toPoint();
931 list.insert( 0, rPoint.x() );
932 list.insert( 1, rPoint.y() );
937 case QVariant::PointF: {
939 const QPointF point = value.toPointF();
940 list.insert( 0, point.x() );
941 list.insert( 1, point.y() );
946 case QVariant::Rect:{
948 const QRect rRect = value.toRect();
949 list.insert( 0, rRect.left() );
950 list.insert( 1, rRect.top() );
951 list.insert( 2, rRect.width() );
952 list.insert( 3, rRect.height() );
957 case QVariant::RectF:{
959 const QRectF rRectF = value.toRectF();
960 list.insert(0, rRectF.left());
961 list.insert(1, rRectF.top());
962 list.insert(2, rRectF.width());
963 list.insert(3, rRectF.height());
968 case QVariant::Size:{
970 const QSize rSize = value.toSize();
971 list.insert( 0, rSize.width() );
972 list.insert( 1, rSize.height() );
977 case QVariant::SizeF:{
979 const QSizeF rSizeF = value.toSizeF();
980 list.insert(0, rSizeF.width());
981 list.insert(1, rSizeF.height());
986 case QVariant::Date: {
988 const QDate date = value.toDate();
990 list.insert( 0, date.year() );
991 list.insert( 1, date.month() );
992 list.insert( 2, date.day() );
997 case QVariant::DateTime: {
999 const QDateTime rDateTime = value.toDateTime();
1001 const QTime time = rDateTime.time();
1002 const QDate date = rDateTime.date();
1004 list.insert( 0, date.year() );
1005 list.insert( 1, date.month() );
1006 list.insert( 2, date.day() );
1008 list.insert( 3, time.hour() );
1009 list.insert( 4, time.minute() );
1010 list.insert( 5, time.second() );
1016 case QVariant::Color:
1017 case QVariant::Font:
1018 kWarning() <<
"KConfigGroup::writeEntry was passed GUI type '"
1020 <<
"' but kdeui isn't linked! If it is linked to your program, this is a platform bug. "
1021 "Please inform the KDE developers";
1024 data =
KUrl(value.toUrl()).
url().toUtf8();
1027 if( value.canConvert<
KUrl>() ) {
1028 data = qvariant_cast<KUrl>(value).url().toUtf8();
1031 kWarning() <<
"KConfigGroup::writeEntry - unhandled type" << value.typeName() <<
"in group" << name();
1039 writeEntry(key.toUtf8().constData(), value, flags);
1044 writeEntry(key.toUtf8().constData(), list, flags);
1054 Q_ASSERT_X(
isValid(),
"KConfigGroup::writeXdgListEntry",
"accessing an invalid group");
1055 Q_ASSERT_X(!d->bConst,
"KConfigGroup::writeXdgListEntry",
"writing to a read-only group");
1058 value.reserve(4096);
1062 QStringList::ConstIterator it = list.constBegin();
1063 const QStringList::ConstIterator end = list.constEnd();
1064 for (; it != end; ++it) {
1066 val.replace(QLatin1Char(
'\\'), QLatin1String(
"\\\\")).replace(QLatin1Char(
';'), QLatin1String(
"\\;"));
1068 value += QLatin1Char(
';');
1081 Q_ASSERT_X(
isValid(),
"KConfigGroup::writePathEntry",
"accessing an invalid group");
1082 Q_ASSERT_X(!d->bConst,
"KConfigGroup::writePathEntry",
"writing to a read-only group");
1084 config()->d_func()->putData(d->fullName(), pKey,
translatePath(path).toUtf8(), pFlags,
true);
1094 Q_ASSERT_X(
isValid(),
"KConfigGroup::writePathEntry",
"accessing an invalid group");
1095 Q_ASSERT_X(!d->bConst,
"KConfigGroup::writePathEntry",
"writing to a read-only group");
1098 foreach(
const QString& path, value)
1101 config()->d_func()->putData(d->fullName(), pKey, KConfigGroupPrivate::serializeList(list), pFlags,
true);
1106 Q_ASSERT_X(
isValid(),
"KConfigGroup::deleteEntry",
"accessing an invalid group");
1107 Q_ASSERT_X(!d->bConst,
"KConfigGroup::deleteEntry",
"deleting from a read-only group");
1109 config()->d_func()->putData(d->fullName(), key, QByteArray(), flags);
1119 Q_ASSERT_X(
isValid(),
"KConfigGroup::revertToDefault",
"accessing an invalid group");
1120 Q_ASSERT_X(!d->bConst,
"KConfigGroup::revertToDefault",
"writing to a read-only group");
1122 config()->d_func()->revertEntry(d->fullName(), key);
1132 Q_ASSERT_X(
isValid(),
"KConfigGroup::hasDefault",
"accessing an invalid group");
1136 return !
config()->d_func()->lookupData(d->fullName(), key, flags).isNull();
1146 Q_ASSERT_X(
isValid(),
"KConfigGroup::hasKey",
"accessing an invalid group");
1149 if (
config()->readDefaults() )
1152 return !
config()->d_func()->lookupData(d->fullName(), key, flags).isNull();
1157 return hasKey(key.toUtf8().constData());
1162 Q_ASSERT_X(
isValid(),
"KConfigGroup::isImmutable",
"accessing an invalid group");
1164 return d->bImmutable;
1169 Q_ASSERT_X(
isValid(),
"KConfigGroup::groupList",
"accessing an invalid group");
1176 Q_ASSERT_X(
isValid(),
"KConfigGroup::keyList",
"accessing an invalid group");
1183 Q_ASSERT_X(
isValid(),
"KConfigGroup::markAsClean",
"accessing an invalid group");
1190 Q_ASSERT_X(
isValid(),
"KConfigGroup::accessMode",
"accessing an invalid group");
1197 Q_ASSERT_X(
isValid(),
"KConfigGroup::hasGroupImpl",
"accessing an invalid group");
1204 Q_ASSERT_X(
isValid(),
"KConfigGroup::deleteGroupImpl",
"accessing an invalid group");
1205 Q_ASSERT_X(!d->bConst,
"KConfigGroup::deleteGroupImpl",
"deleting from a read-only group");
1212 Q_ASSERT_X(
isValid(),
"KConfigGroup::isGroupImmutableImpl",
"accessing an invalid group");
1215 return d->bImmutable;
1222 Q_ASSERT_X(
isValid(),
"KConfigGroup::copyTo",
"accessing an invalid group");
1223 Q_ASSERT(other != 0);
1226 config()->d_func()->copyGroup(d->fullName(), otherGroup->d->fullName(), otherGroup, pFlags);
1227 }
else if (
KConfig* otherConfig =
dynamic_cast<KConfig*
>(other)) {
1229 otherConfig->d_func()->copyGroup(d->fullName(), d->fullName(), &newGroup, pFlags);
1231 Q_ASSERT_X(
false,
"KConfigGroup::copyTo",
"unknown type of KConfigBase");
1237 Q_ASSERT_X(
isValid(),
"KConfigGroup::reparent",
"accessing an invalid group");
1238 Q_ASSERT_X(!d->bConst,
"KConfigGroup::reparent",
"reparenting a read-only group");
1239 Q_ASSERT_X(!d->bImmutable,
"KConfigGroup::reparent",
"reparenting an immutable group");
1240 Q_ASSERT(parent != 0);
1244 d = KConfigGroupPrivate::create(parent, d->mName,
false,
false);
1245 oldGroup.
copyTo(
this, pFlags);
void deleteGroup(const QByteArray &group, WriteConfigFlags flags=Normal)
Delete aGroup.
AccessMode
Possible return values for accessMode().
bool hasGroup(const QString &group) const
Returns true if the specified group is known about.
bool isGroupImmutable(const QByteArray &aGroup) const
Can changes be made to the entries in aGroup?
KConfigGroup group(const QByteArray &group)
Returns an object for the named subgroup.
A class for one specific group in a KConfig object.
void reparent(KConfigBase *parent, WriteConfigFlags pFlags=Normal)
Changes the configuration object that this group belongs to.
T readEntry(const QString &key, const T &aDefault) const
Reads the value of an entry specified by pKey in the current group.
void writeXdgListEntry(const QString &pKey, const QStringList &value, WriteConfigFlags pFlags=Normal)
Writes a list of strings to the config object, following XDG desktop entry spec separator semantics.
QString name() const
The name of this group.
bool hasDefault(const QString &key) const
Whether a default is specified for an entry in either the system wide configuration file or the globa...
bool hasKey(const QString &key) const
Checks whether the key has an entry in this group.
QString readPathEntry(const QString &pKey, const QString &aDefault) const
Reads a path.
QStringList groupList() const
void writePathEntry(const QString &pKey, const QString &path, WriteConfigFlags pFlags=Normal)
Writes a file path to the configuration.
bool isEntryImmutable(const QString &key) const
Checks if it is possible to change the given entry.
void deleteGroupImpl(const QByteArray &group, WriteConfigFlags flags)
void writeEntry(const QString &key, const QVariant &value, WriteConfigFlags pFlags=Normal)
Writes a value to the configuration object.
void deleteGroup(WriteConfigFlags pFlags=Normal)
Delete all entries in the entire group.
bool isValid() const
Whether the group is valid.
KConfigGroup groupImpl(const QByteArray &b)
KConfigGroup & operator=(const KConfigGroup &)
void revertToDefault(const QString &key)
Reverts an entry to the default settings.
KConfigGroup()
Constructs an invalid group.
KConfig * config()
Return the config object that this group belongs to.
bool hasGroupImpl(const QByteArray &group) const
bool isImmutable() const
Whether this group may be changed.
bool exists() const
Check whether the containing KConfig object acutally contains a group with this name.
void deleteEntry(const QString &pKey, WriteConfigFlags pFlags=Normal)
Deletes the entry specified by pKey in the current group.
void changeGroup(const QString &group)
Changes the group of the object.
KConfigGroup parent() const
Returns the group that this group belongs to.
QMap< QString, QString > entryMap() const
Returns a map (tree) of entries for all entries in this group.
bool isGroupImmutableImpl(const QByteArray &aGroup) const
QStringList readXdgListEntry(const QString &pKey, const QStringList &aDefault=QStringList()) const
Reads a list of strings from the config object, following XDG desktop entry spec separator semantics.
AccessMode accessMode() const
QString readEntryUntranslated(const QString &pKey, const QString &aDefault=QString()) const
Reads an untranslated string entry.
QStringList keyList() const
Returns a list of keys this group contains.
void copyTo(KConfigBase *other, WriteConfigFlags pFlags=Normal) const
Copies the entries in this group to another configuration object.
static QString expandString(const QString &value)
The central class of the KDE configuration data system.
AccessMode accessMode() const
QMap< QString, QString > entryMap(const QString &aGroup=QString()) const
Returns a map (tree) of entries in a particular group.
QStringList groupList() const
Represents and parses a URL.
QString url(AdjustPathOption trailing=LeaveTrailingSlash) const
Returns the URL as string, with all escape sequences intact, encoded in a given charset.
void output(QList< Action > actions, QHash< QString, QString > domain)
static QDebug kError(bool cond, int area=KDE_DEFAULT_DEBUG_AREA)
KAutostart::StartPhase readEntry(const KConfigGroup &group, const char *key, const KAutostart::StartPhase &aDefault)
static bool cleanHomeDirPath(QString &path, const QString &homeDir)
static bool writeEntryGui(KConfigGroup *cg, const char *key, const QVariant &input, KConfigGroup::WriteConfigFlags flags)
static QList< qreal > asRealList(const QByteArray &string)
static QList< int > asIntList(const QByteArray &string)
static bool readEntryGui(const QByteArray &data, const char *key, const QVariant &input, QVariant &output)
static QString errString(const char *pKey, const QByteArray &value, const QVariant &aDefault)
KConfigGroupGui _kde_internal_KConfigGroupGui
static QString formatError(int expected, int got)
static QString translatePath(QString path)
kWriteEntryGui writeEntryGui
kReadEntryGui readEntryGui