libkdepim Library API Documentation

kprefs.cpp

00001 /*
00002     This file is part of KOrganizer.
00003     Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Library General Public
00007     License as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Library General Public License for more details.
00014 
00015     You should have received a copy of the GNU Library General Public License
00016     along with this library; see the file COPYING.LIB.  If not, write to
00017     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00018     Boston, MA 02111-1307, USA.
00019 */
00020 
00021 // $Id: kprefs.cpp,v 1.2 2002/08/05 10:59:54 janpascal Exp $
00022 
00023 #include <qcolor.h>
00024 
00025 #include <kconfig.h>
00026 #include <kstandarddirs.h>
00027 #include <kglobal.h>
00028 #include <kdebug.h>
00029 
00030 #include "kprefs.h"
00031 
00032 class KPrefsItemBool : public KPrefsItem {
00033   public:
00034     KPrefsItemBool(const QString &group,const QString &name,bool *,bool defaultValue=true);
00035     virtual ~KPrefsItemBool() {}
00036     
00037     void setDefault();
00038     void readConfig(KConfig *);
00039     void writeConfig(KConfig *);
00040 
00041   private:
00042     bool *mReference;
00043     bool mDefault;
00044 };
00045 
00046 class KPrefsItemInt : public KPrefsItem {
00047   public:
00048     KPrefsItemInt(const QString &group,const QString &name,int *,int defaultValue=0);
00049     virtual ~KPrefsItemInt() {}
00050     
00051     void setDefault();
00052     void readConfig(KConfig *);
00053     void writeConfig(KConfig *);
00054 
00055   private:
00056     int *mReference;
00057     int mDefault;
00058 };
00059 
00060 
00061 class KPrefsItemColor : public KPrefsItem {
00062   public:
00063     KPrefsItemColor(const QString &group,const QString &name,QColor *,
00064                     const QColor &defaultValue=QColor(128,128,128));
00065     virtual ~KPrefsItemColor() {}
00066     
00067     void setDefault();
00068     void readConfig(KConfig *);
00069     void writeConfig(KConfig *);    
00070 
00071   private:
00072     QColor *mReference;
00073     QColor mDefault;
00074 };
00075 
00076 
00077 class KPrefsItemFont : public KPrefsItem {
00078   public:
00079     KPrefsItemFont(const QString &group,const QString &name,QFont *,
00080                    const QFont &defaultValue=QFont("helvetica",12));
00081     virtual ~KPrefsItemFont() {}
00082     
00083     void setDefault();
00084     void readConfig(KConfig *);
00085     void writeConfig(KConfig *);    
00086 
00087   private:
00088     QFont *mReference;
00089     QFont mDefault;
00090 };
00091 
00092 
00093 class KPrefsItemString : public KPrefsItem {
00094   public:
00095     KPrefsItemString(const QString &group,const QString &name,QString *,
00096                      const QString &defaultValue="", bool isPassword=false);
00097     virtual ~KPrefsItemString() {}
00098     
00099     void setDefault();
00100     void readConfig(KConfig *);
00101     void writeConfig(KConfig *);    
00102 
00103   private:
00104     QString *mReference;
00105     QString mDefault;
00106     bool mPassword;
00107 };
00108 
00109 
00110 class KPrefsItemStringList : public KPrefsItem {
00111   public:
00112     KPrefsItemStringList(const QString &group,const QString &name,QStringList *,
00113                          const QStringList &defaultValue=QStringList());
00114     virtual ~KPrefsItemStringList() {}
00115     
00116     void setDefault();
00117     void readConfig(KConfig *);
00118     void writeConfig(KConfig *);    
00119 
00120   private:
00121     QStringList *mReference;
00122     QStringList mDefault;
00123 };
00124 
00125 
00126 class KPrefsItemIntList : public KPrefsItem {
00127   public:
00128     KPrefsItemIntList(const QString &group,const QString &name,QValueList<int> *,
00129                       const QValueList<int> &defaultValue=QValueList<int>());
00130     virtual ~KPrefsItemIntList() {}
00131     
00132     void setDefault();
00133     void readConfig(KConfig *);
00134     void writeConfig(KConfig *);    
00135 
00136   private:
00137     QValueList<int> *mReference;
00138     QValueList<int> mDefault;
00139 };
00140 
00141 
00142 KPrefsItemBool::KPrefsItemBool(const QString &group,const QString &name,
00143                                bool *reference,bool defaultValue) :
00144   KPrefsItem(group,name)
00145 {
00146   mReference = reference;
00147   mDefault = defaultValue;
00148 }
00149 
00150 void KPrefsItemBool::setDefault()
00151 {
00152   *mReference = mDefault;
00153 }
00154 
00155 void KPrefsItemBool::writeConfig(KConfig *config)
00156 {
00157   config->setGroup(mGroup);
00158   config->writeEntry(mName,*mReference);
00159 }
00160 
00161 
00162 void KPrefsItemBool::readConfig(KConfig *config)
00163 {
00164   config->setGroup(mGroup);
00165   *mReference = config->readBoolEntry(mName,mDefault);
00166 }
00167 
00168 
00169 KPrefsItemInt::KPrefsItemInt(const QString &group,const QString &name,
00170                              int *reference,int defaultValue) :
00171   KPrefsItem(group,name)
00172 {
00173   mReference = reference;
00174   mDefault = defaultValue;
00175 }
00176 
00177 void KPrefsItemInt::setDefault()
00178 {
00179   *mReference = mDefault;
00180 }
00181 
00182 void KPrefsItemInt::writeConfig(KConfig *config)
00183 {
00184   config->setGroup(mGroup);
00185   config->writeEntry(mName,*mReference);
00186 }
00187 
00188 void KPrefsItemInt::readConfig(KConfig *config)
00189 {
00190   config->setGroup(mGroup);
00191   *mReference = config->readNumEntry(mName,mDefault);
00192 }
00193 
00194 
00195 KPrefsItemColor::KPrefsItemColor(const QString &group,const QString &name,
00196                                  QColor *reference,const QColor &defaultValue) :
00197   KPrefsItem(group,name)
00198 {
00199   mReference = reference;
00200   mDefault = defaultValue;
00201 }
00202 
00203 void KPrefsItemColor::setDefault()
00204 {
00205   *mReference = mDefault;
00206 }
00207 
00208 void KPrefsItemColor::writeConfig(KConfig *config)
00209 {
00210   config->setGroup(mGroup);
00211   config->writeEntry(mName,*mReference);
00212 }
00213 
00214 void KPrefsItemColor::readConfig(KConfig *config)
00215 {
00216   config->setGroup(mGroup);
00217   *mReference = config->readColorEntry(mName,&mDefault);
00218 }
00219 
00220 
00221 KPrefsItemFont::KPrefsItemFont(const QString &group,const QString &name,
00222                                QFont *reference,const QFont &defaultValue) :
00223   KPrefsItem(group,name)
00224 {
00225   mReference = reference;
00226   mDefault = defaultValue;
00227 }
00228 
00229 void KPrefsItemFont::setDefault()
00230 {
00231   *mReference = mDefault;
00232 }
00233 
00234 void KPrefsItemFont::writeConfig(KConfig *config)
00235 {
00236   config->setGroup(mGroup);
00237   config->writeEntry(mName,*mReference);
00238 }
00239 
00240 void KPrefsItemFont::readConfig(KConfig *config)
00241 {
00242   config->setGroup(mGroup);
00243   *mReference = config->readFontEntry(mName,&mDefault);
00244 }
00245 
00246 
00247 QString endecryptStr( const QString &aStr )
00248 {
00249   QString result;
00250   for (uint i = 0; i < aStr.length(); i++)
00251     result += (aStr[i].unicode() < 0x20) ? aStr[i] :
00252       QChar(0x1001F - aStr[i].unicode());
00253   return result;
00254 }
00255 
00256 
00257 KPrefsItemString::KPrefsItemString(const QString &group,const QString &name,
00258                                    QString *reference,const QString &defaultValue,
00259                                    bool isPassword) :
00260   KPrefsItem(group,name)
00261 {
00262   mReference = reference;
00263   mDefault = defaultValue;
00264   mPassword = isPassword;
00265 }
00266 
00267 void KPrefsItemString::setDefault()
00268 {
00269   *mReference = mDefault;
00270 }
00271 
00272 void KPrefsItemString::writeConfig(KConfig *config)
00273 {
00274   config->setGroup(mGroup);
00275   if ( mPassword )
00276     config->writeEntry(mName, endecryptStr( *mReference ) );
00277   else
00278     config->writeEntry(mName,*mReference);
00279 }
00280 
00281 void KPrefsItemString::readConfig(KConfig *config)
00282 {
00283   config->setGroup(mGroup);
00284   if ( mPassword ) 
00285     if ( config->hasKey( mName ) )
00286       *mReference = endecryptStr( config->readEntry( mName ) );
00287     else
00288       *mReference = mDefault;
00289   else
00290     *mReference = config->readEntry(mName,mDefault);
00291 }
00292 
00293 
00294 KPrefsItemStringList::KPrefsItemStringList(const QString &group,const QString &name,
00295                                            QStringList *reference,const QStringList &defaultValue) :
00296   KPrefsItem(group,name)
00297 {
00298   mReference = reference;
00299   mDefault = defaultValue;
00300 }
00301 
00302 void KPrefsItemStringList::setDefault()
00303 {
00304   *mReference = mDefault;
00305 }
00306 
00307 void KPrefsItemStringList::writeConfig(KConfig *config)
00308 {
00309   config->setGroup(mGroup);
00310   config->writeEntry(mName,*mReference);
00311 }
00312 
00313 void KPrefsItemStringList::readConfig(KConfig *config)
00314 {
00315   config->setGroup(mGroup);
00316   *mReference = config->readListEntry(mName);
00317 }
00318 
00319 
00320 KPrefsItemIntList::KPrefsItemIntList(const QString &group,const QString &name,
00321                                      QValueList<int> *reference,const QValueList<int> &defaultValue) :
00322   KPrefsItem(group,name)
00323 {
00324   mReference = reference;
00325   mDefault = defaultValue;
00326 }
00327 
00328 void KPrefsItemIntList::setDefault()
00329 {
00330   *mReference = mDefault;
00331 }
00332 
00333 void KPrefsItemIntList::writeConfig(KConfig *config)
00334 {
00335   config->setGroup(mGroup);
00336   config->writeEntry(mName,*mReference);
00337 }
00338 
00339 void KPrefsItemIntList::readConfig(KConfig *config)
00340 {
00341   config->setGroup(mGroup);
00342   *mReference = config->readIntListEntry(mName);
00343 }
00344 
00345 
00346 QString *KPrefs::mCurrentGroup = 0;
00347 
00348 KPrefs::KPrefs(const QString &configname)
00349 {
00350   if (!configname.isEmpty()) {
00351     mConfig = new KConfig(locateLocal("config",configname));
00352   } else {
00353     mConfig = KGlobal::config();
00354   }
00355 
00356   mItems.setAutoDelete(true);
00357 
00358   // Set default group
00359   if (mCurrentGroup == 0) mCurrentGroup = new QString("No Group");
00360 }
00361 
00362 KPrefs::~KPrefs()
00363 {
00364   if (mConfig != KGlobal::config()) {
00365     delete mConfig;
00366   }
00367 }
00368 
00369 void KPrefs::setCurrentGroup(const QString &group)
00370 {
00371   if (mCurrentGroup) delete mCurrentGroup;
00372   mCurrentGroup = new QString(group);
00373 }
00374 
00375 KConfig *KPrefs::config() const
00376 {
00377   return mConfig;
00378 }
00379 
00380 void KPrefs::setDefaults()
00381 {
00382   KPrefsItem *item;
00383   for(item = mItems.first();item;item = mItems.next()) {
00384     item->setDefault();
00385   }
00386 
00387   usrSetDefaults();
00388 }
00389 
00390 void KPrefs::readConfig()
00391 {
00392   KPrefsItem *item;
00393   for(item = mItems.first();item;item = mItems.next()) {
00394     item->readConfig(mConfig);
00395   }
00396 
00397   usrReadConfig();
00398 }
00399 
00400 void KPrefs::writeConfig()
00401 {
00402   KPrefsItem *item;
00403   for(item = mItems.first();item;item = mItems.next()) {
00404     item->writeConfig(mConfig);
00405   }
00406 
00407   usrWriteConfig();
00408 
00409   mConfig->sync();
00410 }
00411 
00412 
00413 void KPrefs::addItem(KPrefsItem *item)
00414 {
00415   mItems.append(item);
00416 }
00417 
00418 void KPrefs::addItemBool(const QString &key,bool *reference,bool defaultValue)
00419 {
00420   addItem(new KPrefsItemBool(*mCurrentGroup,key,reference,defaultValue));
00421 }
00422 
00423 void KPrefs::addItemInt(const QString &key,int *reference,int defaultValue)
00424 {
00425   addItem(new KPrefsItemInt(*mCurrentGroup,key,reference,defaultValue));
00426 }
00427 
00428 void KPrefs::addItemColor(const QString &key,QColor *reference,const QColor &defaultValue)
00429 {
00430   addItem(new KPrefsItemColor(*mCurrentGroup,key,reference,defaultValue));
00431 }
00432 
00433 void KPrefs::addItemFont(const QString &key,QFont *reference,const QFont &defaultValue)
00434 {
00435   addItem(new KPrefsItemFont(*mCurrentGroup,key,reference,defaultValue));
00436 }
00437 
00438 void KPrefs::addItemString(const QString &key,QString *reference,const QString &defaultValue)
00439 {
00440   addItem(new KPrefsItemString(*mCurrentGroup,key,reference,defaultValue,false));
00441 }
00442 
00443 void KPrefs::addItemPassword(const QString &key,QString *reference,const QString &defaultValue)
00444 {
00445   addItem(new KPrefsItemString(*mCurrentGroup,key,reference,defaultValue,true));
00446 }
00447 
00448 void KPrefs::addItemStringList(const QString &key,QStringList *reference,
00449                                const QStringList &defaultValue)
00450 {
00451   addItem(new KPrefsItemStringList(*mCurrentGroup,key,reference,defaultValue));
00452 }
00453 
00454 void KPrefs::addItemIntList(const QString &key,QValueList<int> *reference,
00455                             const QValueList<int> &defaultValue)
00456 {
00457   addItem(new KPrefsItemIntList(*mCurrentGroup,key,reference,defaultValue));
00458 }
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.5.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Sun Feb 15 11:40:22 2004 by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2001