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 QSize;
00019 class QString;
00020 class QStringList;
00021 class Transformation;
00022
00024 enum DigitizeState {
00025 DIGITIZE_STATE_AXIS,
00026 DIGITIZE_STATE_COLOR_PICKER,
00027 DIGITIZE_STATE_CURVE,
00028 DIGITIZE_STATE_EMPTY,
00029 DIGITIZE_STATE_POINT_MATCH,
00030 DIGITIZE_STATE_SEGMENT,
00031 DIGITIZE_STATE_SELECT,
00032 DIGITIZE_STATE_SCALE,
00033 NUM_DIGITIZE_STATES
00034 };
00035
00037 class DigitizeStateAbstractBase
00038 {
00039 public:
00041 DigitizeStateAbstractBase(DigitizeStateContext &context);
00042 virtual ~DigitizeStateAbstractBase ();
00043
00045 virtual QString activeCurve () const = 0;
00046
00049 virtual void begin(CmdMediator *cmdMediator,
00050 DigitizeState previousState) = 0;
00051
00053 virtual bool canPaste (const Transformation &transformation,
00054 const QSize &viewSize) const = 0;
00055
00057 DigitizeStateContext &context();
00058
00060 const DigitizeStateContext &context() const;
00061
00063 virtual void end() = 0;
00064
00066 virtual void handleContextMenuEventAxis (CmdMediator *cmdMediator,
00067 const QString &pointIdentifier) = 0;
00068
00070 virtual void handleContextMenuEventGraph (CmdMediator *cmdMediator,
00071 const QStringList &pointIdentifiers) = 0;
00072
00074 virtual void handleCurveChange (CmdMediator *cmdMediator) = 0;
00075
00077 virtual void handleKeyPress (CmdMediator *cmdMediator,
00078 Qt::Key key,
00079 bool atLeastOneSelectedItem) = 0;
00080
00082 virtual void handleMouseMove (CmdMediator *cmdMediator,
00083 QPointF posScreen) = 0;
00084
00086 virtual void handleMousePress (CmdMediator *cmdMediator,
00087 QPointF pos) = 0;
00088
00090 virtual void handleMouseRelease (CmdMediator *cmdMediator,
00091 QPointF pos) = 0;
00092
00094 void setCursor(CmdMediator *cmdMediator);
00095
00097 virtual QString state() const = 0;
00098
00100 virtual void updateAfterPointAddition () = 0;
00101
00103 virtual void updateModelDigitizeCurve (CmdMediator *cmdMediator,
00104 const DocumentModelDigitizeCurve &modelDigitizeCurve) = 0;
00105
00107 virtual void updateModelSegments(const DocumentModelSegments &modelSegments) = 0;
00108
00109 protected:
00111 bool canPasteProtected (const Transformation &transformation,
00112 const QSize &viewSize) const;
00113
00115 virtual QCursor cursor (CmdMediator *cmdMediator) const = 0;
00116
00117 private:
00118 DigitizeStateAbstractBase();
00119
00120 DigitizeStateContext &m_context;
00121
00122 };
00123
00124 #endif // DIGITIZE_STATE_ABSTRACT_BASE_H