00001
00002
00003
00004
00005
00006
00007 #ifndef DIGITIZE_STATE_SEGMENT_H
00008 #define DIGITIZE_STATE_SEGMENT_H
00009
00010 #include "DigitizeStateAbstractBase.h"
00011 #include <QList>
00012 #include <QObject>
00013
00014 class Segment;
00015
00017 class DigitizeStateSegment : public QObject, public DigitizeStateAbstractBase
00018 {
00019 Q_OBJECT;
00020
00021 public:
00023 DigitizeStateSegment(DigitizeStateContext &context);
00024 virtual ~DigitizeStateSegment();
00025
00026 virtual QString activeCurve () const;
00027 virtual void begin(CmdMediator *cmdMediator,
00028 DigitizeState previousState);
00029 virtual QCursor cursor (CmdMediator *cmdMediator) const;
00030 virtual void end();
00031 virtual void handleContextMenuEventAxis (CmdMediator *cmdMediator,
00032 const QString &pointIdentifier);
00033 virtual void handleContextMenuEventGraph (CmdMediator *cmdMediator,
00034 const QStringList &pointIdentifiers);
00035 virtual void handleCurveChange(CmdMediator *cmdMediator);
00036 virtual void handleKeyPress (CmdMediator *cmdMediator,
00037 Qt::Key key,
00038 bool atLeastOneSelectedItem);
00039 virtual void handleMouseMove (CmdMediator *cmdMediator,
00040 QPointF posScreen);
00041 virtual void handleMousePress (CmdMediator *cmdMediator,
00042 QPointF posScreen);
00043 virtual void handleMouseRelease (CmdMediator *cmdMediator,
00044 QPointF posScreen);
00045 virtual QString state() const;
00046 virtual void updateAfterPointAddition ();
00047 virtual void updateModelDigitizeCurve (CmdMediator *cmdMediator,
00048 const DocumentModelDigitizeCurve &modelDigitizeCurve);
00049 virtual void updateModelSegments(const DocumentModelSegments &modelSegments);
00050
00051 public slots:
00053 void slotMouseClickOnSegment(QPointF);
00054
00055 private:
00056 DigitizeStateSegment();
00057
00058
00059 Segment *segmentFromSegmentStart (const QPointF &posSegmentStart) const;
00060
00061 QList<Segment*> m_segments;
00062 CmdMediator *m_cmdMediator;
00063 };
00064
00065 #endif // DIGITIZE_STATE_SEGMENT_H