#pragma once #include #include #include #include class QPainter; class QStyleOptionViewItem; class QModelIndex; namespace PresentationManagement { class ScriptModel; } namespace LtsTimeline { class ItemDelegate; class LTSTIMELINE_EXPORT Item { friend class ItemDelegate; public: static QString mimetype; static QColor s_highlightColor; Item() = default; Item(qint64 startTime, int duration, const QColor &color, bool isEditable = true); Item(const Item &) = delete; Item &operator=(const Item &) = delete; Item(Item &&) noexcept = default; virtual ~Item() = default; int id() const { return m_id; } int parentTrackId() const { return m_parentTrackId; } QColor color() const { return m_color; } void setColor(const QColor &color) { m_color = color; } qint64 startTime() const { return m_startTime; } [[deprecated("use model's setItemStartTime instead, needed to notify the model that it has to re-sort items")]] void setStartTime(qint64 startTime) { m_startTime = startTime; } int duration() const { return m_duration; } void setDuration(int duration) { m_duration = duration; } bool isEditable() const { return m_isEditable; } void setEditable(bool editable) { m_isEditable = editable; } virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index, bool highlight = false) const; void _setStartTime(qint64 startTime) { m_startTime = startTime; } void _setDuration(int duration) { m_duration = duration; } protected: QColor m_color; qint64 m_startTime { -1 }; int m_duration { -1 }; bool m_isEditable { false }; private: friend class TimelineModel; friend class PresentationManagement::ScriptModel; int m_id { -1 }; int m_parentTrackId { -1 }; }; typedef std::unique_ptr ItemPtr; typedef std::vector Items; typedef std::reference_wrapper ItemPtrRef; typedef std::reference_wrapper ItemPtrNCVRef; typedef std::vector ItemPtrNCVRefs; typedef std::vector ItemPtrRefs; }