summaryrefslogtreecommitdiffstats
path: root/libkdepim/kscoringeditor.h
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch)
tree67208f7c145782a7e90b123b982ca78d88cc2c87 /libkdepim/kscoringeditor.h
downloadtdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz
tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'libkdepim/kscoringeditor.h')
-rw-r--r--libkdepim/kscoringeditor.h308
1 files changed, 308 insertions, 0 deletions
diff --git a/libkdepim/kscoringeditor.h b/libkdepim/kscoringeditor.h
new file mode 100644
index 000000000..5fc919f86
--- /dev/null
+++ b/libkdepim/kscoringeditor.h
@@ -0,0 +1,308 @@
+/*
+ kscoringeditor.h
+
+ Copyright (c) 2001 Mathias Waack
+ Copyright (C) 2005 by Volker Krause <[email protected]>
+
+ Author: Mathias Waack <[email protected]>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US
+*/
+
+#ifndef SCOREEDITWIDGET_H
+#define SCOREEDITWIDGET_H
+
+#include <qmap.h>
+#include <kdialogbase.h>
+#include <qtable.h>
+#include <qframe.h>
+
+#include "kwidgetlister.h"
+
+#include <kdepimmacros.h>
+
+class KComboBox;
+class KLineEdit;
+class KIntSpinBox;
+class KListBox;
+class QFrame;
+class QLabel;
+class QListBoxItem;
+class QPushButton;
+class QCheckBox;
+class QRadioButton;
+
+class KScoringRule;
+class KScoringExpression;
+class KScoringManager;
+class ActionBase;
+class KScoringEditor;
+class ScoreEditWidget;
+class KColorCombo;
+
+/** this widget implements an editor for one condition.
+ It is used in ExpressionEditWidget
+*/
+class KDE_EXPORT SingleConditionWidget : public QFrame
+{
+ Q_OBJECT
+ friend class ConditionEditWidget;
+public:
+ SingleConditionWidget(KScoringManager *,QWidget *p =0, const char *n =0);
+ ~SingleConditionWidget();
+ void setCondition(KScoringExpression*);
+ KScoringExpression *createCondition() const;
+ void clear();
+
+protected slots:
+ void toggleRegExpButton( int );
+ void showRegExpDialog();
+
+private:
+ /** marks a condition as negated */
+ QCheckBox *neg;
+ /** list of possible headers */
+ KComboBox *headers;
+ /** list of match types */
+ KComboBox *matches;
+ /** the expression which will be matched */
+ KLineEdit *expr;
+ /** the button to open the regexp-editor */
+ QPushButton *regExpButton;
+
+ KScoringManager *manager;
+};
+
+/** this widget implements the conditions editor
+ */
+class ConditionEditWidget: public KWidgetLister
+{
+ Q_OBJECT
+public:
+ ConditionEditWidget(KScoringManager *,QWidget *p =0, const char *n =0);
+ ~ConditionEditWidget();
+ QWidget* createWidget(QWidget*);
+ void updateRule(KScoringRule*);
+ void clearWidget(QWidget*);
+public slots:
+ void slotEditRule(KScoringRule*);
+private:
+ KScoringManager *manager;
+};
+
+/** this widget implements an editor for one action.
+ It is used in ActionEditWidget
+*/
+class SingleActionWidget : public QWidget
+{
+ Q_OBJECT
+ friend class ActionEditWidget;
+public:
+ SingleActionWidget(KScoringManager *m,QWidget *p =0, const char *n =0);
+ ~SingleActionWidget();
+ void setAction(ActionBase*);
+ ActionBase *createAction() const;
+ void clear();
+private:
+ /** the list of available action */
+ KComboBox *types;
+ /** the stack of the edit widgets for each action type */
+ QWidgetStack *stack;
+ /** the notify action editor */
+ KLineEdit *notifyEditor;
+ /** the score acton editor */
+ KIntSpinBox *scoreEditor;
+ /** the color action editor */
+ KColorCombo *colorEditor;
+ /** the dummy label */
+ QLabel *dummyLabel;
+
+ KScoringManager *manager;
+};
+
+/** this widget implements the action editor
+ */
+class KDE_EXPORT ActionEditWidget : public KWidgetLister
+{
+ Q_OBJECT
+public:
+ ActionEditWidget(KScoringManager *m,QWidget *p =0, const char *n =0);
+ ~ActionEditWidget();
+ QWidget* createWidget(QWidget *parent);
+ void updateRule(KScoringRule*);
+ void clearWidget(QWidget *);
+public slots:
+ void slotEditRule(KScoringRule *);
+private:
+ KScoringManager *manager;
+};
+
+/** This widget implements the rule editor
+ */
+class RuleEditWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ RuleEditWidget(KScoringManager *m,QWidget *p =0, const char *n =0);
+ ~RuleEditWidget();
+public slots:
+ void setDirty();
+ void slotEditRule(const QString&);
+ void updateRule(KScoringRule*);
+ void updateRule();
+signals:
+ void shrink();
+protected slots:
+ void slotAddGroup();
+ void slotShrink();
+private slots:
+ void slotExpireEditChanged(int value);
+private:
+ void clearContents();
+
+ bool dirty;
+ /** the name of the rule */
+ KLineEdit *ruleNameEdit;
+ /** the list of groups this rule applies to */
+ KLineEdit *groupsEdit;
+ /** list of all available groups */
+ KComboBox *groupsBox;
+ /** the expire enable */
+ QCheckBox *expireCheck;
+ /** the label to the expireCheck */
+ QLabel *expireLabel;
+ /** the expire delay */
+ KIntSpinBox *expireEdit;
+ /** the link modes of the conditions */
+ QRadioButton *linkModeOr, *linkModeAnd;
+ /** the actions editor */
+ ActionEditWidget *actionEditor;
+ /** the conditions editor */
+ ConditionEditWidget *condEditor;
+
+ KScoringManager *manager;
+
+ // the old name of the current rule
+ QString oldRuleName;
+};
+
+/** This widget shows a list of rules with buttons for
+ copy, delete aso.
+*/
+class KDE_EXPORT RuleListWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ RuleListWidget(KScoringManager *m, bool =false, QWidget *p =0, const char *n =0);
+ ~RuleListWidget();
+ QString currentRule() const { return ruleList->currentText(); }
+protected:
+ void updateButton();
+
+signals:
+ void ruleSelected(const QString&);
+ void ruleEdited(const QString&);
+ void leavingRule();
+public slots:
+ void slotRuleSelected(const QString&);
+ void slotRuleSelected(QListBoxItem *);
+ void slotRuleSelected(int);
+ void updateRuleList();
+ void updateRuleList(const KScoringRule*);
+ void slotRuleNameChanged(const QString&,const QString&);
+protected slots:
+ void slotGroupFilter(const QString&);
+ void slotEditRule(QListBoxItem*);
+ void slotEditRule(const QString&);
+ void slotEditRule();
+ void slotDelRule();
+ void slotNewRule();
+ void slotCopyRule();
+ void slotRuleUp();
+ void slotRuleDown();
+
+private:
+ /** the list of rules */
+ KListBox *ruleList;
+ /** the current group */
+ QString group;
+ /** marks if we're alone or together with the edit widget */
+ bool alone;
+
+ KScoringManager *manager;
+
+ QPushButton *editRule;
+ QPushButton *newRule;
+ QPushButton *delRule;
+ QPushButton *copyRule;
+ QPushButton *mRuleUp;
+ QPushButton *mRuleDown;
+};
+
+class KDE_EXPORT KScoringEditor : public KDialogBase
+{
+ Q_OBJECT
+public:
+ ~KScoringEditor();
+ void setRule(KScoringRule*);
+ static KScoringEditor *createEditor(KScoringManager* m, QWidget *parent=0, const char *name=0);
+ static KScoringEditor *editor() { return scoreEditor; }
+ void setDirty();
+protected:
+ KScoringEditor(KScoringManager* m, QWidget *parent=0, const char *name=0);
+private:
+ /** the editor for the current rule */
+ RuleEditWidget* ruleEditor;
+ /** the list of known rules */
+ RuleListWidget *ruleLister;
+protected slots:
+ void slotShrink();
+ void slotDoShrink();
+ void slotApply();
+ void slotOk();
+ void slotCancel();
+ void slotFinished();
+private:
+ KScoringManager *manager;
+ ScoreEditWidget *edit;
+ /** make sure that there is only one instance of ourselve */
+ static KScoringEditor *scoreEditor;
+};
+
+class KScoringEditorWidgetDialog : public KDialogBase
+{
+ Q_OBJECT
+public:
+ KScoringEditorWidgetDialog(KScoringManager *m, const QString& rName, QWidget *parent=0, const char *name=0);
+protected slots:
+ void slotApply();
+ void slotOk();
+ void slotShrink();
+ void slotDoShrink();
+private:
+ RuleEditWidget *ruleEditor;
+ KScoringManager *manager;
+ QString ruleName;
+};
+
+class KDE_EXPORT KScoringEditorWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ KScoringEditorWidget(KScoringManager *m,QWidget *p =0, const char *n =0);
+ ~KScoringEditorWidget();
+protected slots:
+ void slotRuleEdited(const QString&);
+private:
+ RuleListWidget *ruleLister;
+ KScoringManager *manager;
+};
+
+
+#endif // SCOREEDITWIDGET_H