6#include <QtCore/QDateTime>
7#include <QtWidgets/QGraphicsRectItem>
8#include <QtWidgets/QStyleOptionGraphicsItem>
11#include <imtloggui/IEventScenePositionProvider.h>
18class CTimeAxis :
public QObject,
public QGraphicsRectItem,
virtual public IEventScenePositionProvider
23 typedef QGraphicsRectItem BaseClass;
26 enum QuantizationThresholds
29 QUA_MONTH = 86400 * 365,
40 CTimeAxis(QGraphicsItem* parent =
nullptr);
42 void SetColor(
const QColor& color);
43 void EnsureTimeRange(
const QDateTime& time);
45 void CreateTimeItemTable();
48 virtual QRectF boundingRect()
const override;
49 virtual void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option, QWidget* widget =
nullptr)
override;
52 void setPos(
const QPointF& origin);
53 void setPos(
double x,
double y);
56 virtual double GetScenePositionFromTime(
const QDateTime& time)
const override;
57 virtual QDateTime GetTimeFromScenePosition(
double position)
const override;
58 virtual QDateTime GetBeginTime()
const override;
59 virtual QDateTime GetEndTime()
const override;
60 virtual QDateTime GetVisibleBeginTime()
const override;
61 virtual QDateTime GetVisibleEndTime()
const override;
64 void EmitAxisPosChanged(
const QPointF& oldPos,
const QPointF& newPos);
65 void EmitAxisBeginTimeChanged(
const QDateTime& oldTime,
const QDateTime& newTime);
66 void EmitAxisEndTimeChanged(
const QDateTime& oldTime,
const QDateTime& newTime);
108 TimeInterval majorInterval;
109 TimeInterval minorInterval;
119 typedef QMap<QDateTime, TickInfo> Ticks;
121 struct MinorIntervalItem
125 TimeInterval interval;
128 struct MajorIntervalItem
133 TimeInterval interval;
136 QVector<MinorIntervalItem> minorIntervals;
139 QVector<MajorIntervalItem> m_intervals;
142 IntervalsInfo CalculateIntervals(
double scale)
const;
143 Ticks CalculateTicks(
const IntervalsInfo& intervalsInfo)
const;
145 double GetCurrentScaleX()
const;
146 double GetCurrentScaleY()
const;
147 QRectF GetSceneVisibleRect()
const;
148 QRectF GetItemVisibleRect()
const;
150 double GetRectPositionFromTime(
const QDateTime& time)
const;
151 QDateTime GetTimeFromRectPosition(
double position)
const;
154 QDateTime m_firstEvent;
155 QDateTime m_lastEvent;
156 QDateTime m_beginTime;
159 QFontMetrics m_fontMetrics;
161 double m_minMinorTickStep;
162 double m_labelWidthFactor;