You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/libkdepim/kscoringeditor.h

309 lines
7.5 KiB

/*
kscoringeditor.h
Copyright (c) 2001 Mathias Waack
Copyright (C) 2005 by Volker Krause <volker.krause@rwth-aachen.de>
Author: Mathias Waack <mathias@atoll-net.de>
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