Fix formulas not working on Trends for additional athletes

DataFilter requires an activity selected for formulas
to work even in Trends view, so they fail until
you switch to Activities view and back to Trends.
To avoid this we ensure an activity is selected for
any view selected at startup.
Required for #4718
This commit is contained in:
Alejandro Martinez
2025-11-02 18:53:52 -03:00
parent 78da128849
commit f63773f097
4 changed files with 26 additions and 22 deletions

View File

@@ -147,6 +147,29 @@ AbstractView::resizeEvent(QResizeEvent *)
active = false;
}
void
AbstractView::notifyViewStateRestored()
{
// lets select the first ride if it has not been set,
// currently required to use DataFilter in any view.
if (context->ride == nullptr) {
// lets select the first ride
QDateTime now = QDateTime::currentDateTime();
for (int i = context->athlete->rideCache->rides().count(); i > 0; --i) {
if (context->athlete->rideCache->rides()[i - 1]->dateTime <= now) {
context->athlete->selectRideFile(context->athlete->rideCache->rides()[i - 1]->fileName);
return;
}
}
// otherwise just select the latest ride
if (context->athlete->rideCache->rides().count() != 0) {
context->athlete->selectRideFile(context->athlete->rideCache->rides().last()->fileName);
}
}
}
void
AbstractView::notifyViewPerspectiveAdded(Perspective* page)
{

View File

@@ -185,11 +185,11 @@ class AbstractView : public QWidget
bool loaded;
// Support view specific behaviour
virtual void notifyViewStateRestored() {}
virtual void notifyViewStateRestored();
virtual void notifyViewPerspectiveAdded(Perspective* page);
virtual void notifyViewSidebarChanged() {}
virtual void setViewSpecificPerspective() {};
virtual void notifyViewSplitterMoved() {};
virtual void setViewSpecificPerspective() {}
virtual void notifyViewSplitterMoved() {}
private slots:
void onIdle();

View File

@@ -126,24 +126,6 @@ AnalysisView::isBlank()
else return true;
}
void
AnalysisView::notifyViewStateRestored() {
// lets select the first ride
QDateTime now = QDateTime::currentDateTime();
for (int i = context->athlete->rideCache->rides().count(); i > 0; --i) {
if (context->athlete->rideCache->rides()[i - 1]->dateTime <= now) {
context->athlete->selectRideFile(context->athlete->rideCache->rides()[i - 1]->fileName);
break;
}
}
// otherwise just the latest
if (context->currentRideItem() == NULL && context->athlete->rideCache->rides().count() != 0) {
context->athlete->selectRideFile(context->athlete->rideCache->rides().last()->fileName);
}
}
void
AnalysisView::notifyViewSidebarChanged() {

View File

@@ -49,7 +49,6 @@ class AnalysisView : public AbstractView
protected:
void notifyViewStateRestored() override;
void notifyViewSidebarChanged() override;
void setViewSpecificPerspective() override;
void notifyViewSplitterMoved() override;