From 9cc4349054be47dc475bde7f4f2883c939259a94 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 15 Apr 2020 15:31:54 +1000 Subject: [PATCH] timebasedwidget: re-implemented toggle show all function --- app/panel/timebased/timebased.cpp | 5 +++++ app/panel/timebased/timebased.h | 2 ++ app/widget/panel/panel.h | 2 ++ app/widget/timebased/timebased.cpp | 31 +++++++++++++++++++++++++++++- app/widget/timebased/timebased.h | 6 ++++++ app/window/mainwindow/mainmenu.cpp | 7 ++++++- app/window/mainwindow/mainmenu.h | 2 ++ 7 files changed, 53 insertions(+), 2 deletions(-) diff --git a/app/panel/timebased/timebased.cpp b/app/panel/timebased/timebased.cpp index a2e0c7bd8..fd3957e2c 100644 --- a/app/panel/timebased/timebased.cpp +++ b/app/panel/timebased/timebased.cpp @@ -187,4 +187,9 @@ void TimeBasedPanel::SetMarker() GetTimeBasedWidget()->SetMarker(); } +void TimeBasedPanel::ToggleShowAll() +{ + GetTimeBasedWidget()->ToggleShowAll(); +} + OLIVE_NAMESPACE_EXIT diff --git a/app/panel/timebased/timebased.h b/app/panel/timebased/timebased.h index 8546f064e..4e6f8ec2e 100644 --- a/app/panel/timebased/timebased.h +++ b/app/panel/timebased/timebased.h @@ -78,6 +78,8 @@ public: virtual void SetMarker() override; + virtual void ToggleShowAll() override; + public slots: void SetTimebase(const rational& timebase); diff --git a/app/widget/panel/panel.h b/app/widget/panel/panel.h index c7d5bc3e1..8216c3534 100644 --- a/app/widget/panel/panel.h +++ b/app/widget/panel/panel.h @@ -144,6 +144,8 @@ public: virtual void PasteInsert(){} + virtual void ToggleShowAll(){} + protected: /** * @brief paintEvent diff --git a/app/widget/timebased/timebased.cpp b/app/widget/timebased/timebased.cpp index b2e2c7836..54f32d9e5 100644 --- a/app/widget/timebased/timebased.cpp +++ b/app/widget/timebased/timebased.cpp @@ -35,7 +35,8 @@ TimeBasedWidget::TimeBasedWidget(bool ruler_text_visible, bool ruler_cache_statu TimelineScaledWidget(parent), viewer_node_(nullptr), auto_max_scrollbar_(false), - points_(nullptr) + points_(nullptr), + toggle_show_all_(false) { ruler_ = new TimeRuler(ruler_text_visible, ruler_cache_status_visible, this); connect(ruler_, &TimeRuler::TimeChanged, this, &TimeBasedWidget::SetTimeAndSignal); @@ -164,6 +165,8 @@ void TimeBasedWidget::ScaleChangedEvent(const double &scale) ruler_->SetScale(scale); UpdateMaximumScroll(); + + toggle_show_all_ = false; } void TimeBasedWidget::SetAutoMaxScrollBar(bool e) @@ -433,4 +436,30 @@ void TimeBasedWidget::SetMarker() } } +void TimeBasedWidget::ToggleShowAll() +{ + if (!GetConnectedNode()) { + return; + } + + if (toggle_show_all_) { + SetScale(toggle_show_all_old_scale_); + toggle_show_all_ = false; + } else { + int w; + + if (timeline_views_.isEmpty()) { + w = width(); + } else { + w = timeline_views_.first()->width(); + } + + w = w / 10 * 9; + + toggle_show_all_old_scale_ = GetScale(); + SetScale(w / GetConnectedNode()->Length().toDouble()); + toggle_show_all_ = true; + } +} + OLIVE_NAMESPACE_EXIT diff --git a/app/widget/timebased/timebased.h b/app/widget/timebased/timebased.h index 110e1e101..22581ed30 100644 --- a/app/widget/timebased/timebased.h +++ b/app/widget/timebased/timebased.h @@ -84,6 +84,8 @@ public slots: void SetMarker(); + void ToggleShowAll(); + TimeRuler* ruler() const; protected slots: @@ -158,6 +160,10 @@ private: QList timeline_views_; + bool toggle_show_all_; + + double toggle_show_all_old_scale_; + private slots: void UpdateMaximumScroll(); diff --git a/app/window/mainwindow/mainmenu.cpp b/app/window/mainwindow/mainmenu.cpp index 32c2bc6b7..d5aa0e96c 100644 --- a/app/window/mainwindow/mainmenu.cpp +++ b/app/window/mainwindow/mainmenu.cpp @@ -102,7 +102,7 @@ MainMenu::MainMenu(QMainWindow *parent) : view_zoom_out_item_ = view_menu_->AddItem("zoomout", this, SLOT(ZoomOutTriggered()), "-"); view_increase_track_height_item_ = view_menu_->AddItem("vzoomin", this, SLOT(IncreaseTrackHeightTriggered()), "Ctrl+="); view_decrease_track_height_item_ = view_menu_->AddItem("vzoomout", this, SLOT(DecreaseTrackHeightTriggered()), "Ctrl+-"); - view_show_all_item_ = view_menu_->AddItem("showall", nullptr, nullptr, "\\"); + view_show_all_item_ = view_menu_->AddItem("showall", this, SLOT(ToggleShowAllTriggered()), "\\"); view_show_all_item_->setCheckable(true); view_menu_->addSeparator(); @@ -519,6 +519,11 @@ void MainMenu::FullScreenViewerTriggered() PanelManager::instance()->MostRecentlyFocused()->SetFullScreen(); } +void MainMenu::ToggleShowAllTriggered() +{ + PanelManager::instance()->CurrentlyFocused()->ToggleShowAll(); +} + void MainMenu::Retranslate() { // MenuShared is not a QWidget and therefore does not receive a LanguageEvent, we use MainMenu's to update it diff --git a/app/window/mainwindow/mainmenu.h b/app/window/mainwindow/mainmenu.h index 3d072353a..8f635ca51 100644 --- a/app/window/mainwindow/mainmenu.h +++ b/app/window/mainwindow/mainmenu.h @@ -146,6 +146,8 @@ private slots: void FullScreenViewerTriggered(); + void ToggleShowAllTriggered(); + private: /** * @brief Set strings based on the current application language.