/** * @RDE_HEADER@ * manages each row in view which type of container is suitable for current situation * $Id$ * $HeadURL$ * $Author$ * Created by Mike Wille, SLSE, 2014-10-01 */ #pragma once #include "AbstractTimelineModel.h" #include "Range.h" #include namespace LtsTimelineClassic { /** * @brief manages each row in view which type of container is suitable for current situation */ class EventDelegate : public QStyledItemDelegate // manages all EventContainer and kind of { Q_OBJECT public: /** * @brief delegate which manages all containers (active/passive event containers) for the view * @param parent on which parent this delegates lies on * @param timelineModel model to get data for containers */ EventDelegate(QWidget *parent = nullptr); void setKnownRanges(const QVector &knownRanges); /** * @brief minimum size a row / column should take * @param option style options of coherant row & column * @param index which row & column is affected * @return */ QSize sizeHint(const QStyleOptionViewItem &option = QStyleOptionViewItem(), const QModelIndex &index = QModelIndex()) const; void setLiveTime(qint64 liveTime); private: /** * @brief paint draws all containers on itself (which lies directly on the view) * @param painter painter to draw all containers on the view * @param option style options of coherant row & column * @param index which row & column to paint */ void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; /** * @brief creates or returns an active event container so that users can interact with events on the view * @param parent on which delegate/parent this editor lies on * @param option style options of coherant row & column * @param index which row & column to lay the editor on * @return */ //QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; LineMap m_lineMap; QVector m_knownRanges; qint64 m_liveTime; public slots: /** * @brief deletes line list (date text line lists) */ void slotResetLineList(); /** * @brief add date text line pixel position which should be added to a list, * so that the view can draw them on itself * @param posX pixel position of date text line */ void slotAddLine(int posX, qint64 time); }; }