kprefsdialog.h
00001 /* 00002 This file is part of libtdepim. 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 <tdecmodule.h> 00033 #include <tdeconfigskeleton.h> 00034 #include <tdefile.h> 00035 #include <tdepimmacros.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 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( TDEConfigSkeleton::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 TDEConfigSkeleton::ItemBool *mItem; 00115 00116 TQCheckBox *mCheck; 00117 }; 00118 00126 class KDE_EXPORT KPrefsWidInt : public KPrefsWid 00127 { 00128 public: 00136 KPrefsWidInt( TDEConfigSkeleton::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 TDEConfigSkeleton::ItemInt *mItem; 00155 00156 TQLabel *mLabel; 00157 TQSpinBox *mSpin; 00158 }; 00159 00167 class KDE_EXPORT KPrefsWidTime : public KPrefsWid 00168 { 00169 public: 00176 KPrefsWidTime( TDEConfigSkeleton::ItemDateTime *item, TQWidget *parent ); 00177 00181 TQLabel *label(); 00185 KTimeEdit *timeEdit(); 00186 00187 void readConfig(); 00188 void writeConfig(); 00189 00190 private: 00191 TDEConfigSkeleton::ItemDateTime *mItem; 00192 00193 TQLabel *mLabel; 00194 KTimeEdit *mTimeEdit; 00195 }; 00196 00204 class KDE_EXPORT KPrefsWidDuration : public KPrefsWid 00205 { 00206 public: 00214 KPrefsWidDuration( TDEConfigSkeleton::ItemDateTime *item, TQWidget *parent ); 00215 00219 TQLabel *label(); 00223 TQTimeEdit *timeEdit(); 00224 00225 void readConfig(); 00226 void writeConfig(); 00227 00228 private: 00229 TDEConfigSkeleton::ItemDateTime *mItem; 00230 00231 TQLabel *mLabel; 00232 TQTimeEdit *mTimeEdit; 00233 }; 00234 00242 class KDE_EXPORT KPrefsWidDate : public KPrefsWid 00243 { 00244 public: 00251 KPrefsWidDate( TDEConfigSkeleton::ItemDateTime *item, TQWidget *parent ); 00252 00256 TQLabel *label(); 00260 KDateEdit *dateEdit(); 00261 00262 void readConfig(); 00263 void writeConfig(); 00264 00265 private: 00266 TDEConfigSkeleton::ItemDateTime *mItem; 00267 00268 TQLabel *mLabel; 00269 KDateEdit *mDateEdit; 00270 }; 00271 00279 class KDE_EXPORT KPrefsWidColor : public KPrefsWid 00280 { 00281 Q_OBJECT 00282 00283 public: 00291 KPrefsWidColor( TDEConfigSkeleton::ItemColor *item, TQWidget *parent ); 00295 ~KPrefsWidColor(); 00296 00300 TQLabel *label(); 00304 KColorButton *button(); 00305 00306 void readConfig(); 00307 void writeConfig(); 00308 00309 private: 00310 TDEConfigSkeleton::ItemColor *mItem; 00311 00312 TQLabel *mLabel; 00313 KColorButton *mButton; 00314 }; 00315 00322 class KDE_EXPORT KPrefsWidFont : public KPrefsWid 00323 { 00324 Q_OBJECT 00325 00326 public: 00335 KPrefsWidFont( TDEConfigSkeleton::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 TDEConfigSkeleton::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( TDEConfigSkeleton::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 TDEConfigSkeleton::ItemEnum *mItem; 00414 00415 TQButtonGroup *mBox; 00416 }; 00417 00428 class KDE_EXPORT KPrefsWidCombo : public KPrefsWid 00429 { 00430 public: 00438 KPrefsWidCombo( TDEConfigSkeleton::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 TDEConfigSkeleton::ItemEnum *mItem; 00449 TQComboBox *mCombo; 00450 }; 00451 00452 00453 00461 class KDE_EXPORT KPrefsWidString : public KPrefsWid 00462 { 00463 public: 00472 KPrefsWidString( TDEConfigSkeleton::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 TDEConfigSkeleton::ItemString *mItem; 00495 00496 TQLabel *mLabel; 00497 TQLineEdit *mEdit; 00498 }; 00499 00500 00508 class KDE_EXPORT KPrefsWidPath : public KPrefsWid 00509 { 00510 public: 00520 KPrefsWidPath( TDEConfigSkeleton::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 TDEConfigSkeleton::ItemPath *mItem; 00543 00544 TQLabel *mLabel; 00545 KURLRequester *mURLRequester; 00546 }; 00547 00548 00557 class KDE_EXPORT KPrefsWidManager 00558 { 00559 public: 00565 KPrefsWidManager( TDEConfigSkeleton *prefs ); 00569 virtual ~KPrefsWidManager(); 00570 00571 TDEConfigSkeleton *prefs() const { return mPrefs; } 00572 00576 virtual void addWid( KPrefsWid * ); 00577 00584 KPrefsWidBool *addWidBool( TDEConfigSkeleton::ItemBool *item, 00585 TQWidget *parent ); 00586 00593 KPrefsWidInt *addWidInt( TDEConfigSkeleton::ItemInt *item, 00594 TQWidget *parent ); 00595 00602 KPrefsWidDate *addWidDate( TDEConfigSkeleton::ItemDateTime *item, 00603 TQWidget *parent ); 00604 00611 KPrefsWidTime *addWidTime( TDEConfigSkeleton::ItemDateTime *item, 00612 TQWidget *parent ); 00613 00620 KPrefsWidDuration *addWidDuration( TDEConfigSkeleton::ItemDateTime *item, 00621 TQWidget *parent ); 00622 00629 KPrefsWidColor *addWidColor( TDEConfigSkeleton::ItemColor *item, 00630 TQWidget *parent ); 00631 00639 KPrefsWidRadios *addWidRadios( TDEConfigSkeleton::ItemEnum *item, 00640 TQWidget *parent ); 00641 00649 KPrefsWidCombo *addWidCombo( TDEConfigSkeleton::ItemEnum *item, 00650 TQWidget *parent ); 00651 00658 KPrefsWidString *addWidString( TDEConfigSkeleton::ItemString *item, 00659 TQWidget *parent ); 00660 00669 KPrefsWidPath *addWidPath ( TDEConfigSkeleton::ItemPath *item, TQWidget *parent, 00670 const TQString &filter = TQString(), 00671 uint mode = KFile::File ); 00672 00679 KPrefsWidString *addWidPassword ( TDEConfigSkeleton::ItemString *item, 00680 TQWidget *parent ); 00681 00690 KPrefsWidFont *addWidFont( TDEConfigSkeleton::ItemFont *item, 00691 TQWidget *parent, const TQString &sampleText ); 00692 00694 void setWidDefaults(); 00695 00697 void readWidConfig(); 00698 00700 void writeWidConfig(); 00701 00702 private: 00703 TDEConfigSkeleton *mPrefs; 00704 00705 TQPtrList<KPrefsWid> mPrefsWids; 00706 }; 00707 00708 00721 class KDE_EXPORT KPrefsDialog : public KDialogBase, public KPrefsWidManager 00722 { 00723 Q_OBJECT 00724 00725 public: 00734 KPrefsDialog( TDEConfigSkeleton *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 TDECModule, public KPrefsWidManager 00776 { 00777 Q_OBJECT 00778 00779 public: 00780 KPrefsModule( TDEConfigSkeleton *, 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