VisualizationSelectionZoneItem.h
73 lines
| 2.9 KiB
| text/x-c
|
CLexer
r1044 | #ifndef SCIQLOP_VISUALIZATIONSELECTIONZONEITEM_H | |||
#define SCIQLOP_VISUALIZATIONSELECTIONZONEITEM_H | ||||
#include <Common/spimpl.h> | ||||
r1347 | #include <Data/DateTimeRange.h> | |||
r1044 | #include <Visualization/qcustomplot.h> | |||
r1079 | class VisualizationGraphWidget; | |||
r1044 | class VisualizationSelectionZoneItem : public QCPItemRect { | |||
r1293 | Q_OBJECT | |||
signals: | ||||
/// Signal emitted when the zone range is edited manually | ||||
r1346 | void rangeEdited(const DateTimeRange &range); | |||
r1049 | ||||
r1044 | public: | |||
VisualizationSelectionZoneItem(QCustomPlot *plot); | ||||
virtual ~VisualizationSelectionZoneItem(); | ||||
r1079 | VisualizationGraphWidget *parentGraphWidget() const noexcept; | |||
r1044 | void setName(const QString &name); | |||
QString name() const; | ||||
r1346 | DateTimeRange range() const; | |||
r1044 | void setRange(double tstart, double tend); | |||
void setStart(double tstart); | ||||
void setEnd(double tend); | ||||
void setColor(const QColor &color); | ||||
void setEditionEnabled(bool value); | ||||
bool isEditionEnabled() const; | ||||
r1085 | /// Moves the item at the top of its QCPLayer. It will then receive the mouse events if multiple | |||
/// items are stacked on top of each others. | ||||
void moveToTop(); | ||||
r1044 | Qt::CursorShape curshorShapeForPosition(const QPoint &position) const; | |||
void setHovered(bool value); | ||||
r1081 | /// Sets the zones which should be moved or reisized together with this zone | |||
r1050 | void setAssociatedEditedZones(const QVector<VisualizationSelectionZoneItem *> &associatedZones); | |||
r1081 | /// Align the specified zones with this one, vertically with the left border | |||
bool alignZonesVerticallyOnLeft(const QVector<VisualizationSelectionZoneItem *> &zonesToAlign, | ||||
bool allowResize); | ||||
/// Align the specified zones with this one, vertically with the right border | ||||
bool alignZonesVerticallyOnRight(const QVector<VisualizationSelectionZoneItem *> &zonesToAlign, | ||||
bool allowResize); | ||||
/// Align the specified zones with this one, temporally with the left border | ||||
bool alignZonesTemporallyOnLeft(const QVector<VisualizationSelectionZoneItem *> &zonesToAlign, | ||||
bool allowResize); | ||||
/// Align the specified zones with this one, temporally with the right border | ||||
bool alignZonesTemporallyOnRight(const QVector<VisualizationSelectionZoneItem *> &zonesToAlign, | ||||
bool allowResize); | ||||
r1044 | protected: | |||
void mousePressEvent(QMouseEvent *event, const QVariant &details) override; | ||||
void mouseMoveEvent(QMouseEvent *event, const QPointF &startPos) override; | ||||
void mouseReleaseEvent(QMouseEvent *event, const QPointF &startPos) override; | ||||
r1050 | void resizeLeft(double pixelDiff); | |||
void resizeRight(double pixelDiff); | ||||
void move(double pixelDiff); | ||||
r1044 | private: | |||
class VisualizationSelectionZoneItemPrivate; | ||||
spimpl::unique_impl_ptr<VisualizationSelectionZoneItemPrivate> impl; | ||||
}; | ||||
#endif // SCIQLOP_VISUALIZATIONSELECTIONZONEITEM_H | ||||