Files
qt5-legatus-legacy/Lts/Common/LtsScriptTimeline/track_widget.h
T
2026-08-13 18:33:10 +02:00

90 lines
2.8 KiB
C++
Executable File

#pragma once
#include <LtsScriptTimeline/ltsscripttimeline_export.h>
#include "track_entry_painters.h"
#include <QWidget>
#include <QMap>
#include <functional>
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); // use this instead directly on the TCW to get correct filter handling
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 setAllowedTypes(const QVector<TrackEntryType> &allowedTypes);
void setInternalName(const QString &name);
QVector<TrackEntry *> getTrackEntriesFiltersAsEntries(bool selectedEntriesOnly = false) const; // filters as entries
QVector<TrackEntry *> getTrackEntriesWithFilters(bool selectedEntriesOnly = false) const; // filters inside parent's detail data
QVector<TrackEntry *> getTrackEntries(bool selectedEntriesOnly = false) const; // no filters
QVector<TrackEntry *> getSelectedFilterEntries() const;
const QVector<TrackEntry *> &getSelectedEntries() const;
int getParentTopicIdOfFilter(const TrackEntry *te) const;
void setScriptTimeline(ScriptTimeline *scriptTimeline);
const QVector<FilterTrackWidget *> &filterLines() const { return m_filterLines; }
void keyPressEvent(QKeyEvent *event) override; // TODO: private..
private:
QVector<FilterTrackWidget *> 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(); // redirected to ScriptTimeline
void signalSelectTrack(); // checkbox un-/selected
void signalTrackEntrySelectionChanged(TrackEntry *te); // durchgereicht!
void signalChangesMade();
void signalEditEntry(const int topicId);
void signalTrackEntryDeleted(const int topicId);
void signalTrackEntryAdded(TrackEntry *te);
};
} // namespace LtsScriptTimeline