#pragma once #include #include "track_entry_painters.h" #include #include #include namespace Ui { class TrackWidget; } namespace LtsScriptTimeline { class TrackEntry; class TrackContentWidget; class FilterTrackWidget; class FilterBackgroundWidget; class ScriptTimeline; class Tools; class LTSSCRIPTTIMELINE_EXPORT TrackWidget : public QWidget { Q_OBJECT public: explicit TrackWidget(int baseWidth, bool readonly, Tools *tools, bool filtersAllowed, QWidget *parent = nullptr); ~TrackWidget(); void setReadonly(bool readonly); void updateMe(); void unselectAll(); bool isSelected() const; QString trackName() const; bool addTrackEntry(TrackEntry *te, bool selectTrackEntry); void setTrackName(const QString &name); void addCorrespondingTrackWidget(TrackContentWidget *pCorrespondingTrackWidget); TrackContentWidget *getTrackContentWidget() const; void setBaseWidth(int width); void setIndicatorTime(int time); void selectEntry(int topicId); void setInternalName(const QString &name); QVector getTrackEntriesFiltersAsEntries(bool selectedEntriesOnly = false) const; QVector getTrackEntriesWithFilters(bool selectedEntriesOnly = false) const; QVector getTrackEntries(bool selectedEntriesOnly = false) const; QVector getSelectedFilterEntries() const; const QVector &getSelectedEntries() const; int getParentTopicIdOfFilter(const TrackEntry *te) const; void setScriptTimeline(ScriptTimeline *scriptTimeline); const QVector &filterLines() const { return m_filterLines; } void keyPressEvent(QKeyEvent *event) override; private: QVector m_filterLines; Ui::TrackWidget *ui; int m_baseWidth; QString m_internalName; bool m_readonly; ScriptTimeline *m_scriptTimeline; Tools *m_tools; protected: void paintEvent(QPaintEvent *event) override; private slots: void slotExpand(); void slotTrackEntryAdded(TrackEntry *te); void slotTrackEntryDeleted(const int topicId); void slotMainChangesMade(); void slotAddFilter(); signals: void signalUnselectAll(); void signalSelectTrack(); void signalTrackEntrySelectionChanged(TrackEntry *te); void signalChangesMade(); void signalEditEntry(const int topicId); void signalTrackEntryDeleted(const int topicId); void signalTrackEntryAdded(TrackEntry *te); }; }