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 <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
KDE Home | KDE Accessibility Home | Description of Access Keys