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 <tdepimmacros.h> 00029 00030 class KComboBox; 00031 class KLineEdit; 00032 class KIntSpinBox; 00033 class TDEListBox; 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 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 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 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 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 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 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 TDEListBox *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 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 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 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