File indexing completed on 2024-04-28 11:34:35
0001 /* 0002 This file is part of the KDE libraries 0003 SPDX-FileCopyrightText: 2006, 2007 Thomas Braxton <kde.braxton@gmail.com> 0004 SPDX-FileCopyrightText: 2001 Waldo Bastian <bastian@kde.org> 0005 SPDX-FileCopyrightText: 1999 Preston Brown <pbrown@kde.org> 0006 SPDX-FileCopyrightText: 1997 Matthias Kalle Dalheimer <kalle@kde.org> 0007 0008 SPDX-License-Identifier: LGPL-2.0-or-later 0009 */ 0010 0011 #ifndef KCONFIG_P_H 0012 #define KCONFIG_P_H 0013 0014 #include "kconfigbackend_p.h" 0015 #include "kconfigdata_p.h" 0016 #include "kconfiggroup.h" 0017 0018 #include <QDir> 0019 #include <QFile> 0020 #include <QStack> 0021 #include <QStringList> 0022 0023 class KConfigPrivate 0024 { 0025 friend class KConfig; 0026 0027 public: 0028 KConfig::OpenFlags openFlags; 0029 QStandardPaths::StandardLocation resourceType; 0030 0031 void changeFileName(const QString &fileName); 0032 0033 // functions for KConfigGroup 0034 bool canWriteEntry(const QByteArray &group, const char *key, bool isDefault = false) const; 0035 QString lookupData(const QByteArray &group, const char *key, KEntryMap::SearchFlags flags, bool *expand) const; 0036 QByteArray lookupData(const QByteArray &group, const char *key, KEntryMap::SearchFlags flags) const; 0037 KEntry lookupInternalEntry(const QByteArray &group, const char *key, KEntryMap::SearchFlags flags) const; 0038 0039 void putData(const QByteArray &group, const char *key, const QByteArray &value, KConfigBase::WriteConfigFlags flags, bool expand = false); 0040 void setEntryData(const QByteArray &group, const char *key, const QByteArray &value, KEntryMap::EntryOptions flags) 0041 { 0042 if (entryMap.setEntry(group, key, value, flags)) { 0043 bDirty = true; 0044 } 0045 } 0046 void revertEntry(const QByteArray &group, const char *key, KConfigBase::WriteConfigFlags flags); 0047 QStringList groupList(const QByteArray &group) const; 0048 // copies the entries from @p source to @p otherGroup changing all occurrences 0049 // of @p source with @p destination 0050 void copyGroup(const QByteArray &source, const QByteArray &destination, KConfigGroup *otherGroup, KConfigBase::WriteConfigFlags flags) const; 0051 QStringList keyListImpl(const QByteArray &theGroup) const; 0052 QSet<QByteArray> allSubGroups(const QByteArray &parentGroup) const; 0053 bool hasNonDeletedEntries(const QByteArray &group) const; 0054 0055 void notifyClients(const QHash<QString, QByteArrayList> &changes, const QString &path); 0056 0057 static QString expandString(const QString &value); 0058 0059 protected: 0060 QExplicitlySharedDataPointer<KConfigBackend> mBackend; 0061 0062 KConfigPrivate(KConfig::OpenFlags flags, QStandardPaths::StandardLocation type); 0063 0064 virtual ~KConfigPrivate() 0065 { 0066 } 0067 0068 bool bDynamicBackend : 1; // do we own the backend? 0069 private: 0070 bool bDirty : 1; 0071 bool bReadDefaults : 1; 0072 bool bFileImmutable : 1; 0073 bool bForceGlobal : 1; 0074 bool bSuppressGlobal : 1; 0075 0076 static bool mappingsRegistered; 0077 0078 KEntryMap entryMap; 0079 QString backendType; 0080 QStack<QString> extraFiles; 0081 0082 QString locale; 0083 QString fileName; 0084 QString etc_kderc; 0085 KConfigBase::AccessMode configState; 0086 0087 bool wantGlobals() const 0088 { 0089 return openFlags & KConfig::IncludeGlobals && !bSuppressGlobal; 0090 } 0091 bool wantDefaults() const 0092 { 0093 return openFlags & KConfig::CascadeConfig; 0094 } 0095 bool isSimple() const 0096 { 0097 return openFlags == KConfig::SimpleConfig; 0098 } 0099 bool isReadOnly() const 0100 { 0101 return configState == KConfig::ReadOnly; 0102 } 0103 0104 bool setLocale(const QString &aLocale); 0105 QStringList getGlobalFiles() const; 0106 void parseGlobalFiles(); 0107 void parseConfigFiles(); 0108 void initCustomized(KConfig *); 0109 bool lockLocal(); 0110 }; 0111 0112 #endif // KCONFIG_P_H