libkdepim

kscoringeditor.h

00001 /*
00002     kscoringeditor.h
00003 
00004     Copyright (c) 2001 Mathias Waack
00005     Copyright (C) 2005 by Volker Krause <volker.krause@rwth-aachen.de>
00006 
00007     Author: Mathias Waack <mathias@atoll-net.de>
00008 
00009     This program is free software; you can redistribute it and/or modify
00010     it under the terms of the GNU General Public License as published by
00011     the Free Software Foundation; either version 2 of the License, or
00012     (at your option) any later version.
00013     You should have received a copy of the GNU General Public License
00014     along with this program; if not, write to the Free Software Foundation,
00015     Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US
00016 */
00017 
00018 #ifndef SCOREEDITWIDGET_H
00019 #define SCOREEDITWIDGET_H
00020 
00021 #include <qmap.h>
00022 #include <kdialogbase.h>
00023 #include <qtable.h>
00024 #include <qframe.h>
00025 
00026 #include "kwidgetlister.h"
00027 
00028 #include <kdepimmacros.h>
00029 
00030 class KComboBox;
00031 class KLineEdit;
00032 class KIntSpinBox;
00033 class KListBox;
00034 class QFrame;
00035 class QLabel;
00036 class QListBoxItem;
00037 class QPushButton;
00038 class QCheckBox;
00039 class QRadioButton;
00040 
00041 class KScoringRule;
00042 class KScoringExpression;
00043 class KScoringManager;
00044 class ActionBase;
00045 class KScoringEditor;
00046 class ScoreEditWidget;
00047 class KColorCombo;
00048 
00052 class KDE_EXPORT SingleConditionWidget : public QFrame
00053 {
00054   Q_OBJECT
00055   friend class ConditionEditWidget;
00056 public:
00057   SingleConditionWidget(KScoringManager *,QWidget *p =0, const char *n =0);
00058   ~SingleConditionWidget();
00059   void setCondition(KScoringExpression*);
00060   KScoringExpression *createCondition() const;
00061   void clear();
00062 
00063 protected slots:
00064   void toggleRegExpButton( int );
00065   void showRegExpDialog();
00066 
00067 private:
00069   QCheckBox *neg;
00071   KComboBox *headers;
00073   KComboBox *matches;
00075   KLineEdit *expr;
00077   QPushButton *regExpButton;
00078 
00079   KScoringManager *manager;
00080 };
00081 
00084 class ConditionEditWidget: public KWidgetLister
00085 {
00086   Q_OBJECT
00087 public:
00088   ConditionEditWidget(KScoringManager *,QWidget *p =0, const char *n =0);
00089   ~ConditionEditWidget();
00090   QWidget* createWidget(QWidget*);
00091   void updateRule(KScoringRule*);
00092   void clearWidget(QWidget*);
00093 public slots:
00094   void slotEditRule(KScoringRule*);
00095 private:
00096   KScoringManager *manager;
00097 };
00098 
00102 class SingleActionWidget : public QWidget
00103 {
00104   Q_OBJECT
00105   friend class ActionEditWidget;
00106 public:
00107   SingleActionWidget(KScoringManager *m,QWidget *p =0, const char *n =0);
00108   ~SingleActionWidget();
00109   void setAction(ActionBase*);
00110   ActionBase *createAction() const;
00111   void clear();
00112 private:
00114   KComboBox *types;
00116   QWidgetStack *stack;
00118   KLineEdit *notifyEditor;
00120   KIntSpinBox *scoreEditor;
00122   KColorCombo *colorEditor;
00124   QLabel *dummyLabel;
00125 
00126   KScoringManager *manager;
00127 };
00128 
00131 class KDE_EXPORT ActionEditWidget : public KWidgetLister
00132 {
00133   Q_OBJECT
00134 public:
00135   ActionEditWidget(KScoringManager *m,QWidget *p =0, const char *n =0);
00136   ~ActionEditWidget();
00137   QWidget* createWidget(QWidget *parent);
00138   void updateRule(KScoringRule*);
00139   void clearWidget(QWidget *);
00140 public slots:
00141   void slotEditRule(KScoringRule *);
00142 private:
00143   KScoringManager *manager;
00144 };
00145 
00148 class RuleEditWidget : public QWidget
00149 {
00150   Q_OBJECT
00151 public:
00152   RuleEditWidget(KScoringManager *m,QWidget *p =0, const char *n =0);
00153   ~RuleEditWidget();
00154 public slots:
00155   void setDirty();
00156   void slotEditRule(const QString&);
00157   void updateRule(KScoringRule*);
00158   void updateRule();
00159 signals:
00160   void shrink();
00161 protected slots:
00162   void slotAddGroup();
00163   void slotShrink();
00164 private slots:
00165   void slotExpireEditChanged(int value);
00166 private:
00167   void clearContents();
00168 
00169   bool dirty;
00171   KLineEdit *ruleNameEdit;
00173   KLineEdit *groupsEdit;
00175   KComboBox *groupsBox;
00177   QCheckBox *expireCheck;
00179   QLabel *expireLabel;
00181   KIntSpinBox *expireEdit;
00183   QRadioButton *linkModeOr, *linkModeAnd;
00185   ActionEditWidget *actionEditor;
00187   ConditionEditWidget *condEditor;
00188 
00189   KScoringManager *manager;
00190 
00191   // the old name of the current rule
00192   QString oldRuleName;
00193 };
00194 
00198 class KDE_EXPORT RuleListWidget : public QWidget
00199 {
00200   Q_OBJECT
00201 public:
00202   RuleListWidget(KScoringManager *m, bool =false, QWidget *p =0, const char *n =0);
00203   ~RuleListWidget();
00204   QString currentRule() const { return ruleList->currentText(); }
00205 protected:
00206   void updateButton();
00207 
00208 signals:
00209   void ruleSelected(const QString&);
00210   void ruleEdited(const QString&);
00211   void leavingRule();
00212 public slots:
00213   void slotRuleSelected(const QString&);
00214   void slotRuleSelected(QListBoxItem *);
00215   void slotRuleSelected(int);
00216   void updateRuleList();
00217   void updateRuleList(const KScoringRule*);
00218   void slotRuleNameChanged(const QString&,const QString&);
00219 protected slots:
00220   void slotGroupFilter(const QString&);
00221   void slotEditRule(QListBoxItem*);
00222   void slotEditRule(const QString&);
00223   void slotEditRule();
00224   void slotDelRule();
00225   void slotNewRule();
00226   void slotCopyRule();
00227   void slotRuleUp();
00228   void slotRuleDown();
00229 
00230 private:
00232   KListBox *ruleList;
00234   QString group;
00236   bool alone;
00237 
00238   KScoringManager *manager;
00239 
00240   QPushButton *editRule;
00241   QPushButton *newRule;
00242   QPushButton *delRule;
00243   QPushButton *copyRule;
00244   QPushButton *mRuleUp;
00245   QPushButton *mRuleDown;
00246 };
00247 
00248 class KDE_EXPORT KScoringEditor : public KDialogBase
00249 {
00250   Q_OBJECT
00251 public:
00252   ~KScoringEditor();
00253   void setRule(KScoringRule*);
00254   static KScoringEditor *createEditor(KScoringManager* m, QWidget *parent=0, const char *name=0);
00255   static KScoringEditor *editor() { return scoreEditor; }
00256   void setDirty();
00257 protected:
00258   KScoringEditor(KScoringManager* m, QWidget *parent=0, const char *name=0);
00259 private:
00261   RuleEditWidget* ruleEditor;
00263   RuleListWidget *ruleLister;
00264 protected slots:
00265   void slotShrink();
00266   void slotDoShrink();
00267   void slotApply();
00268   void slotOk();
00269   void slotCancel();
00270   void slotFinished();
00271 private:
00272   KScoringManager *manager;
00273   ScoreEditWidget *edit;
00275   static KScoringEditor *scoreEditor;
00276 };
00277 
00278 class KScoringEditorWidgetDialog : public KDialogBase
00279 {
00280   Q_OBJECT
00281 public:
00282   KScoringEditorWidgetDialog(KScoringManager *m, const QString& rName, QWidget *parent=0, const char *name=0);
00283 protected slots:
00284   void slotApply();
00285   void slotOk();
00286   void slotShrink();
00287   void slotDoShrink();
00288 private:
00289   RuleEditWidget *ruleEditor;
00290   KScoringManager *manager;
00291   QString ruleName;
00292 };
00293 
00294 class KDE_EXPORT KScoringEditorWidget : public QWidget
00295 {
00296   Q_OBJECT
00297 public:
00298   KScoringEditorWidget(KScoringManager *m,QWidget *p =0, const char *n =0);
00299   ~KScoringEditorWidget();
00300 protected slots:
00301   void slotRuleEdited(const QString&);
00302 private:
00303   RuleListWidget *ruleLister;
00304   KScoringManager *manager;
00305 };
00306 
00307 
00308 #endif // SCOREEDITWIDGET_H
KDE Home | KDE Accessibility Home | Description of Access Keys