00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef KPREFSDIALOG_H
00024 #define KPREFSDIALOG_H
00025
00026 #include <qptrlist.h>
00027 #include <qlineedit.h>
00028 #include <qvaluelist.h>
00029 #include <qdatetimeedit.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 QCheckBox;
00040 class QLabel;
00041 class QSpinBox;
00042 class QButtonGroup;
00043 class QTimeEdit;
00044 class KTimeEdit;
00045 class KDateEdit;
00046 class KURLRequester;
00047
00057 class KDE_EXPORT KPrefsWid : public QObject
00058 {
00059 Q_OBJECT
00060 public:
00065 virtual void readConfig() = 0;
00070 virtual void writeConfig() = 0;
00071
00075 virtual QValueList<QWidget *> widgets() const;
00076
00077 signals:
00081 void changed();
00082 };
00083
00090 class KDE_EXPORT KPrefsWidBool : public KPrefsWid
00091 {
00092 public:
00099 KPrefsWidBool( KConfigSkeleton::ItemBool *item, QWidget *parent );
00100
00104 QCheckBox *checkBox();
00105
00106 void readConfig();
00107 void writeConfig();
00108
00109 QValueList<QWidget *> widgets() const;
00110
00111 private:
00112 KConfigSkeleton::ItemBool *mItem;
00113
00114 QCheckBox *mCheck;
00115 };
00116
00124 class KDE_EXPORT KPrefsWidInt : public KPrefsWid
00125 {
00126 public:
00134 KPrefsWidInt( KConfigSkeleton::ItemInt *item, QWidget *parent );
00135
00139 QLabel *label();
00140
00144 QSpinBox *spinBox();
00145
00146 void readConfig();
00147 void writeConfig();
00148
00149 QValueList<QWidget *> widgets() const;
00150
00151 private:
00152 KConfigSkeleton::ItemInt *mItem;
00153
00154 QLabel *mLabel;
00155 QSpinBox *mSpin;
00156 };
00157
00165 class KDE_EXPORT KPrefsWidTime : public KPrefsWid
00166 {
00167 public:
00174 KPrefsWidTime( KConfigSkeleton::ItemDateTime *item, QWidget *parent );
00175
00179 QLabel *label();
00183 KTimeEdit *timeEdit();
00184
00185 void readConfig();
00186 void writeConfig();
00187
00188 private:
00189 KConfigSkeleton::ItemDateTime *mItem;
00190
00191 QLabel *mLabel;
00192 KTimeEdit *mTimeEdit;
00193 };
00194
00202 class KDE_EXPORT KPrefsWidDuration : public KPrefsWid
00203 {
00204 public:
00212 KPrefsWidDuration( KConfigSkeleton::ItemDateTime *item, QWidget *parent );
00213
00217 QLabel *label();
00221 QTimeEdit *timeEdit();
00222
00223 void readConfig();
00224 void writeConfig();
00225
00226 private:
00227 KConfigSkeleton::ItemDateTime *mItem;
00228
00229 QLabel *mLabel;
00230 QTimeEdit *mTimeEdit;
00231 };
00232
00240 class KDE_EXPORT KPrefsWidDate : public KPrefsWid
00241 {
00242 public:
00249 KPrefsWidDate( KConfigSkeleton::ItemDateTime *item, QWidget *parent );
00250
00254 QLabel *label();
00258 KDateEdit *dateEdit();
00259
00260 void readConfig();
00261 void writeConfig();
00262
00263 private:
00264 KConfigSkeleton::ItemDateTime *mItem;
00265
00266 QLabel *mLabel;
00267 KDateEdit *mDateEdit;
00268 };
00269
00277 class KDE_EXPORT KPrefsWidColor : public KPrefsWid
00278 {
00279 Q_OBJECT
00280 public:
00288 KPrefsWidColor( KConfigSkeleton::ItemColor *item, QWidget *parent );
00292 ~KPrefsWidColor();
00293
00297 QLabel *label();
00301 KColorButton *button();
00302
00303 void readConfig();
00304 void writeConfig();
00305
00306 private:
00307 KConfigSkeleton::ItemColor *mItem;
00308
00309 QLabel *mLabel;
00310 KColorButton *mButton;
00311 };
00312
00319 class KDE_EXPORT KPrefsWidFont : public KPrefsWid
00320 {
00321 Q_OBJECT
00322 public:
00331 KPrefsWidFont( KConfigSkeleton::ItemFont *item,
00332 QWidget *parent, const QString &sampleText );
00336 ~KPrefsWidFont();
00337
00341 QLabel *label();
00345 QFrame *preview();
00349 QPushButton *button();
00350
00351 void readConfig();
00352 void writeConfig();
00353
00354 protected slots:
00355 void selectFont();
00356
00357 private:
00358 KConfigSkeleton::ItemFont *mItem;
00359
00360 QLabel *mLabel;
00361 QLabel *mPreview;
00362 QPushButton *mButton;
00363 };
00364
00376 class KDE_EXPORT KPrefsWidRadios : public KPrefsWid
00377 {
00378 public:
00386 KPrefsWidRadios( KConfigSkeleton::ItemEnum *item, QWidget *parent );
00387 virtual ~KPrefsWidRadios();
00388
00395 void addRadio( const QString &text,
00396 const QString &whatsThis = QString::null );
00397
00401 QButtonGroup *groupBox();
00402
00403 void readConfig();
00404 void writeConfig();
00405
00406 QValueList<QWidget *> widgets() const;
00407
00408 private:
00409 KConfigSkeleton::ItemEnum *mItem;
00410
00411 QButtonGroup *mBox;
00412 };
00413
00414
00422 class KDE_EXPORT KPrefsWidString : public KPrefsWid
00423 {
00424 public:
00433 KPrefsWidString( KConfigSkeleton::ItemString *item, QWidget *parent,
00434 QLineEdit::EchoMode echomode=QLineEdit::Normal );
00438 virtual ~KPrefsWidString();
00439
00443 QLabel *label();
00447 QLineEdit *lineEdit();
00448
00449 void readConfig();
00450 void writeConfig();
00451
00452 QValueList<QWidget *> widgets() const;
00453
00454 private:
00455 KConfigSkeleton::ItemString *mItem;
00456
00457 QLabel *mLabel;
00458 QLineEdit *mEdit;
00459 };
00460
00461
00469 class KDE_EXPORT KPrefsWidPath : public KPrefsWid
00470 {
00471 public:
00481 KPrefsWidPath( KConfigSkeleton::ItemPath *item, QWidget *parent,
00482 const QString &filter = QString::null, uint mode = KFile::File );
00486 virtual ~KPrefsWidPath();
00487
00491 QLabel *label();
00495 KURLRequester *urlRequester();
00496
00497 void readConfig();
00498 void writeConfig();
00499
00500 QValueList<QWidget *> widgets() const;
00501
00502 private:
00503 KConfigSkeleton::ItemPath *mItem;
00504
00505 QLabel *mLabel;
00506 KURLRequester *mURLRequester;
00507 };
00508
00509
00518 class KDE_EXPORT KPrefsWidManager
00519 {
00520 public:
00526 KPrefsWidManager( KConfigSkeleton *prefs );
00530 virtual ~KPrefsWidManager();
00531
00532 KConfigSkeleton *prefs() const { return mPrefs; }
00533
00537 virtual void addWid( KPrefsWid * );
00538
00545 KPrefsWidBool *addWidBool( KConfigSkeleton::ItemBool *item,
00546 QWidget *parent );
00547
00554 KPrefsWidInt *addWidInt( KConfigSkeleton::ItemInt *item,
00555 QWidget *parent );
00556
00563 KPrefsWidDate *addWidDate( KConfigSkeleton::ItemDateTime *item,
00564 QWidget *parent );
00565
00572 KPrefsWidTime *addWidTime( KConfigSkeleton::ItemDateTime *item,
00573 QWidget *parent );
00574
00581 KPrefsWidDuration *addWidDuration( KConfigSkeleton::ItemDateTime *item,
00582 QWidget *parent );
00583
00590 KPrefsWidColor *addWidColor( KConfigSkeleton::ItemColor *item,
00591 QWidget *parent );
00592
00600 KPrefsWidRadios *addWidRadios( KConfigSkeleton::ItemEnum *item,
00601 QWidget *parent );
00602
00609 KPrefsWidString *addWidString( KConfigSkeleton::ItemString *item,
00610 QWidget *parent );
00611
00620 KPrefsWidPath *addWidPath ( KConfigSkeleton::ItemPath *item, QWidget *parent,
00621 const QString &filter = QString::null,
00622 uint mode = KFile::File );
00623
00630 KPrefsWidString *addWidPassword ( KConfigSkeleton::ItemString *item,
00631 QWidget *parent );
00632
00641 KPrefsWidFont *addWidFont( KConfigSkeleton::ItemFont *item,
00642 QWidget *parent, const QString &sampleText );
00643
00645 void setWidDefaults();
00646
00648 void readWidConfig();
00649
00651 void writeWidConfig();
00652
00653 private:
00654 KConfigSkeleton *mPrefs;
00655
00656 QPtrList<KPrefsWid> mPrefsWids;
00657 };
00658
00659
00672 class KDE_EXPORT KPrefsDialog : public KDialogBase, public KPrefsWidManager
00673 {
00674 Q_OBJECT
00675 public:
00684 KPrefsDialog( KConfigSkeleton *prefs, QWidget *parent = 0, char *name = 0,
00685 bool modal = false );
00689 virtual ~KPrefsDialog();
00690
00691 void autoCreate();
00692
00693 public slots:
00695 void setDefaults();
00696
00698 void readConfig();
00699
00701 void writeConfig();
00702
00703 signals:
00705 void configChanged();
00706
00707 protected slots:
00709 void slotApply();
00710
00712 void slotOk();
00713
00715 void slotDefault();
00716
00717 protected:
00719 virtual void usrReadConfig() {}
00721 virtual void usrWriteConfig() {}
00722 };
00723
00724
00725 class KDE_EXPORT KPrefsModule : public KCModule, public KPrefsWidManager
00726 {
00727 Q_OBJECT
00728 public:
00729 KPrefsModule( KConfigSkeleton *, QWidget *parent = 0, const char *name = 0 );
00730
00731 virtual void addWid( KPrefsWid * );
00732
00733 void load();
00734 void save();
00735 void defaults();
00736
00737 protected slots:
00738 void slotWidChanged();
00739
00740 protected:
00742 virtual void usrReadConfig() {}
00744 virtual void usrWriteConfig() {}
00745 };
00746
00747 #endif