From df9255ce0bbb9a6547123addaeceeb2daed80e63 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 7 Oct 2019 09:01:11 +1100 Subject: [PATCH] timeline views can be siblings --- app/common/rational.cpp | 11 +++++----- app/common/rational.h | 4 ++-- app/widget/timelineview/timelineview.cpp | 21 ++++++++++++++++++++ app/widget/timelineview/timelineview.h | 6 ++++++ app/widget/timelinewidget/timelinewidget.cpp | 5 ++++- app/widget/timelinewidget/timelinewidget.h | 2 +- 6 files changed, 39 insertions(+), 10 deletions(-) diff --git a/app/common/rational.cpp b/app/common/rational.cpp index 9286a8e97..d6db8260c 100644 --- a/app/common/rational.cpp +++ b/app/common/rational.cpp @@ -106,12 +106,6 @@ int rational::getActiveInstances() return activeInstances; } -rational::operator QString() const -{ - return QString("%1/%2").arg(QString::number(numer), - QString::number(denom)); -} - const intType &rational::numerator() const { return numer; @@ -427,3 +421,8 @@ istream& operator>>(istream &in, rational &value) return in; } +QDebug operator<<(QDebug debug, const rational &r) +{ + debug.nospace() << r.numerator() << "/" << r.denominator(); + return debug.maybeSpace(); +} diff --git a/app/common/rational.h b/app/common/rational.h index 225877112..1a0828b6d 100644 --- a/app/common/rational.h +++ b/app/common/rational.h @@ -115,8 +115,6 @@ public: friend ostream& operator<<(ostream &out, const rational &value); friend istream& operator>>(istream &in, rational &value); - operator QString() const; - const intType& numerator() const; const intType& denominator() const; @@ -136,6 +134,8 @@ private: intType gcd(intType &x, intType &y); }; +QDebug operator<<(QDebug debug, const rational& r); + #define RATIONAL_MIN rational(INT32_MIN, 1) #define RATIONAL_MAX rational(INT32_MAX, 1) diff --git a/app/widget/timelineview/timelineview.cpp b/app/widget/timelineview/timelineview.cpp index 8ed96f442..66aba1dfb 100644 --- a/app/widget/timelineview/timelineview.cpp +++ b/app/widget/timelineview/timelineview.cpp @@ -483,3 +483,24 @@ void TimelineView::SetEndTime(const rational &length) { end_item_->SetEndTime(length); } + +void TimelineView::SetSiblings(TimelineView *a, TimelineView *b) +{ + if (a == b) + return; + + if (!a->siblings_.contains(b)) + a->siblings_.append(b); + + if (!b->siblings_.contains(a)) + b->siblings_.append(a); +} + +void TimelineView::SetSiblings(const QList &siblings) +{ + foreach (TimelineView* view, siblings) { + foreach (TimelineView* sibling, siblings) { + SetSiblings(view, sibling); + } + } +} diff --git a/app/widget/timelineview/timelineview.h b/app/widget/timelineview/timelineview.h index 28d19fa52..2442d8615 100644 --- a/app/widget/timelineview/timelineview.h +++ b/app/widget/timelineview/timelineview.h @@ -61,6 +61,10 @@ public: void SetEndTime(const rational& length); + static void SetSiblings(TimelineView* a, TimelineView* b); + + static void SetSiblings(const QList& siblings); + public slots: void SetTimebase(const rational& timebase); @@ -385,6 +389,8 @@ private: bool use_tracklist_length_directly_; + QVector siblings_; + private slots: /** * @brief Slot for when a Block node changes its parameters and the graphics need to update diff --git a/app/widget/timelinewidget/timelinewidget.cpp b/app/widget/timelinewidget/timelinewidget.cpp index 79057c053..b9d3dc078 100644 --- a/app/widget/timelinewidget/timelinewidget.cpp +++ b/app/widget/timelinewidget/timelinewidget.cpp @@ -30,7 +30,10 @@ TimelineWidget::TimelineWidget(QWidget *parent) : views_.append(new TimelineView(Qt::AlignBottom)); // Audio view - views_.append(new TimelineView()); + views_.append(new TimelineView(Qt::AlignTop)); + + // Set both views as siblings + TimelineView::SetSiblings(views_); // Global scrollbar horizontal_scroll_ = new QScrollBar(Qt::Horizontal); diff --git a/app/widget/timelinewidget/timelinewidget.h b/app/widget/timelinewidget/timelinewidget.h index fc5f5b28a..b68b15c8f 100644 --- a/app/widget/timelinewidget/timelinewidget.h +++ b/app/widget/timelinewidget/timelinewidget.h @@ -60,7 +60,7 @@ private: void SetTimeAndSignal(const int64_t& t); - QVector views_; + QList views_; TimeRuler* ruler_;