libkdepim

kprefsdialog.h
00001 /*
00002     This file is part of libkdepim.
00003 
00004     Copyright (c) 2001-2003 Cornelius Schumacher <schumacher@kde.org>
00005     Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
00006     Copyright (C) 2005 Allen Winter <winter@kde.org>
00007 
00008     This library is free software; you can redistribute it and/or
00009     modify it under the terms of the GNU Library General Public
00010     License as published by the Free Software Foundation; either
00011     version 2 of the License, or (at your option) any later version.
00012 
00013     This library is distributed in the hope that it will be useful,
00014     but WITHOUT ANY WARRANTY; without even the implied warranty of
00015     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016     Library General Public License for more details.
00017 
00018     You should have received a copy of the GNU Library General Public License
00019     along with this library; see the file COPYING.LIB.  If not, write to
00020     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00021     Boston, MA 02110-1301, USA.
00022 */
00023 #ifndef KPREFSDIALOG_H
00024 #define KPREFSDIALOG_H
00025 
00026 #include <tqptrlist.h>
00027 #include <tqlineedit.h>
00028 #include <tqvaluelist.h>
00029 #include <tqdatetimeedit.h>
00030 
00031 #include <kdialogbase.h>
00032 #include <kcmodule.h>
00033 #include <kconfigskeleton.h>
00034 #include <kfile.h>
00035 #include <kdepimmacros.h>
00036 
00037 
00038 class KColorButton;
00039 class TQCheckBox;
00040 class TQComboBox;
00041 class TQLabel;
00042 class TQSpinBox;
00043 class TQButtonGroup;
00044 class TQTimeEdit;
00045 class KTimeEdit;
00046 class KDateEdit;
00047 class KURLRequester;
00048 
00058 class KDE_EXPORT KPrefsWid : public TQObject
00059 {
00060     Q_OBJECT
00061   TQ_OBJECT
00062   public:
00067     virtual void readConfig() = 0;
00072     virtual void writeConfig() = 0;
00073 
00077     virtual TQValueList<TQWidget *> widgets() const;
00078 
00079   signals:
00083     void changed();
00084 };
00085 
00092 class KDE_EXPORT KPrefsWidBool : public KPrefsWid
00093 {
00094   public:
00101     KPrefsWidBool( KConfigSkeleton::ItemBool *item, TQWidget *parent );
00102 
00106     TQCheckBox *checkBox();
00107 
00108     void readConfig();
00109     void writeConfig();
00110 
00111     TQValueList<TQWidget *> widgets() const;
00112 
00113   private:
00114     KConfigSkeleton::ItemBool *mItem;
00115 
00116     TQCheckBox *mCheck;
00117 };
00118 
00126 class KDE_EXPORT KPrefsWidInt : public KPrefsWid
00127 {
00128   public:
00136     KPrefsWidInt( KConfigSkeleton::ItemInt *item, TQWidget *parent );
00137 
00141     TQLabel *label();
00142 
00146     TQSpinBox *spinBox();
00147 
00148     void readConfig();
00149     void writeConfig();
00150 
00151     TQValueList<TQWidget *> widgets() const;
00152 
00153   private:
00154     KConfigSkeleton::ItemInt *mItem;
00155 
00156     TQLabel *mLabel;
00157     TQSpinBox *mSpin;
00158 };
00159 
00167 class KDE_EXPORT KPrefsWidTime : public KPrefsWid
00168 {
00169   public:
00176     KPrefsWidTime( KConfigSkeleton::ItemDateTime *item, TQWidget *parent );
00177 
00181     TQLabel *label();
00185     KTimeEdit *timeEdit();
00186 
00187     void readConfig();
00188     void writeConfig();
00189 
00190   private:
00191     KConfigSkeleton::ItemDateTime *mItem;
00192 
00193     TQLabel *mLabel;
00194     KTimeEdit *mTimeEdit;
00195 };
00196 
00204 class KDE_EXPORT KPrefsWidDuration : public KPrefsWid
00205 {
00206   public:
00214     KPrefsWidDuration( KConfigSkeleton::ItemDateTime *item, TQWidget *parent );
00215 
00219     TQLabel *label();
00223     TQTimeEdit *timeEdit();
00224 
00225     void readConfig();
00226     void writeConfig();
00227 
00228   private:
00229     KConfigSkeleton::ItemDateTime *mItem;
00230 
00231     TQLabel *mLabel;
00232     TQTimeEdit *mTimeEdit;
00233 };
00234 
00242 class KDE_EXPORT KPrefsWidDate : public KPrefsWid
00243 {
00244   public:
00251     KPrefsWidDate( KConfigSkeleton::ItemDateTime *item, TQWidget *parent );
00252 
00256     TQLabel *label();
00260     KDateEdit *dateEdit();
00261 
00262     void readConfig();
00263     void writeConfig();
00264 
00265   private:
00266     KConfigSkeleton::ItemDateTime *mItem;
00267 
00268     TQLabel *mLabel;
00269     KDateEdit *mDateEdit;
00270 };
00271 
00279 class KDE_EXPORT KPrefsWidColor : public KPrefsWid
00280 {
00281     Q_OBJECT
00282   TQ_OBJECT
00283   public:
00291     KPrefsWidColor( KConfigSkeleton::ItemColor *item, TQWidget *parent );
00295     ~KPrefsWidColor();
00296 
00300     TQLabel *label();
00304     KColorButton *button();
00305 
00306     void readConfig();
00307     void writeConfig();
00308 
00309   private:
00310     KConfigSkeleton::ItemColor *mItem;
00311 
00312     TQLabel *mLabel;
00313     KColorButton *mButton;
00314 };
00315 
00322 class KDE_EXPORT KPrefsWidFont : public KPrefsWid
00323 {
00324     Q_OBJECT
00325   TQ_OBJECT
00326   public:
00335     KPrefsWidFont( KConfigSkeleton::ItemFont *item,
00336                    TQWidget *parent, const TQString &sampleText );
00340     ~KPrefsWidFont();
00341 
00345     TQLabel *label();
00349     TQFrame *preview();
00353     TQPushButton *button();
00354 
00355     void readConfig();
00356     void writeConfig();
00357 
00358   protected slots:
00359     void selectFont();
00360 
00361   private:
00362     KConfigSkeleton::ItemFont *mItem;
00363 
00364     TQLabel *mLabel;
00365     TQLabel *mPreview;
00366     TQPushButton *mButton;
00367 };
00368 
00380 class KDE_EXPORT KPrefsWidRadios : public KPrefsWid
00381 {
00382   public:
00390     KPrefsWidRadios( KConfigSkeleton::ItemEnum *item, TQWidget *parent );
00391     virtual ~KPrefsWidRadios();
00392 
00399     void addRadio( const TQString &text,
00400                    const TQString &whatsThis = TQString() );
00401 
00405     TQButtonGroup *groupBox();
00406 
00407     void readConfig();
00408     void writeConfig();
00409 
00410     TQValueList<TQWidget *> widgets() const;
00411 
00412   private:
00413     KConfigSkeleton::ItemEnum *mItem;
00414 
00415     TQButtonGroup *mBox;
00416 };
00417 
00428 class KDE_EXPORT KPrefsWidCombo : public KPrefsWid
00429 {
00430   public:
00438     KPrefsWidCombo( KConfigSkeleton::ItemEnum *item, TQWidget *parent );
00439     virtual ~KPrefsWidCombo();
00440 
00441     void readConfig();
00442     void writeConfig();
00443 
00444     TQComboBox *comboBox();
00445     TQValueList<TQWidget *> widgets() const;
00446 
00447   private:
00448     KConfigSkeleton::ItemEnum *mItem;
00449     TQComboBox *mCombo;
00450 };
00451 
00452 
00453 
00461 class KDE_EXPORT KPrefsWidString : public KPrefsWid
00462 {
00463   public:
00472     KPrefsWidString( KConfigSkeleton::ItemString *item, TQWidget *parent,
00473                      TQLineEdit::EchoMode echomode=TQLineEdit::Normal );
00477     virtual ~KPrefsWidString();
00478 
00482     TQLabel *label();
00486     TQLineEdit *lineEdit();
00487 
00488     void readConfig();
00489     void writeConfig();
00490 
00491     TQValueList<TQWidget *> widgets() const;
00492 
00493   private:
00494     KConfigSkeleton::ItemString *mItem;
00495 
00496     TQLabel *mLabel;
00497     TQLineEdit *mEdit;
00498 };
00499 
00500 
00508 class KDE_EXPORT KPrefsWidPath : public KPrefsWid
00509 {
00510   public:
00520     KPrefsWidPath( KConfigSkeleton::ItemPath *item, TQWidget *parent,
00521                    const TQString &filter = TQString(), uint mode = KFile::File );
00525     virtual ~KPrefsWidPath();
00526 
00530     TQLabel *label();
00534     KURLRequester *urlRequester();
00535 
00536     void readConfig();
00537     void writeConfig();
00538 
00539     TQValueList<TQWidget *> widgets() const;
00540 
00541   private:
00542     KConfigSkeleton::ItemPath *mItem;
00543 
00544     TQLabel *mLabel;
00545     KURLRequester *mURLRequester;
00546 };
00547 
00548 
00557 class KDE_EXPORT KPrefsWidManager
00558 {
00559   public:
00565     KPrefsWidManager( KConfigSkeleton *prefs );
00569     virtual ~KPrefsWidManager();
00570 
00571     KConfigSkeleton *prefs() const { return mPrefs; }
00572 
00576     virtual void addWid( KPrefsWid * );
00577 
00584     KPrefsWidBool *addWidBool( KConfigSkeleton::ItemBool *item,
00585                                TQWidget *parent );
00586 
00593     KPrefsWidInt *addWidInt( KConfigSkeleton::ItemInt *item,
00594                              TQWidget *parent );
00595 
00602     KPrefsWidDate *addWidDate( KConfigSkeleton::ItemDateTime *item,
00603                                TQWidget *parent );
00604 
00611     KPrefsWidTime *addWidTime( KConfigSkeleton::ItemDateTime *item,
00612                                TQWidget *parent );
00613 
00620     KPrefsWidDuration *addWidDuration( KConfigSkeleton::ItemDateTime *item,
00621                                        TQWidget *parent );
00622 
00629     KPrefsWidColor *addWidColor( KConfigSkeleton::ItemColor *item,
00630                                  TQWidget *parent );
00631 
00639     KPrefsWidRadios *addWidRadios( KConfigSkeleton::ItemEnum *item,
00640                                    TQWidget *parent );
00641 
00649     KPrefsWidCombo *addWidCombo( KConfigSkeleton::ItemEnum *item,
00650                                    TQWidget *parent );
00651 
00658     KPrefsWidString *addWidString( KConfigSkeleton::ItemString *item,
00659                                    TQWidget *parent );
00660 
00669     KPrefsWidPath *addWidPath ( KConfigSkeleton::ItemPath *item, TQWidget *parent,
00670                                 const TQString &filter = TQString(),
00671                                 uint mode = KFile::File );
00672 
00679     KPrefsWidString *addWidPassword ( KConfigSkeleton::ItemString *item,
00680                                       TQWidget *parent );
00681 
00690     KPrefsWidFont *addWidFont( KConfigSkeleton::ItemFont *item,
00691                                TQWidget *parent, const TQString &sampleText );
00692 
00694     void setWidDefaults();
00695 
00697     void readWidConfig();
00698 
00700     void writeWidConfig();
00701 
00702   private:
00703     KConfigSkeleton *mPrefs;
00704 
00705     TQPtrList<KPrefsWid> mPrefsWids;
00706 };
00707 
00708 
00721 class KDE_EXPORT KPrefsDialog : public KDialogBase, public KPrefsWidManager
00722 {
00723     Q_OBJECT
00724   TQ_OBJECT
00725   public:
00734     KPrefsDialog( KConfigSkeleton *prefs, TQWidget *parent = 0, char *name = 0,
00735                   bool modal = false );
00739     virtual ~KPrefsDialog();
00740 
00741     void autoCreate();
00742 
00743   public slots:
00745     void setDefaults();
00746 
00748     void readConfig();
00749 
00751     void writeConfig();
00752 
00753   signals:
00755     void configChanged();
00756 
00757   protected slots:
00759     void slotApply();
00760 
00762     void slotOk();
00763 
00765     void slotDefault();
00766 
00767   protected:
00769     virtual void usrReadConfig() {}
00771     virtual void usrWriteConfig() {}
00772 };
00773 
00774 
00775 class KDE_EXPORT KPrefsModule : public KCModule, public KPrefsWidManager
00776 {
00777     Q_OBJECT
00778   TQ_OBJECT
00779   public:
00780     KPrefsModule( KConfigSkeleton *, TQWidget *parent = 0, const char *name = 0 );
00781 
00782     virtual void addWid( KPrefsWid * );
00783 
00784     void load();
00785     void save();
00786     void defaults();
00787 
00788   protected slots:
00789     void slotWidChanged();
00790 
00791   protected:
00793     virtual void usrReadConfig() {}
00795     virtual void usrWriteConfig() {}
00796 };
00797 
00798 #endif