#pragma once #include "ltsscripttimeline_export.h" #include "track_entry_painters.h" #include #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); }; } // namespace LtsScriptTimeline