mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 16:18:42 +00:00
Fix SEGV on finf intervals on a blank activity
If you try to find intervals on a blank (manual) activity the dialog will SEGV. It now checks in the same way as split.
This commit is contained in:
@@ -1281,7 +1281,7 @@ MainWindow::showTreeContextMenuPopup(const QPoint &pos)
|
||||
connect(actDeleteRide, SIGNAL(triggered(void)), this, SLOT(deleteRide()));
|
||||
|
||||
QAction *actBestInt = new QAction(tr("Find Best Intervals"), treeWidget);
|
||||
connect(actBestInt, SIGNAL(triggered(void)), this, SLOT(findBestIntervals()));
|
||||
connect(actBestInt, SIGNAL(triggered(void)), this, SLOT(addIntervals()));
|
||||
|
||||
QAction *actPowerPeaks = new QAction(tr("Find Power Peaks"), treeWidget);
|
||||
connect(actPowerPeaks, SIGNAL(triggered(void)), this, SLOT(findPowerPeaks()));
|
||||
@@ -2275,20 +2275,22 @@ MainWindow::downloadTP()
|
||||
* Intervals
|
||||
*--------------------------------------------------------------------*/
|
||||
|
||||
void
|
||||
MainWindow::findBestIntervals()
|
||||
{
|
||||
BestIntervalDialog *p = new BestIntervalDialog(this);
|
||||
p->setWindowModality(Qt::ApplicationModal); // don't allow select other ride or it all goes wrong!
|
||||
p->exec();
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::addIntervals()
|
||||
{
|
||||
AddIntervalDialog *p = new AddIntervalDialog(this);
|
||||
p->setWindowModality(Qt::ApplicationModal); // don't allow select other ride or it all goes wrong!
|
||||
p->exec();
|
||||
if (ride && ride->ride() && ride->ride()->dataPoints().count()) {
|
||||
|
||||
AddIntervalDialog *p = new AddIntervalDialog(this);
|
||||
p->setWindowModality(Qt::ApplicationModal); // don't allow select other ride or it all goes wrong!
|
||||
p->exec();
|
||||
|
||||
} else {
|
||||
|
||||
if (!ride || !ride->ride())
|
||||
QMessageBox::critical(this, tr("Find Best Intervals"), tr("No activity selected"));
|
||||
else
|
||||
QMessageBox::critical(this, tr("Find Best Intervals"), tr("Current activity contains no data"));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@@ -2319,20 +2321,29 @@ MainWindow::findPowerPeaks()
|
||||
return;
|
||||
}
|
||||
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 5, "Peak 5s");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 10, "Peak 10s");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 20, "Peak 20s");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 30, "Peak 30s");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 60, "Peak 1min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 120, "Peak 2min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 300, "Peak 5min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 600, "Peak 10min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 1200, "Peak 20min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 1800, "Peak 30min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 3600, "Peak 60min");
|
||||
if (ride && ride->ride() && ride->ride()->dataPoints().count()) {
|
||||
|
||||
// now update the RideFileIntervals
|
||||
updateRideFileIntervals();
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 5, "Peak 5s");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 10, "Peak 10s");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 20, "Peak 20s");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 30, "Peak 30s");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 60, "Peak 1min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 120, "Peak 2min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 300, "Peak 5min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 600, "Peak 10min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 1200, "Peak 20min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 1800, "Peak 30min");
|
||||
addIntervalForPowerPeaksForSecs(ride->ride(), 3600, "Peak 60min");
|
||||
|
||||
// now update the RideFileIntervals
|
||||
updateRideFileIntervals();
|
||||
|
||||
} else {
|
||||
if (!ride || !ride->ride())
|
||||
QMessageBox::critical(this, tr("Find Power Peaks"), tr("No activity selected"));
|
||||
else
|
||||
QMessageBox::critical(this, tr("Find Power Peaks"), tr("Current activity contains no data"));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -299,7 +299,6 @@ class MainWindow : public QMainWindow
|
||||
#endif
|
||||
void importFile();
|
||||
void importWorkout();
|
||||
void findBestIntervals();
|
||||
void addIntervals();
|
||||
void addIntervalForPowerPeaksForSecs(RideFile *ride, int windowSizeSecs, QString name);
|
||||
void findPowerPeaks();
|
||||
|
||||
Reference in New Issue
Block a user