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)