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 QComboBox;
00041 class QLabel;
00042 class QSpinBox;
00043 class QButtonGroup;
00044 class QTimeEdit;
00045 class KTimeEdit;
00046 class KDateEdit;
00047 class KURLRequester;
00048
00058 class KDE_EXPORT KPrefsWid : public QObject
00059 {
00060 Q_OBJECT
00061 public:
00066 virtual void readConfig() = 0;
00071 virtual void writeConfig() = 0;
00072
00076 virtual QValueList<QWidget *> widgets() const;
00077
00078 signals:
00082 void changed();
00083 };
00084
00091 class KDE_EXPORT KPrefsWidBool : public KPrefsWid
00092 {
00093 public:
00100 KPrefsWidBool( KConfigSkeleton::ItemBool *item, QWidget *parent );
00101
00105 QCheckBox *checkBox();
00106
00107 void readConfig();
00108 void writeConfig();
00109
00110 QValueList<QWidget *> widgets() const;
00111
00112 private:
00113 KConfigSkeleton::ItemBool *mItem;
00114
00115 QCheckBox *mCheck;
00116 };
00117
00125 class KDE_EXPORT KPrefsWidInt : public KPrefsWid
00126 {
00127 public:
00135 KPrefsWidInt( KConfigSkeleton::ItemInt *item, QWidget *parent );
00136
00140 QLabel *label();
00141
00145 QSpinBox *spinBox();
00146
00147 void readConfig();
00148 void writeConfig();
00149
00150 QValueList<QWidget *> widgets() const;
00151
00152 private:
00153 KConfigSkeleton::ItemInt *mItem;
00154
00155 QLabel *mLabel;
00156 QSpinBox *mSpin;
00157 };
00158
00166 class KDE_EXPORT KPrefsWidTime : public KPrefsWid
00167 {
00168 public:
00175 KPrefsWidTime( KConfigSkeleton::ItemDateTime *item, QWidget *parent );
00176
00180 QLabel *label();
00184 KTimeEdit *timeEdit();
00185
00186 void readConfig();
00187 void writeConfig();
00188
00189 private:
00190 KConfigSkeleton::ItemDateTime *mItem;
00191
00192 QLabel *mLabel;
00193 KTimeEdit *mTimeEdit;
00194 };
00195
00203 class KDE_EXPORT KPrefsWidDuration : public KPrefsWid
00204 {
00205 public:
00213 KPrefsWidDuration( KConfigSkeleton::ItemDateTime *item, QWidget *parent );
00214
00218 QLabel *label();
00222 QTimeEdit *timeEdit();
00223
00224 void readConfig();
00225 void writeConfig();
00226
00227 private:
00228 KConfigSkeleton::ItemDateTime *mItem;
00229
00230 QLabel *mLabel;
00231 QTimeEdit *mTimeEdit;
00232 };
00233
00241 class KDE_EXPORT KPrefsWidDate : public KPrefsWid
00242 {
00243 public:
00250 KPrefsWidDate( KConfigSkeleton::ItemDateTime *item, QWidget *parent );
00251
00255 QLabel *label();
00259 KDateEdit *dateEdit();
00260
00261 void readConfig();
00262 void writeConfig();
00263
00264 private:
00265 KConfigSkeleton::ItemDateTime *mItem;
00266
00267 QLabel *mLabel;
00268 KDateEdit *mDateEdit;
00269 };
00270
00278 class KDE_EXPORT KPrefsWidColor : public KPrefsWid
00279 {
00280 Q_OBJECT
00281 public:
00289 KPrefsWidColor( KConfigSkeleton::ItemColor *item, QWidget *parent );
00293 ~KPrefsWidColor();
00294
00298 QLabel *label();
00302 KColorButton *button();
00303
00304 void readConfig();
00305 void writeConfig();
00306
00307 private:
00308 KConfigSkeleton::ItemColor *mItem;
00309
00310 QLabel *mLabel;
00311 KColorButton *mButton;
00312 };
00313
00320 class KDE_EXPORT KPrefsWidFont : public KPrefsWid
00321 {
00322 Q_OBJECT
00323 public:
00332 KPrefsWidFont( KConfigSkeleton::ItemFont *item,
00333 QWidget *parent, const QString &sampleText );
00337 ~KPrefsWidFont();
00338
00342 QLabel *label();
00346 QFrame *preview();
00350 QPushButton *button();
00351
00352 void readConfig();
00353 void writeConfig();
00354
00355 protected slots:
00356 void selectFont();
00357
00358 private:
00359 KConfigSkeleton::ItemFont *mItem;
00360
00361 QLabel *mLabel;
00362 QLabel *mPreview;
00363 QPushButton *mButton;
00364 };
00365
00377 class KDE_EXPORT KPrefsWidRadios : public KPrefsWid
00378 {
00379 public:
00387 KPrefsWidRadios( KConfigSkeleton::ItemEnum *item, QWidget *parent );
00388 virtual ~KPrefsWidRadios();
00389
00396 void addRadio( const QString &text,
00397 const QString &whatsThis = QString::null );
00398
00402 QButtonGroup *groupBox();
00403
00404 void readConfig();
00405 void writeConfig();
00406
00407 QValueList<QWidget *> widgets() const;
00408
00409 private:
00410 KConfigSkeleton::ItemEnum *mItem;
00411
00412 QButtonGroup *mBox;
00413 };
00414
00425 class KDE_EXPORT KPrefsWidCombo : public KPrefsWid
00426 {
00427 public:
00435 KPrefsWidCombo( KConfigSkeleton::ItemEnum *item, QWidget *parent );
00436 virtual ~KPrefsWidCombo();
00437
00438 void readConfig();
00439 void writeConfig();
00440
00441 QComboBox *comboBox();
00442 QValueList<QWidget *> widgets() const;
00443
00444 private:
00445 KConfigSkeleton::ItemEnum *mItem;
00446 QComboBox *mCombo;
00447 };
00448
00449
00450
00458 class KDE_EXPORT KPrefsWidString : public KPrefsWid
00459 {
00460 public:
00469 KPrefsWidString( KConfigSkeleton::ItemString *item, QWidget *parent,
00470 QLineEdit::EchoMode echomode=QLineEdit::Normal );
00474 virtual ~KPrefsWidString();
00475
00479 QLabel *label();
00483 QLineEdit *lineEdit();
00484
00485 void readConfig();
00486 void writeConfig();
00487
00488 QValueList<QWidget *> widgets() const;
00489
00490 private:
00491 KConfigSkeleton::ItemString *mItem;
00492
00493 QLabel *mLabel;
00494 QLineEdit *mEdit;
00495 };
00496
00497
00505 class KDE_EXPORT KPrefsWidPath : public KPrefsWid
00506 {
00507 public:
00517 KPrefsWidPath( KConfigSkeleton::ItemPath *item, QWidget *parent,
00518 const QString &filter = QString::null, uint mode = KFile::File );
00522 virtual ~KPrefsWidPath();
00523
00527 QLabel *label();
00531 KURLRequester *urlRequester();
00532
00533 void readConfig();
00534 void writeConfig();
00535
00536 QValueList<QWidget *> widgets() const;
00537
00538 private:
00539 KConfigSkeleton::ItemPath *mItem;
00540
00541 QLabel *mLabel;
00542 KURLRequester *mURLRequester;
00543 };
00544
00545
00554 class KDE_EXPORT KPrefsWidManager
00555 {
00556 public:
00562 KPrefsWidManager( KConfigSkeleton *prefs );
00566 virtual ~KPrefsWidManager();
00567
00568 KConfigSkeleton *prefs() const { return mPrefs; }
00569
00573 virtual void addWid( KPrefsWid * );
00574
00581 KPrefsWidBool *addWidBool( KConfigSkeleton::ItemBool *item,
00582 QWidget *parent );
00583
00590 KPrefsWidInt *addWidInt( KConfigSkeleton::ItemInt *item,
00591 QWidget *parent );
00592
00599 KPrefsWidDate *addWidDate( KConfigSkeleton::ItemDateTime *item,
00600 QWidget *parent );
00601
00608 KPrefsWidTime *addWidTime( KConfigSkeleton::ItemDateTime *item,
00609 QWidget *parent );
00610
00617 KPrefsWidDuration *addWidDuration( KConfigSkeleton::ItemDateTime *item,
00618 QWidget *parent );
00619
00626 KPrefsWidColor *addWidColor( KConfigSkeleton::ItemColor *item,
00627 QWidget *parent );
00628
00636 KPrefsWidRadios *addWidRadios( KConfigSkeleton::ItemEnum *item,
00637 QWidget *parent );
00638
00646 KPrefsWidCombo *addWidCombo( KConfigSkeleton::ItemEnum *item,
00647 QWidget *parent );
00648
00655 KPrefsWidString *addWidString( KConfigSkeleton::ItemString *item,
00656 QWidget *parent );
00657
00666 KPrefsWidPath *addWidPath ( KConfigSkeleton::ItemPath *item, QWidget *parent,
00667 const QString &filter = QString::null,
00668 uint mode = KFile::File );
00669
00676 KPrefsWidString *addWidPassword ( KConfigSkeleton::ItemString *item,
00677 QWidget *parent );
00678
00687 KPrefsWidFont *addWidFont( KConfigSkeleton::ItemFont *item,
00688 QWidget *parent, const QString &sampleText );
00689
00691 void setWidDefaults();
00692
00694 void readWidConfig();
00695
00697 void writeWidConfig();
00698
00699 private:
00700 KConfigSkeleton *mPrefs;
00701
00702 QPtrList<KPrefsWid> mPrefsWids;
00703 };
00704
00705
00718 class KDE_EXPORT KPrefsDialog : public KDialogBase, public KPrefsWidManager
00719 {
00720 Q_OBJECT
00721 public:
00730 KPrefsDialog( KConfigSkeleton *prefs, QWidget *parent = 0, char *name = 0,
00731 bool modal = false );
00735 virtual ~KPrefsDialog();
00736
00737 void autoCreate();
00738
00739 public slots:
00741 void setDefaults();
00742
00744 void readConfig();
00745
00747 void writeConfig();
00748
00749 signals:
00751 void configChanged();
00752
00753 protected slots:
00755 void slotApply();
00756
00758 void slotOk();
00759
00761 void slotDefault();
00762
00763 protected:
00765 virtual void usrReadConfig() {}
00767 virtual void usrWriteConfig() {}
00768 };
00769
00770
00771 class KDE_EXPORT KPrefsModule : public KCModule, public KPrefsWidManager
00772 {
00773 Q_OBJECT
00774 public:
00775 KPrefsModule( KConfigSkeleton *, QWidget *parent = 0, const char *name = 0 );
00776
00777 virtual void addWid( KPrefsWid * );
00778
00779 void load();
00780 void save();
00781 void defaults();
00782
00783 protected slots:
00784 void slotWidChanged();
00785
00786 protected:
00788 virtual void usrReadConfig() {}
00790 virtual void usrWriteConfig() {}
00791 };
00792
00793 #endif