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 <tqmap.h>
00022 #include <kdialogbase.h>
00023 #include <tqtable.h>
00024 #include <tqframe.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 TQFrame;
00035 class TQLabel;
00036 class TQListBoxItem;
00037 class TQPushButton;
00038 class TQCheckBox;
00039 class TQRadioButton;
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 TQFrame
00053 {
00054   Q_OBJECT
00055   TQ_OBJECT
00056   friend class ConditionEditWidget;
00057 public:
00058   SingleConditionWidget(KScoringManager *,TQWidget *p =0, const char *n =0);
00059   ~SingleConditionWidget();
00060   void setCondition(KScoringExpression*);
00061   KScoringExpression *createCondition() const;
00062   void clear();
00063 
00064 protected slots:
00065   void toggleRegExpButton( int );
00066   void showRegExpDialog();
00067 
00068 private:
00070   TQCheckBox *neg;
00072   KComboBox *headers;
00074   KComboBox *matches;
00076   KLineEdit *expr;
00078   TQPushButton *regExpButton;
00079 
00080   KScoringManager *manager;
00081 };
00082 
00085 class ConditionEditWidget: public KWidgetLister
00086 {
00087   Q_OBJECT
00088   TQ_OBJECT
00089 public:
00090   ConditionEditWidget(KScoringManager *,TQWidget *p =0, const char *n =0);
00091   ~ConditionEditWidget();
00092   TQWidget* createWidget(TQWidget*);
00093   void updateRule(KScoringRule*);
00094   void clearWidget(TQWidget*);
00095 public slots:
00096   void slotEditRule(KScoringRule*);
00097 private:
00098   KScoringManager *manager;
00099 };
00100 
00104 class SingleActionWidget : public TQWidget
00105 {
00106   Q_OBJECT
00107   TQ_OBJECT
00108   friend class ActionEditWidget;
00109 public:
00110   SingleActionWidget(KScoringManager *m,TQWidget *p =0, const char *n =0);
00111   ~SingleActionWidget();
00112   void setAction(ActionBase*);
00113   ActionBase *createAction() const;
00114   void clear();
00115 private:
00117   KComboBox *types;
00119   TQWidgetStack *stack;
00121   KLineEdit *notifyEditor;
00123   KIntSpinBox *scoreEditor;
00125   KColorCombo *colorEditor;
00127   TQLabel *dummyLabel;
00128 
00129   KScoringManager *manager;
00130 };
00131 
00134 class KDE_EXPORT ActionEditWidget : public KWidgetLister
00135 {
00136   Q_OBJECT
00137   TQ_OBJECT
00138 public:
00139   ActionEditWidget(KScoringManager *m,TQWidget *p =0, const char *n =0);
00140   ~ActionEditWidget();
00141   TQWidget* createWidget(TQWidget *parent);
00142   void updateRule(KScoringRule*);
00143   void clearWidget(TQWidget *);
00144 public slots:
00145   void slotEditRule(KScoringRule *);
00146 private:
00147   KScoringManager *manager;
00148 };
00149 
00152 class RuleEditWidget : public TQWidget
00153 {
00154   Q_OBJECT
00155   TQ_OBJECT
00156 public:
00157   RuleEditWidget(KScoringManager *m,TQWidget *p =0, const char *n =0);
00158   ~RuleEditWidget();
00159 public slots:
00160   void setDirty();
00161   void slotEditRule(const TQString&);
00162   void updateRule(KScoringRule*);
00163   void updateRule();
00164 signals:
00165   void shrink();
00166 protected slots:
00167   void slotAddGroup();
00168   void slotShrink();
00169 private slots:
00170   void slotExpireEditChanged(int value);
00171 private:
00172   void clearContents();
00173 
00174   bool dirty;
00176   KLineEdit *ruleNameEdit;
00178   KLineEdit *groupsEdit;
00180   KComboBox *groupsBox;
00182   TQCheckBox *expireCheck;
00184   TQLabel *expireLabel;
00186   KIntSpinBox *expireEdit;
00188   TQRadioButton *linkModeOr, *linkModeAnd;
00190   ActionEditWidget *actionEditor;
00192   ConditionEditWidget *condEditor;
00193 
00194   KScoringManager *manager;
00195 
00196   // the old name of the current rule
00197   TQString oldRuleName;
00198 };
00199 
00203 class KDE_EXPORT RuleListWidget : public TQWidget
00204 {
00205   Q_OBJECT
00206   TQ_OBJECT
00207 public:
00208   RuleListWidget(KScoringManager *m, bool =false, TQWidget *p =0, const char *n =0);
00209   ~RuleListWidget();
00210   TQString currentRule() const { return ruleList->currentText(); }
00211 protected:
00212   void updateButton();
00213 
00214 signals:
00215   void ruleSelected(const TQString&);
00216   void ruleEdited(const TQString&);
00217   void leavingRule();
00218 public slots:
00219   void slotRuleSelected(const TQString&);
00220   void slotRuleSelected(TQListBoxItem *);
00221   void slotRuleSelected(int);
00222   void updateRuleList();
00223   void updateRuleList(const KScoringRule*);
00224   void slotRuleNameChanged(const TQString&,const TQString&);
00225 protected slots:
00226   void slotGroupFilter(const TQString&);
00227   void slotEditRule(TQListBoxItem*);
00228   void slotEditRule(const TQString&);
00229   void slotEditRule();
00230   void slotDelRule();
00231   void slotNewRule();
00232   void slotCopyRule();
00233   void slotRuleUp();
00234   void slotRuleDown();
00235 
00236 private:
00238   KListBox *ruleList;
00240   TQString group;
00242   bool alone;
00243 
00244   KScoringManager *manager;
00245 
00246   TQPushButton *editRule;
00247   TQPushButton *newRule;
00248   TQPushButton *delRule;
00249   TQPushButton *copyRule;
00250   TQPushButton *mRuleUp;
00251   TQPushButton *mRuleDown;
00252 };
00253 
00254 class KDE_EXPORT KScoringEditor : public KDialogBase
00255 {
00256   Q_OBJECT
00257   TQ_OBJECT
00258 public:
00259   ~KScoringEditor();
00260   void setRule(KScoringRule*);
00261   static KScoringEditor *createEditor(KScoringManager* m, TQWidget *parent=0, const char *name=0);
00262   static KScoringEditor *editor() { return scoreEditor; }
00263   void setDirty();
00264 protected:
00265   KScoringEditor(KScoringManager* m, TQWidget *parent=0, const char *name=0);
00266 private:
00268   RuleEditWidget* ruleEditor;
00270   RuleListWidget *ruleLister;
00271 protected slots:
00272   void slotShrink();
00273   void slotDoShrink();
00274   void slotApply();
00275   void slotOk();
00276   void slotCancel();
00277   void slotFinished();
00278 private:
00279   KScoringManager *manager;
00280   ScoreEditWidget *edit;
00282   static KScoringEditor *scoreEditor;
00283 };
00284 
00285 class KScoringEditorWidgetDialog : public KDialogBase
00286 {
00287   Q_OBJECT
00288   TQ_OBJECT
00289 public:
00290   KScoringEditorWidgetDialog(KScoringManager *m, const TQString& rName, TQWidget *parent=0, const char *name=0);
00291 protected slots:
00292   void slotApply();
00293   void slotOk();
00294   void slotShrink();
00295   void slotDoShrink();
00296 private:
00297   RuleEditWidget *ruleEditor;
00298   KScoringManager *manager;
00299   TQString ruleName;
00300 };
00301 
00302 class KDE_EXPORT KScoringEditorWidget : public TQWidget
00303 {
00304   Q_OBJECT
00305   TQ_OBJECT
00306 public:
00307   KScoringEditorWidget(KScoringManager *m,TQWidget *p =0, const char *n =0);
00308   ~KScoringEditorWidget();
00309 protected slots:
00310   void slotRuleEdited(const TQString&);
00311 private:
00312   RuleListWidget *ruleLister;
00313   KScoringManager *manager;
00314 };
00315 
00316 
00317 #endif // SCOREEDITWIDGET_H