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 // $Id: kconfigbase.h,v 1.104 2003/11/26 23:28:41 ossi Exp $ 00024 00025 #ifndef _KCONFIGBASE_H 00026 #define _KCONFIGBASE_H 00027 00028 #include <qobject.h> 00029 #include <qcolor.h> 00030 #include <qfont.h> 00031 #include <qdatetime.h> 00032 #include <qstrlist.h> 00033 #include <qstringlist.h> 00034 #include <qvariant.h> 00035 #include <qmap.h> 00036 00037 #include "kconfigdata.h" 00038 00039 class KConfigBackEnd; 00040 class KConfigBasePrivate; 00041 class KConfigGroup; 00042 00070 class KConfigBase : public QObject 00071 { 00072 Q_OBJECT 00073 00074 friend class KConfigBackEnd; 00075 friend class KConfigINIBackEnd; 00076 friend class KConfigGroup; 00077 00078 public: 00082 KConfigBase(); 00083 00087 virtual ~KConfigBase(); 00088 00099 void setGroup( const QString& group ); 00100 00105 void setDesktopGroup(); 00106 00113 QString group() const; 00114 00121 bool hasGroup(const QString &group) const; 00122 00128 virtual QStringList groupList() const = 0; 00129 00135 QString locale() const; 00136 00144 QString readEntry(const QString& pKey, 00145 const QString& aDefault = QString::null ) const; 00146 00154 QString readEntry(const char *pKey, 00155 const QString& aDefault = QString::null ) const; 00156 00170 QVariant readPropertyEntry( const QString& pKey, QVariant::Type ) const; 00171 00186 QVariant readPropertyEntry( const char *pKey, QVariant::Type ) const; 00187 00202 QVariant readPropertyEntry( const QString& pKey, 00203 const QVariant &aDefault) const; 00204 00219 QVariant readPropertyEntry( const char *pKey, 00220 const QVariant &aDefault) const; 00221 00232 int readListEntry( const QString& pKey, QStrList &list, char sep = ',' ) const; 00233 00244 int readListEntry( const char *pKey, QStrList &list, char sep = ',' ) const; 00245 00253 QStringList readListEntry( const QString& pKey, char sep = ',' ) const; 00254 00262 QStringList readListEntry( const char *pKey, char sep = ',' ) const; 00263 00270 QValueList<int> readIntListEntry( const QString& pKey ) const; 00271 00278 QValueList<int> readIntListEntry( const char *pKey ) const; 00279 00291 QString readPathEntry( const QString& pKey, const QString & aDefault = QString::null ) const; 00292 00304 QString readPathEntry( const char *pKey, const QString & aDefault = QString::null ) const; 00305 00318 QStringList readPathListEntry( const QString& pKey, char sep = ',' ) const; 00319 00332 QStringList readPathListEntry( const char *pKey, char sep = ',' ) const; 00333 00334 00346 int readNumEntry( const QString& pKey, int nDefault = 0 ) const; 00347 00359 int readNumEntry( const char *pKey, int nDefault = 0 ) const; 00360 00372 unsigned int readUnsignedNumEntry( const QString& pKey, unsigned int nDefault = 0 ) const; 00373 00385 unsigned int readUnsignedNumEntry( const char *pKey, unsigned int nDefault = 0 ) const; 00386 00387 00399 long readLongNumEntry( const QString& pKey, long nDefault = 0 ) const; 00400 00412 long readLongNumEntry( const char *pKey, long nDefault = 0 ) const; 00413 00425 unsigned long readUnsignedLongNumEntry( const QString& pKey, unsigned long nDefault = 0 ) const; 00426 00438 unsigned long readUnsignedLongNumEntry( const char *pKey, unsigned long nDefault = 0 ) const; 00439 00451 Q_INT64 readNum64Entry( const QString& pKey, Q_INT64 nDefault = 0 ) const; 00452 00464 Q_INT64 readNum64Entry( const char *pKey, Q_INT64 nDefault = 0 ) const; 00465 00477 Q_UINT64 readUnsignedNum64Entry( const QString& pKey, Q_UINT64 nDefault = 0 ) const; 00478 00490 Q_UINT64 readUnsignedNum64Entry( const char *pKey, Q_UINT64 nDefault = 0 ) const; 00491 00503 double readDoubleNumEntry( const QString& pKey, double nDefault = 0.0 ) const; 00504 00516 double readDoubleNumEntry( const char *pKey, double nDefault = 0.0 ) const; 00517 00529 QFont readFontEntry( const QString& pKey, const QFont* pDefault = 0L ) const; 00530 00542 QFont readFontEntry( const char *pKey, const QFont* pDefault = 0L ) const; 00543 00555 bool readBoolEntry( const QString& pKey, const bool bDefault = false ) const; 00556 00568 bool readBoolEntry( const char *pKey, const bool bDefault = false ) const; 00569 00581 QRect readRectEntry( const QString& pKey, const QRect* pDefault = 0L ) const; 00582 00594 QRect readRectEntry( const char *pKey, const QRect* pDefault = 0L ) const; 00595 00607 QPoint readPointEntry( const QString& pKey, const QPoint* pDefault = 0L ) const; 00608 00620 QPoint readPointEntry( const char *pKey, const QPoint* pDefault = 0L ) const; 00621 00633 QSize readSizeEntry( const QString& pKey, const QSize* pDefault = 0L ) const; 00634 00646 QSize readSizeEntry( const char *pKey, const QSize* pDefault = 0L ) const; 00647 00648 00660 QColor readColorEntry( const QString& pKey, const QColor* pDefault = 0L ) const; 00661 00673 QColor readColorEntry( const char *pKey, const QColor* pDefault = 0L ) const; 00674 00687 QDateTime readDateTimeEntry( const QString& pKey, const QDateTime* pDefault = 0L ) const; 00688 00701 QDateTime readDateTimeEntry( const char *pKey, const QDateTime* pDefault = 0L ) const; 00702 00711 QString readEntryUntranslated( const QString& pKey, 00712 const QString& aDefault = QString::null ) const; 00713 00722 QString readEntryUntranslated( const char *pKey, 00723 const QString& aDefault = QString::null ) const; 00724 00742 void writeEntry( const QString& pKey, const QString& pValue, 00743 bool bPersistent = true, bool bGlobal = false, 00744 bool bNLS = false ); 00745 00763 void writeEntry( const char *pKey, const QString& pValue, 00764 bool bPersistent = true, bool bGlobal = false, 00765 bool bNLS = false ); 00766 00786 void writeEntry( const QString& pKey, const QVariant& rValue, 00787 bool bPersistent = true, bool bGlobal = false, 00788 bool bNLS = false ); 00808 void writeEntry( const char *pKey, const QVariant& rValue, 00809 bool bPersistent = true, bool bGlobal = false, 00810 bool bNLS = false ); 00811 00832 void writeEntry( const QString& pKey, const QStrList &rValue, 00833 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00854 void writeEntry( const char *pKey, const QStrList &rValue, 00855 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00856 00877 void writeEntry( const QString& pKey, const QStringList &rValue, 00878 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00899 void writeEntry( const char *pKey, const QStringList &rValue, 00900 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00901 00902 00922 void writeEntry( const QString& pKey, const QValueList<int>& rValue, 00923 bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00943 void writeEntry( const char *pKey, const QValueList<int>& rValue, 00944 bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 00945 00963 void writeEntry( const QString& pKey, const char *pValue, 00964 bool bPersistent = true, bool bGlobal = false, 00965 bool bNLS = false ) 00966 { writeEntry(pKey, QString::fromLatin1(pValue), bPersistent, bGlobal, bNLS); } 00984 void writeEntry( const char *pKey, const char *pValue, 00985 bool bPersistent = true, bool bGlobal = false, 00986 bool bNLS = false ) 00987 { writeEntry(pKey, QString::fromLatin1(pValue), bPersistent, bGlobal, bNLS); } 00988 01004 void writeEntry( const QString& pKey, int nValue, 01005 bool bPersistent = true, bool bGlobal = false, 01006 bool bNLS = false ); 01022 void writeEntry( const char *pKey, int nValue, 01023 bool bPersistent = true, bool bGlobal = false, 01024 bool bNLS = false ); 01025 01041 void writeEntry( const QString& pKey, unsigned int nValue, 01042 bool bPersistent = true, bool bGlobal = false, 01043 bool bNLS = false ); 01059 void writeEntry( const char *pKey, unsigned int nValue, 01060 bool bPersistent = true, bool bGlobal = false, 01061 bool bNLS = false ); 01062 01077 void writeEntry( const QString& pKey, long nValue, 01078 bool bPersistent = true, bool bGlobal = false, 01079 bool bNLS = false ); 01094 void writeEntry( const char *pKey, long nValue, 01095 bool bPersistent = true, bool bGlobal = false, 01096 bool bNLS = false ); 01097 01112 void writeEntry( const QString& pKey, unsigned long nValue, 01113 bool bPersistent = true, bool bGlobal = false, 01114 bool bNLS = false ); 01129 void writeEntry( const char *pKey, unsigned long nValue, 01130 bool bPersistent = true, bool bGlobal = false, 01131 bool bNLS = false ); 01132 01147 void writeEntry( const QString& pKey, Q_LLONG nValue, 01148 bool bPersistent = true, bool bGlobal = false, 01149 bool bNLS = false ); 01164 void writeEntry( const char *pKey, Q_LLONG nValue, 01165 bool bPersistent = true, bool bGlobal = false, 01166 bool bNLS = false ); 01167 01182 void writeEntry( const QString& pKey, Q_ULLONG nValue, 01183 bool bPersistent = true, bool bGlobal = false, 01184 bool bNLS = false ); 01199 void writeEntry( const char *pKey, Q_ULLONG nValue, 01200 bool bPersistent = true, bool bGlobal = false, 01201 bool bNLS = false ); 01202 01220 void writeEntry( const QString& pKey, double nValue, 01221 bool bPersistent = true, bool bGlobal = false, 01222 char format = 'g', int precision = 6, 01223 bool bNLS = false ); 01241 void writeEntry( const char *pKey, double nValue, 01242 bool bPersistent = true, bool bGlobal = false, 01243 char format = 'g', int precision = 6, 01244 bool bNLS = false ); 01245 01260 void writeEntry( const QString& pKey, bool bValue, 01261 bool bPersistent = true, bool bGlobal = false, 01262 bool bNLS = false ); 01277 void writeEntry( const char *pKey, bool bValue, 01278 bool bPersistent = true, bool bGlobal = false, 01279 bool bNLS = false ); 01280 01295 void writeEntry( const QString& pKey, const QFont& rFont, 01296 bool bPersistent = true, bool bGlobal = false, 01297 bool bNLS = false ); 01312 void writeEntry( const char *pKey, const QFont& rFont, 01313 bool bPersistent = true, bool bGlobal = false, 01314 bool bNLS = false ); 01315 01333 void writeEntry( const QString& pKey, const QColor& rColor, 01334 bool bPersistent = true, bool bGlobal = false, 01335 bool bNLS = false ); 01353 void writeEntry( const char *pKey, const QColor& rColor, 01354 bool bPersistent = true, bool bGlobal = false, 01355 bool bNLS = false ); 01356 01374 void writeEntry( const QString& pKey, const QDateTime& rDateTime, 01375 bool bPersistent = true, bool bGlobal = false, 01376 bool bNLS = false ); 01394 void writeEntry( const char *pKey, const QDateTime& rDateTime, 01395 bool bPersistent = true, bool bGlobal = false, 01396 bool bNLS = false ); 01397 01398 01416 void writeEntry( const QString& pKey, const QRect& rValue, 01417 bool bPersistent = true, bool bGlobal = false, 01418 bool bNLS = false ); 01436 void writeEntry( const char *pKey, const QRect& rValue, 01437 bool bPersistent = true, bool bGlobal = false, 01438 bool bNLS = false ); 01439 01457 void writeEntry( const QString& pKey, const QPoint& rValue, 01458 bool bPersistent = true, bool bGlobal = false, 01459 bool bNLS = false ); 01477 void writeEntry( const char *pKey, const QPoint& rValue, 01478 bool bPersistent = true, bool bGlobal = false, 01479 bool bNLS = false ); 01480 01498 void writeEntry( const QString& pKey, const QSize& rValue, 01499 bool bPersistent = true, bool bGlobal = false, 01500 bool bNLS = false ); 01518 void writeEntry( const char *pKey, const QSize& rValue, 01519 bool bPersistent = true, bool bGlobal = false, 01520 bool bNLS = false ); 01521 01539 void writePathEntry( const QString& pKey, const QString & path, 01540 bool bPersistent = true, bool bGlobal = false, 01541 bool bNLS = false ); 01559 void writePathEntry( const char *pKey, const QString & path, 01560 bool bPersistent = true, bool bGlobal = false, 01561 bool bNLS = false ); 01562 01586 void writePathEntry( const QString& pKey, const QStringList &rValue, 01587 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 01611 void writePathEntry( const char *pKey, const QStringList &rValue, 01612 char sep = ',', bool bPersistent = true, bool bGlobal = false, bool bNLS = false ); 01613 01614 01623 void deleteEntry( const QString& pKey, 01624 bool bNLS = false, bool bGlobal = false); 01633 void deleteEntry( const char *pKey, 01634 bool bNLS = false, bool bGlobal = false); 01635 01653 bool deleteGroup( const QString& group, bool bDeep = true, bool bGlobal = false ); 01654 01655 01663 void setDollarExpansion( bool _bExpand = true ) { bExpand = _bExpand; } 01664 01670 bool isDollarExpansion() const { return bExpand; } 01671 01686 virtual void rollback( bool bDeep = true ); 01687 01701 virtual void sync(); 01702 01707 bool isDirty() const { return bDirty; } 01708 01716 virtual void setReadOnly(bool _ro) { bReadOnly = _ro; } 01717 01723 bool isReadOnly() const { return bReadOnly; } 01724 01734 bool hasKey( const QString& key ) const; 01735 01746 virtual QMap<QString, QString> entryMap(const QString &group) const = 0; 01747 01760 virtual void reparseConfiguration() = 0; 01761 01766 bool isImmutable() const; 01767 01774 bool groupIsImmutable(const QString &group) const; 01775 01782 bool entryIsImmutable(const QString &key) const; 01783 01789 enum ConfigState { NoAccess, ReadOnly, ReadWrite }; 01790 01804 ConfigState getConfigState() const; 01805 01812 bool checkConfigFilesWritable(bool warnUser); 01813 01820 void setReadDefaults(bool b); 01821 01827 bool readDefaults() const; 01828 01840 void revertToDefault(const QString &key); 01841 01862 bool hasDefault(const QString &key) const; 01863 01864 protected: 01870 void setLocale(); 01871 01877 virtual void setDirty(bool _bDirty = true) { bDirty = _bDirty; } 01878 01884 virtual void parseConfigFiles(); 01885 01901 virtual KEntryMap internalEntryMap( const QString& pGroup ) const = 0; 01902 01914 virtual KEntryMap internalEntryMap() const = 0; 01915 01931 virtual void putData(const KEntryKey &_key, const KEntry &_data, bool _checkGroup = true) = 0; 01932 01947 virtual KEntry lookupData(const KEntryKey &_key) const = 0; 01948 01949 virtual bool internalHasGroup(const QCString &group) const = 0; 01950 01954 KConfigBackEnd *backEnd; 01955 public: 01959 void setGroup( const QCString &pGroup ); 01960 void setGroup( const char *pGroup ); 01961 bool hasGroup(const QCString &_pGroup) const; 01962 bool hasGroup(const char *_pGroup) const; 01963 bool hasKey( const char *pKey ) const; 01964 01965 protected: 01966 QCString readEntryUtf8( const char *pKey) const; 01967 01970 QCString mGroup; 01971 01974 QCString aLocaleString; 01975 01979 bool bDirty; 01980 01981 bool bLocaleInitialized; 01982 bool bReadOnly; // currently only used by KSimpleConfig 01983 mutable bool bExpand; // whether dollar expansion is used 01984 01985 protected: 01986 virtual void virtual_hook( int id, void* data ); 01987 private: 01988 class KConfigBasePrivate; 01989 KConfigBasePrivate *d; 01990 }; 01991 01992 class KConfigGroupSaverPrivate; 01993 02027 class KConfigGroupSaver 02028 { 02029 public: 02039 KConfigGroupSaver( KConfigBase* config, QString group ) 02040 /* KDE 4 : make the second parameter const QString & */ 02041 : _config(config), _oldgroup(config->group()) 02042 { _config->setGroup( group ); } 02043 02044 KConfigGroupSaver( KConfigBase* config, const char *group ) 02045 : _config(config), _oldgroup(config->group()) 02046 { _config->setGroup( group ); } 02047 02048 KConfigGroupSaver( KConfigBase* config, const QCString &group ) 02049 : _config(config), _oldgroup(config->group()) 02050 { _config->setGroup( group ); } 02051 02052 ~KConfigGroupSaver() { _config->setGroup( _oldgroup ); } 02053 02054 KConfigBase* config() { return _config; }; 02055 02056 private: 02057 KConfigBase* _config; 02058 QString _oldgroup; 02059 02060 KConfigGroupSaver(const KConfigGroupSaver&); 02061 KConfigGroupSaver& operator=(const KConfigGroupSaver&); 02062 02063 KConfigGroupSaverPrivate *d; 02064 }; 02065 02066 class KConfigGroupPrivate; 02067 02071 class KConfigGroup: public KConfigBase 02072 { 02073 public: 02078 KConfigGroup(KConfigBase *master, const QCString &group); 02085 KConfigGroup(KConfigBase *master, const QString &group); 02093 KConfigGroup(KConfigBase *master, const char * group); 02094 02101 void deleteGroup(bool bGlobal = false); 02102 02103 // The following functions are reimplemented: 02104 virtual void setDirty(bool b); 02105 virtual void putData(const KEntryKey &_key, const KEntry &_data, bool _checkGroup = true); 02106 virtual KEntry lookupData(const KEntryKey &_key) const; 02107 virtual void sync(); 02108 02109 private: 02110 // Hide the following members: 02111 void setGroup() { } 02112 void setDesktopGroup() { } 02113 void group() { } 02114 void hasGroup() { } 02115 void setReadOnly(bool) { } 02116 void isDirty() { } 02117 02118 // The following members are not used. 02119 virtual QStringList groupList() const { return QStringList(); } 02120 virtual void rollback(bool) { } 02121 virtual void reparseConfiguration() { } 02122 virtual QMap<QString, QString> entryMap(const QString &) const 02123 { return QMap<QString,QString>(); } 02124 virtual KEntryMap internalEntryMap( const QString&) const 02125 { return KEntryMap(); } 02126 virtual KEntryMap internalEntryMap() const 02127 { return KEntryMap(); } 02128 virtual bool internalHasGroup(const QCString &) const 02129 { return false; } 02130 02131 void getConfigState() { } 02132 02133 KConfigBase *mMaster; 02134 protected: 02135 virtual void virtual_hook( int id, void* data ); 02136 private: 02137 KConfigGroupPrivate* d; 02138 }; 02139 02140 #endif
KDE Logo
This file is part of the documentation for kdecore Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun Oct 10 18:54:55 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003