#pragma once #include "ltstimeline_export.h" #include "timeline_utils.h" #include #include #include class QScrollBar; class QAbstractItemModel; namespace Ui { class Timeline; } namespace LtsTimeline { class TimelineView; class TimelineHeaderView; class TimelineModel; class LTSTIMELINE_EXPORT TimelineWidget : public QWidget { Q_OBJECT public: explicit TimelineWidget(QWidget* parent = nullptr); ~TimelineWidget(); TimelineView* view(); TimelineHeaderView* header(); TimelineModel* timelineModel(); void setModel(QAbstractItemModel* model); QScrollBar* slider(); ZoomFactor zoomFactor() const; void setZoomFactor(ZoomFactor factor); ZoomFactor minimumZoomFactor() const; void setMinimumZoomFactor(ZoomFactor factor); ZoomFactor maximumZoomFactor() const; void setMaximumZoomFactor(ZoomFactor factor); qint64 startTime() const; void setStartTime(qint64 time); qint64 currentTime() const; void setCurrentTime(qint64 time); qint64 endTime() const; void setEndTime(qint64 time); int duration() const; void setDuration(int duration); bool isCursorTextVisible() const; void setCursorTextVisible(bool visible); void setCursorText(const QString& text); void setCursorText(const QStringList& texts); bool isSnapEnabled() const; void setSnapEnabled(bool enabled); void enableSnap(); void disableSnap(); void triggerSnap(); void setZoomInIcon(QIcon icon); void setZoomOutIcon(QIcon icon); QWidget* placeholder(); void setPlaceholder(QWidget* widget); void showDebugWidget(); void hideDebugWidget(); private: NGL::INGLLogger& m_logger; void populateZoomFactorComboBox(); public: void onUpdateZoomButtons(); private slots: void onSectionResized(int logicalIndex, int oldSize, int newSize); void onSliderValueChanged(int value); void onZoomChanged(ZoomFactor factor); void onZoomSelected(); void onZoomIn(); void onZoomOut(); void onUpdateDebugInfo(); signals: private: Ui::Timeline* m_ui{nullptr}; }; } // namespace LtsTimeline