kdecore Library API Documentation

kconfigbase.h

00001 /* 00002 This file is part of the KDE libraries 00003 Copyright (c) 1999 Preston Brown <pbrown@kde.org> 00004 Copyright (c) 1997 Matthias Kalle Dalheimer <kalle@kde.org> 00005 Copyright (c) 2001 Waldo Bastian <bastian@kde.org> 00006 00007 This library is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU Library General Public 00009 License as published by the Free Software Foundation; either 00010 version 2 of the License, or (at your option) any later version. 00011 00012 This library is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 Library General Public License for more details. 00016 00017 You should have received a copy of the GNU Library General Public License 00018 along with this library; see the file COPYING.LIB. If not, write to 00019 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00020 Boston, MA 02111-1307, USA. 00021 */ 00022 00023 #ifndef _KCONFIGBASE_H 00024 #define _KCONFIGBASE_H 00025 00026 #include <qobject.h> 00027 #include <qcolor.h> 00028 #include <qfont.h> 00029 #include <qdatetime.h> 00030 #include <qstrlist.h> 00031 #include <qstringlist.h> 00032 #include <qvariant.h> 00033 #include <qmap.h> 00034 00035 #include "kconfigdata.h" 00036 00037 class KConfigBackEnd; 00038 class KConfigBasePrivate; 00039 class KConfigGroup; 00040 00067 class KConfigBase : public QObject 00068 { 00069 Q_OBJECT 00070 00071 friend class KConfigBackEnd; 00072 friend class KConfigINIBackEnd; 00073 friend class KConfigGroup; 00074 00075 public: 00079 KConfigBase(); 00080 00084 virtual ~KConfigBase(); 00085 00096 void setGroup( const QString& group ); 00097 00102 void setDesktopGroup(); 00103 00110 QString group() const; 00111 00118 bool hasGroup(const QString &group) const; 00119 00125 virtual QStringList groupList() const = 0; 00126 00132 QString locale() const; 00133 00141 QString readEntry(const QString& pKey, 00142 const QString& aDefault = QString::null ) const; 00143 00151 QString readEntry(const char *pKey, 00152 const QString& aDefault = QString::null ) const; 00153 00167 QVariant readPropertyEntry( const QString& pKey, QVariant::Type ) const; 00168 00183 QVariant readPropertyEntry( const char *pKey, QVariant::Type ) const; 00184 00199 QVariant readPropertyEntry( const QString& pKey, 00200 const QVariant &aDefault) const; 00201 00216 QVariant readPropertyEntry( const char *pKey, 00217 const QVariant &aDefault) const; 00218 00229 int readListEntry( const QString& pKey, QStrList &list, char sep = ',' ) const; 00230 00241 int readListEntry( const char *pKey, QStrList &list, char sep = ',' ) const; 00242 00250 QStringList readListEntry( const QString& pKey, char sep = ',' ) const; 00251 00259 QStringList readListEntry( const char *pKey, char sep = ',' ) const; 00260 00270 QStringList readListEntry( const char* pKey, const QStringList& aDefault, 00271 char sep = ',' ) const; 00272 00279 QValueList<int> readIntListEntry( const QString& pKey ) const; 00280 00287 QValueList<int> readIntListEntry( const char *pKey ) const; 00288 00300 QString readPathEntry( const QString& pKey, const QString & aDefault = QString::null ) const; 00301 00313 QString readPathEntry( const char *pKey, const QString & aDefault = QString::null ) const; 00314 00327 QStringList readPathListEntry( const QString& pKey, char sep = ',' ) const; 00328 00341 QStringList readPathListEntry( const char *pKey, char sep = ',' ) const; 00342 00343 00355 int readNumEntry( const QString& pKey, int nDefault = 0 ) const; 00356 00368 int readNumEntry( const char *pKey, int nDefault = 0 ) const; 00369 00381 unsigned int readUnsignedNumEntry( const QString& pKey, unsigned int nDefault = 0 ) const; 00382 00394 unsigned int readUnsignedNumEntry( const char *pKey, unsigned int nDefault = 0 ) const; 00395 00396 00408 long readLongNumEntry( const QString& pKey, long nDefault = 0 ) const; 00409 00421 long readLongNumEntry( const char *pKey, long nDefault = 0 ) const; 00422 00434 unsigned long readUnsignedLongNumEntry( const QString& pKey, unsigned long nDefault = 0 ) const; 00435 00447 unsigned long readUnsignedLongNumEntry( const char *pKey, unsigned long nDefault = 0 ) const; 00448 00460 Q_INT64 readNum64Entry( const QString& pKey, Q_INT64 nDefault = 0 ) const; 00461 00473 Q_INT64 readNum64Entry( const char *pKey, Q_INT64 nDefault = 0 ) const; 00474 00486 Q_UINT64 readUnsignedNum64Entry( const QString& pKey, Q_UINT64 nDefault = 0 ) const; 00487 00499 Q_UINT64 readUnsignedNum64Entry( const char *pKey, Q_UINT64 nDefault = 0 ) const; 00500 00512 double readDoubleNumEntry( const QString& pKey, double nDefault = 0.0 ) const; 00513 00525 double readDoubleNumEntry( const char *pKey, double nDefault = 0.0 ) const; 00526 00538 QFont readFontEntry( const QString& pKey, const QFont* pDefault = 0L ) const; 00539 00551 QFont readFontEntry( const char *pKey, const QFont* pDefault = 0L ) const; 00552 00564 bool readBoolEntry( const QString& pKey, bool bDefault = false ) const; 00565 00577 bool readBoolEntry( const char *pKey, bool bDefault = false ) const; 00578 00590 QRect readRectEntry( const QString& pKey, const QRect* pDefault = 0L ) const; 00591 00603 QRect readRectEntry( const char *pKey, const QRect* pDefault = 0L ) const; 00604 00616 QPoint readPointEntry( const QString& pKey, const QPoint* pDefault = 0L ) const; 00617 00629 QPoint readPointEntry( const char *pKey, const QPoint* pDefault = 0L ) const; 00630 00642 QSize readSizeEntry( const QString& pKey, const QSize* pDefault = 0L ) const; 00643 00655 QSize readSizeEntry( const char *pKey, const QSize* pDefault = 0L ) const; 00656 00657 00669 QColor readColorEntry( const QString& pKey, const QColor* pDefault = 0L ) const; 00670 00682 QColor readColorEntry( const char *pKey, const QColor* pDefault = 0L ) const; 00683 00696 QDateTime readDateTimeEntry( const QString& pKey, const QDateTime* pDefault = 0L ) const; 00697 00710 QDateTime readDateTimeEntry( const char *pKey, const QDateTime* pDefault = 0L ) const; 00711 00720 QString readEntryUntranslated( const QString& pKey, 00721 const QString& aDefault = QString::null ) const; 00722 00731 QString readEntryUntranslated( const char *pKey, 00732 const QString& aDefault = QString::null ) const; 00733 00751 void writeEntry( const QString& pKey, const QString& pValue, 00752 bool bPersistent = true, bool bGlobal = false, 00753 bool bNLS = false ); 00754 00772 void writeEntry( const char *pKey, const QString& pValue, 00773 bool bPersistent = true, bool bGlobal = false, 00774 bool bNLS = false ); 00775 00795 void writeEntry( const QString& pKey, const QVariant& rValue, 00796 bool bPersistent = true, bool bGlobal = false, 00797 bool bNLS = false ); 00817 void writeEntry( const char *pKey, const QVariant& rValue, 00818 bool bPersistent = true, bool bGlobal = false, 00819 bool bNLS = false ); 00820 00841 void writeEntry( const QString& pKey, const QStrList &rValue, 00842 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00863 void writeEntry( const char *pKey, const QStrList &rValue, 00864 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00865 00886 void writeEntry( const QString& pKey, const QStringList &rValue, 00887 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00908 void writeEntry( const char *pKey, const QStringList &rValue, 00909 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00910 00911 00931 void writeEntry( const QString& pKey, const QValueList<int>& rValue, 00932 bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00952 void writeEntry( const char *pKey, const QValueList<int>& rValue, 00953 bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00954 00972 void writeEntry( const QString& pKey, const char *pValue, 00973 bool bPersistent = true, bool bGlobal = false, 00974 bool bNLS = false ) 00975 { writeEntry(pKey, QString::fromLatin1(pValue), bPersistent, bGlobal, bNLS); } 00993 void writeEntry( const char *pKey, const char *pValue, 00994 bool bPersistent = true, bool bGlobal = false, 00995 bool bNLS = false ) 00996 { writeEntry(pKey, QString::fromLatin1(pValue), bPersistent, bGlobal, bNLS); } 00997 01013 void writeEntry( const QString& pKey, int nValue, 01014 bool bPersistent = true, bool bGlobal = false, 01015 bool bNLS = false ); 01031 void writeEntry( const char *pKey, int nValue, 01032 bool bPersistent = true, bool bGlobal = false, 01033 bool bNLS = false ); 01034 01050 void writeEntry( const QString& pKey, unsigned int nValue, 01051 bool bPersistent = true, bool bGlobal = false, 01052 bool bNLS = false ); 01068 void writeEntry( const char *pKey, unsigned int nValue, 01069 bool bPersistent = true, bool bGlobal = false, 01070 bool bNLS = false ); 01071 01086 void writeEntry( const QString& pKey, long nValue, 01087 bool bPersistent = true, bool bGlobal = false, 01088 bool bNLS = false ); 01103 void writeEntry( const char *pKey, long nValue, 01104 bool bPersistent = true, bool bGlobal = false, 01105 bool bNLS = false ); 01106 01121 void writeEntry( const QString& pKey, unsigned long nValue, 01122 bool bPersistent = true, bool bGlobal = false, 01123 bool bNLS = false ); 01138 void writeEntry( const char *pKey, unsigned long nValue, 01139 bool bPersistent = true, bool bGlobal = false, 01140 bool bNLS = false ); 01141 01156 void writeEntry( const QString& pKey, Q_INT64 nValue, 01157 bool bPersistent = true, bool bGlobal = false, 01158 bool bNLS = false ); 01173 void writeEntry( const char *pKey, Q_INT64 nValue, 01174 bool bPersistent = true, bool bGlobal = false, 01175 bool bNLS = false ); 01176 01191 void writeEntry( const QString& pKey, Q_UINT64 nValue, 01192 bool bPersistent = true, bool bGlobal = false, 01193 bool bNLS = false ); 01208 void writeEntry( const char *pKey, Q_UINT64 nValue, 01209 bool bPersistent = true, bool bGlobal = false, 01210 bool bNLS = false ); 01211 01229 void writeEntry( const QString& pKey, double nValue, 01230 bool bPersistent = true, bool bGlobal = false, 01231 char format = 'g', int precision = 6, 01232 bool bNLS = false ); 01250 void writeEntry( const char *pKey, double nValue, 01251 bool bPersistent = true, bool bGlobal = false, 01252 char format = 'g', int precision = 6, 01253 bool bNLS = false ); 01254 01269 void writeEntry( const QString& pKey, bool bValue, 01270 bool bPersistent = true, bool bGlobal = false, 01271 bool bNLS = false ); 01286 void writeEntry( const char *pKey, bool bValue, 01287 bool bPersistent = true, bool bGlobal = false, 01288 bool bNLS = false ); 01289 01304 void writeEntry( const QString& pKey, const QFont& rFont, 01305 bool bPersistent = true, bool bGlobal = false, 01306 bool bNLS = false ); 01321 void writeEntry( const char *pKey, const QFont& rFont, 01322 bool bPersistent = true, bool bGlobal = false, 01323 bool bNLS = false ); 01324 01342 void writeEntry( const QString& pKey, const QColor& rColor, 01343 bool bPersistent = true, bool bGlobal = false, 01344 bool bNLS = false ); 01362 void writeEntry( const char *pKey, const QColor& rColor, 01363 bool bPersistent = true, bool bGlobal = false, 01364 bool bNLS = false ); 01365 01383 void writeEntry( const QString& pKey, const QDateTime& rDateTime, 01384 bool bPersistent = true, bool bGlobal = false, 01385 bool bNLS = false ); 01403 void writeEntry( const char *pKey, const QDateTime& rDateTime, 01404 bool bPersistent = true, bool bGlobal = false, 01405 bool bNLS = false ); 01406 01407 01425 void writeEntry( const QString& pKey, const QRect& rValue, 01426 bool bPersistent = true, bool bGlobal = false, 01427 bool bNLS = false ); 01445 void writeEntry( const char *pKey, const QRect& rValue, 01446 bool bPersistent = true, bool bGlobal = false, 01447 bool bNLS = false ); 01448 01466 void writeEntry( const QString& pKey, const QPoint& rValue, 01467 bool bPersistent = true, bool bGlobal = false, 01468 bool bNLS = false ); 01486 void writeEntry( const char *pKey, const QPoint& rValue, 01487 bool bPersistent = true, bool bGlobal = false, 01488 bool bNLS = false ); 01489 01507 void writeEntry( const QString& pKey, const QSize& rValue, 01508 bool bPersistent = true, bool bGlobal = false, 01509 bool bNLS = false ); 01527 void writeEntry( const char *pKey, const QSize& rValue, 01528 bool bPersistent = true, bool bGlobal = false, 01529 bool bNLS = false ); 01530 01548 void writePathEntry( const QString& pKey, const QString & path, 01549 bool bPersistent = true, bool bGlobal = false, 01550 bool bNLS = false ); 01568 void writePathEntry( const char *pKey, const QString & path, 01569 bool bPersistent = true, bool bGlobal = false, 01570 bool bNLS = false ); 01571 01595 void writePathEntry( const QString& pKey, const QStringList &rValue, 01596 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 01620 void writePathEntry( const char *pKey, const QStringList &rValue, 01621 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 01622 01623 01632 void deleteEntry( const QString& pKey, 01633 bool bNLS = false, bool bGlobal = false); 01642 void deleteEntry( const char *pKey, 01643 bool bNLS = false, bool bGlobal = false); 01644 01662 bool deleteGroup( const QString& group, bool bDeep = true, bool bGlobal = false ); 01663 01664 01672 void setDollarExpansion( bool _bExpand = true ) { bExpand = _bExpand; } 01673 01679 bool isDollarExpansion() const { return bExpand; } 01680 01695 virtual void rollback( bool bDeep = true ); 01696 01710 virtual void sync(); 01711 01716 bool isDirty() const { return bDirty; } 01717 01725 virtual void setReadOnly(bool _ro) { bReadOnly = _ro; } 01726 01732 bool isReadOnly() const { return bReadOnly; } 01733 01743 bool hasKey( const QString& key ) const; 01744 01755 virtual QMap<QString, QString> entryMap(const QString &group) const = 0; 01756 01769 virtual void reparseConfiguration() = 0; 01770 01775 bool isImmutable() const; 01776 01783 bool groupIsImmutable(const QString &group) const; 01784 01791 bool entryIsImmutable(const QString &key) const; 01792 01798 enum ConfigState { NoAccess, ReadOnly, ReadWrite }; 01799 01813 ConfigState getConfigState() const; 01814 01821 bool checkConfigFilesWritable(bool warnUser); 01822 01829 void setReadDefaults(bool b); 01830 01836 bool readDefaults() const; 01837 01849 void revertToDefault(const QString &key); 01850 01877 bool hasDefault(const QString &key) const; 01878 01879 protected: 01885 void setLocale(); 01886 01892 virtual void setDirty(bool _bDirty = true) { bDirty = _bDirty; } 01893 01899 virtual void parseConfigFiles(); 01900 01916 virtual KEntryMap internalEntryMap( const QString& pGroup ) const = 0; 01917 01929 virtual KEntryMap internalEntryMap() const = 0; 01930 01946 virtual void putData(const KEntryKey &_key, const KEntry &_data, bool _checkGroup = true) = 0; 01947 01962 virtual KEntry lookupData(const KEntryKey &_key) const = 0; 01963 01964 virtual bool internalHasGroup(const QCString &group) const = 0; 01965 01969 KConfigBackEnd *backEnd; 01970 public: 01974 void setGroup( const QCString &pGroup ); 01975 void setGroup( const char *pGroup ); 01976 bool hasGroup(const QCString &_pGroup) const; 01977 bool hasGroup(const char *_pGroup) const; 01978 bool hasKey( const char *pKey ) const; 01979 01980 protected: 01981 QCString readEntryUtf8( const char *pKey) const; 01982 01985 QCString mGroup; 01986 01989 QCString aLocaleString; 01990 01994 bool bDirty; 01995 01996 bool bLocaleInitialized; 01997 bool bReadOnly; // currently only used by KSimpleConfig 01998 mutable bool bExpand; // whether dollar expansion is used 01999 02000 protected: 02001 virtual void virtual_hook( int id, void* data ); 02002 private: 02003 class KConfigBasePrivate; 02004 KConfigBasePrivate *d; 02005 }; 02006 02007 class KConfigGroupSaverPrivate; 02008 02045 class KConfigGroupSaver // KDE4 remove 02046 { 02047 public: 02057 KConfigGroupSaver( KConfigBase* config, QString group ) 02058 /* KDE 4 : make the second parameter const QString & */ 02059 : _config(config), _oldgroup(config->group()) 02060 { _config->setGroup( group ); } 02061 02062 KConfigGroupSaver( KConfigBase* config, const char *group ) 02063 : _config(config), _oldgroup(config->group()) 02064 { _config->setGroup( group ); } 02065 02066 KConfigGroupSaver( KConfigBase* config, const QCString &group ) 02067 : _config(config), _oldgroup(config->group()) 02068 { _config->setGroup( group ); } 02069 02070 ~KConfigGroupSaver() { _config->setGroup( _oldgroup ); } 02071 02072 KConfigBase* config() { return _config; }; 02073 02074 private: 02075 KConfigBase* _config; 02076 QString _oldgroup; 02077 02078 KConfigGroupSaver(const KConfigGroupSaver&); 02079 KConfigGroupSaver& operator=(const KConfigGroupSaver&); 02080 02081 KConfigGroupSaverPrivate *d; 02082 }; 02083 02084 class KConfigGroupPrivate; 02085 02089 class KConfigGroup: public KConfigBase 02090 { 02091 public: 02096 KConfigGroup(KConfigBase *master, const QCString &group); 02103 KConfigGroup(KConfigBase *master, const QString &group); 02111 KConfigGroup(KConfigBase *master, const char * group); 02112 02119 void deleteGroup(bool bGlobal = false); 02120 02121 // The following functions are reimplemented: 02122 virtual void setDirty(bool b); 02123 virtual void putData(const KEntryKey &_key, const KEntry &_data, bool _checkGroup = true); 02124 virtual KEntry lookupData(const KEntryKey &_key) const; 02125 virtual void sync(); 02126 02127 private: 02128 // Hide the following members: 02129 void setGroup() { } 02130 void setDesktopGroup() { } 02131 void group() { } 02132 void hasGroup() { } 02133 void setReadOnly(bool) { } 02134 void isDirty() { } 02135 02136 // The following members are not used. 02137 virtual QStringList groupList() const { return QStringList(); } 02138 virtual void rollback(bool) { } 02139 virtual void reparseConfiguration() { } 02140 virtual QMap<QString, QString> entryMap(const QString &) const 02141 { return QMap<QString,QString>(); } 02142 virtual KEntryMap internalEntryMap( const QString&) const 02143 { return KEntryMap(); } 02144 virtual KEntryMap internalEntryMap() const 02145 { return KEntryMap(); } 02146 virtual bool internalHasGroup(const QCString &) const 02147 { return false; } 02148 02149 void getConfigState() { } 02150 02151 KConfigBase *mMaster; 02152 protected: 02153 virtual void virtual_hook( int id, void* data ); 02154 private: 02155 KConfigGroupPrivate* d; 02156 }; 02157 02158 #endif
KDE Logo
This file is part of the documentation for kdecore Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Sep 29 09:43:09 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003