From 39fc9e45370a0c1e3ccf5a42b92f71f504c0a68c Mon Sep 17 00:00:00 2001 From: Alejandro Martinez Date: Mon, 9 Aug 2021 17:30:10 -0300 Subject: [PATCH] Enable View - Reset Layout considering perspectives It behaves as before: current view layout is discarded and default layout with perspectives is fetched from goldencheetah.org first and, if not available, baked in layout is used. Website defaults are not updated yet, so baked in layouts are used now. --- src/Gui/AbstractView.cpp | 19 ++++++++++++------- src/Gui/AbstractView.h | 4 ++-- src/Gui/AthleteTab.cpp | 2 +- src/Gui/AthleteTab.h | 2 +- src/Gui/MainWindow.cpp | 2 +- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/Gui/AbstractView.cpp b/src/Gui/AbstractView.cpp index f82ba2649..7ce92f871 100644 --- a/src/Gui/AbstractView.cpp +++ b/src/Gui/AbstractView.cpp @@ -365,8 +365,9 @@ AbstractView::restoreState(bool useDefault) if (content == "") { // if no local perspectives file fall back to old - // layout file (pre-version 3.6) - will get a single perspective - if (!finfo.exists()) { + // layout file (pre-version 3.6) - will get a single perspective, + // except when useDefault is requested + if (!finfo.exists() && !useDefault) { filename = context->athlete->home->config().canonicalPath() + "/" + view + "-layout.xml"; finfo.setFile(filename); useDefault = false; @@ -710,7 +711,7 @@ AbstractView::sidebarChanged() } void -AbstractView::setPerspectives(QComboBox *perspectiveSelector) +AbstractView::setPerspectives(QComboBox *perspectiveSelector, bool selectChart) { perspectiveactive=true; @@ -728,7 +729,7 @@ AbstractView::setPerspectives(QComboBox *perspectiveSelector) // if we only just loaded the charts and views, we need to select // one to get the ride item and date range selected - if (!loaded) { + if (!loaded || selectChart) { loaded = true; // generally we just go to the first perspective @@ -816,13 +817,17 @@ AbstractView::selectionChanged() } void -AbstractView::resetLayout() +AbstractView::resetLayout( QComboBox *perspectiveSelector) { // delete all current perspectives - // XXX TODO + foreach(Perspective *p, perspectives_) delete p; + perspectives_.clear(); // reload from default (website / baked in) - // XXX TODO + restoreState(true); + + // set the new perspectives and do initial selections + setPerspectives(perspectiveSelector, true); } void diff --git a/src/Gui/AbstractView.h b/src/Gui/AbstractView.h index 6985af349..a25a276cc 100644 --- a/src/Gui/AbstractView.h +++ b/src/Gui/AbstractView.h @@ -78,7 +78,7 @@ class AbstractView : public QWidget void saveState(); void appendPerspective(Perspective *page); - void setPerspectives(QComboBox *perspectiveSelector); // set the combobox when view selected + void setPerspectives(QComboBox *perspectiveSelector, bool selectChart=false); // set the combobox when view selected void perspectiveSelected(int index); // combobox selections changed because the user selected a perspective // add a new perspective @@ -124,7 +124,7 @@ class AbstractView : public QWidget virtual void sidebarChanged(); virtual void tileModeChanged(); virtual void selectionChanged(); - virtual void resetLayout(); + virtual void resetLayout(QComboBox *perspectiveSelector); virtual void addChart(GcWinID id); diff --git a/src/Gui/AthleteTab.cpp b/src/Gui/AthleteTab.cpp index c697e74cd..fd7f9ed40 100644 --- a/src/Gui/AthleteTab.cpp +++ b/src/Gui/AthleteTab.cpp @@ -147,7 +147,7 @@ void AthleteTab::toggleSidebar() { view(currentView())->setSidebarEnabled(!view( void AthleteTab::setTiled(bool x) { view(currentView())->setTiled(x); } bool AthleteTab::isTiled() { return view(currentView())->isTiled(); } void AthleteTab::toggleTile() { view(currentView())->setTiled(!view(currentView())->isTiled()); } -void AthleteTab::resetLayout() { view(currentView())->resetLayout(); } +void AthleteTab::resetLayout(QComboBox *perspectiveSelector) { view(currentView())->resetLayout(perspectiveSelector); } void AthleteTab::addChart(GcWinID i) { view(currentView())->addChart(i); } void AthleteTab::addIntervals() { analysisView->addIntervals(); } diff --git a/src/Gui/AthleteTab.h b/src/Gui/AthleteTab.h index dbf0abc7a..fab6500c4 100644 --- a/src/Gui/AthleteTab.h +++ b/src/Gui/AthleteTab.h @@ -84,7 +84,7 @@ class AthleteTab: public QWidget void setBottomRequested(bool x); // layout - void resetLayout(); + void resetLayout(QComboBox *perspectiveSelector); void addChart(GcWinID); // switch views diff --git a/src/Gui/MainWindow.cpp b/src/Gui/MainWindow.cpp index fa6aaf3b0..ec955ed2a 100644 --- a/src/Gui/MainWindow.cpp +++ b/src/Gui/MainWindow.cpp @@ -1234,7 +1234,7 @@ void MainWindow::resetWindowLayout() msgBox.exec(); if(msgBox.clickedButton() == msgBox.button(QMessageBox::Ok)) - currentAthleteTab->resetLayout(); + currentAthleteTab->resetLayout(perspectiveSelector); } void MainWindow::manualProcess(QString name)