00001
00002
00003
00004
00005
00006
00007 #ifndef DIGITIZE_STATE_ABSTRACT_BASE_H
00008 #define DIGITIZE_STATE_ABSTRACT_BASE_H
00009
00010 #include "PointStyle.h"
00011 #include <QCursor>
00012 #include <QPointF>
00013
00014 class CmdMediator;
00015 class DigitizeStateContext;
00016 class DocumentModelDigitizeCurve;
00017 class DocumentModelSegments;
00018 class QGraphicsScene;
00019 class QImage;
00020 class QTimer;
00021
00023 enum DigitizeState {
00024 DIGITIZE_STATE_AXIS,
00025 DIGITIZE_STATE_COLOR_PICKER,
00026 DIGITIZE_STATE_CURVE,
00027 DIGITIZE_STATE_EMPTY,
00028 DIGITIZE_STATE_POINT_MATCH,
00029 DIGITIZE_STATE_SEGMENT,
00030 DIGITIZE_STATE_SELECT,
00031 NUM_DIGITIZE_STATES
00032 };
00033
00035 class DigitizeStateAbstractBase
00036 {
00037 public:
00039 DigitizeStateAbstractBase(DigitizeStateContext &context);
00040 virtual ~DigitizeStateAbstractBase ();
00041
00043 virtual QString activeCurve () const = 0;
00044
00047 virtual void begin(CmdMediator *cmdMediator,
00048 DigitizeState previousState) = 0;
00049
00051 DigitizeStateContext &context();
00052
00054 const DigitizeStateContext &context() const;
00055
00057 virtual void end() = 0;
00058
00060 void handleContextMenuEvent (CmdMediator *cmdMediator,
00061 const QString &pointIdentifier);
00062
00064 virtual void handleCurveChange (CmdMediator *cmdMediator) = 0;
00065
00067 virtual void handleKeyPress (CmdMediator *cmdMediator,
00068 Qt::Key key,
00069 bool atLeastOneSelectedItem) = 0;
00070
00072 virtual void handleLeave (CmdMediator *cmdMediator);
00073
00075 virtual void handleMouseMove (CmdMediator *cmdMediator,
00076 QPointF posScreen) = 0;
00077
00079 virtual void handleMousePress (CmdMediator *cmdMediator,
00080 QPointF pos) = 0;
00081
00083 virtual void handleMouseRelease (CmdMediator *cmdMediator,
00084 QPointF pos) = 0;
00085
00087 void handleSetOverrideCursor (CmdMediator *cmdMediator,
00088 const QCursor &cursor);
00089
00091 void removeOverrideCursor ();
00092
00094 void setCursor(CmdMediator *cmdMediator);
00095
00097 virtual QString state() const = 0;
00098
00100 virtual void updateModelDigitizeCurve (CmdMediator *cmdMediator,
00101 const DocumentModelDigitizeCurve &modelDigitizeCurve) = 0;
00102
00104 virtual void updateModelSegments(const DocumentModelSegments &modelSegments) = 0;
00105
00106 protected:
00108 virtual QCursor cursor (CmdMediator *cmdMediator) const = 0;
00109
00110 private:
00111 DigitizeStateAbstractBase();
00112
00113 DigitizeStateContext &m_context;
00114
00115 bool m_isOverrideCursor;
00116 };
00117
00118 #endif // DIGITIZE_STATE_ABSTRACT_BASE_H