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.
This commit is contained in:
Alejandro Martinez
2021-08-09 17:30:10 -03:00
parent 1f77f08ae0
commit 39fc9e4537
5 changed files with 17 additions and 12 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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(); }

View File

@@ -84,7 +84,7 @@ class AthleteTab: public QWidget
void setBottomRequested(bool x);
// layout
void resetLayout();
void resetLayout(QComboBox *perspectiveSelector);
void addChart(GcWinID);
// switch views

View File

@@ -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)