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:
00165   void clearContents();
00166 
00167   bool dirty;
00169   KLineEdit *ruleNameEdit;
00171   KLineEdit *groupsEdit;
00173   KComboBox *groupsBox;
00175   QCheckBox *expireCheck;
00177   QLabel *expireLabel;
00179   KIntSpinBox *expireEdit;
00181   QRadioButton *linkModeOr, *linkModeAnd;
00183   ActionEditWidget *actionEditor;
00185   ConditionEditWidget *condEditor;
00186 
00187   KScoringManager *manager;
00188 
00189   // the old name of the current rule
00190   QString oldRuleName;
00191 };
00192 
00196 class KDE_EXPORT RuleListWidget : public QWidget
00197 {
00198   Q_OBJECT
00199 public:
00200   RuleListWidget(KScoringManager *m, bool =false, QWidget *p =0, const char *n =0);
00201   ~RuleListWidget();
00202   QString currentRule() const { return ruleList->currentText(); }
00203 protected:
00204   void updateButton();
00205 
00206 signals:
00207   void ruleSelected(const QString&);
00208   void ruleEdited(const QString&);
00209   void leavingRule();
00210 public slots:
00211   void slotRuleSelected(const QString&);
00212   void slotRuleSelected(QListBoxItem *);
00213   void slotRuleSelected(int);
00214   void updateRuleList();
00215   void updateRuleList(const KScoringRule*);
00216   void slotRuleNameChanged(const QString&,const QString&);
00217 protected slots:
00218   void slotGroupFilter(const QString&);
00219   void slotEditRule(QListBoxItem*);
00220   void slotEditRule(const QString&);
00221   void slotEditRule();
00222   void slotDelRule();
00223   void slotNewRule();
00224   void slotCopyRule();
00225   void slotRuleUp();
00226   void slotRuleDown();
00227 
00228 private:
00230   KListBox *ruleList;
00232   QString group;
00234   bool alone;
00235 
00236   KScoringManager *manager;
00237 
00238   QPushButton *editRule;
00239   QPushButton *newRule;
00240   QPushButton *delRule;
00241   QPushButton *copyRule;
00242   QPushButton *mRuleUp;
00243   QPushButton *mRuleDown;
00244 };
00245 
00246 class KDE_EXPORT KScoringEditor : public KDialogBase
00247 {
00248   Q_OBJECT
00249 public:
00250   ~KScoringEditor();
00251   void setRule(KScoringRule*);
00252   static KScoringEditor *createEditor(KScoringManager* m, QWidget *parent=0, const char *name=0);
00253   static KScoringEditor *editor() { return scoreEditor; }
00254   void setDirty();
00255 protected:
00256   KScoringEditor(KScoringManager* m, QWidget *parent=0, const char *name=0);
00257 private:
00259   RuleEditWidget* ruleEditor;
00261   RuleListWidget *ruleLister;
00262 protected slots:
00263   void slotShrink();
00264   void slotDoShrink();
00265   void slotApply();
00266   void slotOk();
00267   void slotCancel();
00268   void slotFinished();
00269 private:
00270   KScoringManager *manager;
00271   ScoreEditWidget *edit;
00273   static KScoringEditor *scoreEditor;
00274 };
00275 
00276 class KScoringEditorWidgetDialog : public KDialogBase
00277 {
00278   Q_OBJECT
00279 public:
00280   KScoringEditorWidgetDialog(KScoringManager *m, const QString& rName, QWidget *parent=0, const char *name=0);
00281 protected slots:
00282   void slotApply();
00283   void slotOk();
00284   void slotShrink();
00285   void slotDoShrink();
00286 private:
00287   RuleEditWidget *ruleEditor;
00288   KScoringManager *manager;
00289   QString ruleName;
00290 };
00291 
00292 class KDE_EXPORT KScoringEditorWidget : public QWidget
00293 {
00294   Q_OBJECT
00295 public:
00296   KScoringEditorWidget(KScoringManager *m,QWidget *p =0, const char *n =0);
00297   ~KScoringEditorWidget();
00298 protected slots:
00299   void slotRuleEdited(const QString&);
00300 private:
00301   RuleListWidget *ruleLister;
00302   KScoringManager *manager;
00303 };
00304 
00305 
00306 #endif // SCOREEDITWIDGET_H
KDE Home | KDE Accessibility Home | Description of Access Keys