/*** Olive - Non-Linear Video Editor Copyright (C) 2022 Olive Team Modifications Copyright (C) 2025 mikesolar This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ***/ #include "timelineandtrackview.h" #include #include namespace olive { TimelineAndTrackView::TimelineAndTrackView(Qt::Alignment vertical_alignment, QWidget *parent) : QWidget(parent) { QHBoxLayout *layout = new QHBoxLayout(this); layout->setSpacing(0); layout->setContentsMargins(0, 0, 0, 0); splitter_ = new QSplitter(Qt::Horizontal); splitter_->setChildrenCollapsible(false); layout->addWidget(splitter_); track_view_ = new TrackView(vertical_alignment); splitter_->addWidget(track_view_); view_ = new TimelineView(vertical_alignment); splitter_->addWidget(view_); connect(view_->verticalScrollBar(), &QScrollBar::valueChanged, this, &TimelineAndTrackView::view_value_changed); connect(track_view_->verticalScrollBar(), &QScrollBar::valueChanged, this, &TimelineAndTrackView::tracks_value_changed); // Default track header width: 180px (per UI design reference) splitter_->setSizes({ 180, width() }); } QSplitter *TimelineAndTrackView::splitter() const { return splitter_; } TimelineView *TimelineAndTrackView::view() const { return view_; } TrackView *TimelineAndTrackView::track_view() const { return track_view_; } void TimelineAndTrackView::view_value_changed(int v) { track_view_->verticalScrollBar()->setValue( v - view_->verticalScrollBar()->minimum()); } void TimelineAndTrackView::tracks_value_changed(int v) { view_->verticalScrollBar()->setValue(view_->verticalScrollBar()->minimum() + v); } }