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.
309 lines
7.5 KiB
309 lines
7.5 KiB
15 years ago
|
/*
|
||
|
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
|