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 Thu Sep 23 17:11:36 2004 by doxygen 1.3.8-20040913 written by Dimitri van Heesch, © 1997-2003