void PfPvWindow::rideSelected() { // we need to refresh for compare mode if (isCompare()) { if (isVisible() && compareStale) compareChanged(); return; } if (!amVisible()) { compareStale = true; return; } RideItem *ride = myRideItem; if (!ride || !ride->ride() || !ride->ride()->isDataPresent(RideFile::watts) || !ride->ride()->isDataPresent(RideFile::cad)) { setIsBlank(true); current = NULL; return; } else { setIsBlank(false); } if (!stale && ride == current) return; pfPvPlot->setData(ride); current = ride; stale = false; // update the QLabel widget with the CP value set in PfPvPlot::setData() qaCPValue->setText(QString("%1").arg(pfPvPlot->getCP())); }
void MetadataWindow::rideItemChanged() { rideMetadata->setProperty("ride", property("ride")); if (myRideItem) setIsBlank(false); else setIsBlank(true); }
void ScatterWindow::rideSelected() { if (!amVisible()) return; ride = myRideItem; if (ride == current) return; if (!ride || !ride->ride() || !ride->ride()->dataPoints().count()) { current = NULL; setIsBlank(true); return; } else setIsBlank(false); current = ride; timeSlider->setMinimum(0); if (ride->ride()->dataPoints().count()) timeSlider->setMaximum(ride->ride()->dataPoints().last()->secs); else timeSlider->setMaximum(100); timeSlider->setTickInterval(timeSlider->maximum()/20); setData(); }
void HrPwWindow::rideSelected() { if (!amVisible()) return; RideItem *ride = myRideItem; if (!ride || !ride->ride() || !ride->ride()->isDataPresent(RideFile::watts) || !ride->ride()->isDataPresent(RideFile::hr)) setIsBlank(true); else { setIsBlank(false); setData(ride); } }
void PfPvWindow::compareChanged() { if (!amVisible()) { compareStale = true; return; } // we get busy so lets turn off updates till we're done setUpdatesEnabled(false); // ensure redraws happen setIsBlank(false); current = NULL; // we don't have a current ride compareStale = false; // but compare is no longer stale if (context->isCompareIntervals) { // set the scale and zones pfPvPlot->showCompareIntervals(); } else { // same as tab selected etc rideSelected(); } setUpdatesEnabled(true); }
void ModelWindow::setData(bool adjustPlot) { settings.ride = ride; settings.x = xSelector->itemData(xSelector->currentIndex()).toInt(); settings.y = ySelector->itemData(ySelector->currentIndex()).toInt(); settings.z = zSelector->itemData(zSelector->currentIndex()).toInt(); settings.color = colorSelector->itemData(colorSelector->currentIndex()).toInt(); settings.xbin = binWidthSlider->value(); settings.ybin = binWidthSlider->value(); settings.crop = false; // not implemented yet settings.zpane = 0; settings.ignore = ignore->isChecked(); settings.gridlines = grid->isChecked(); settings.frame = frame->isChecked(); settings.legend = legend->isChecked(); settings.adjustPlot = adjustPlot; zpane->setValue(0); // reset it! // any intervals to plot? if (ride) settings.intervals = ride->intervalsSelected(); else settings.intervals.clear(); setUpdatesEnabled(false); // reset the model parameters modelPlot->setData(&settings); // if setdata resulted in the plot being hidden // then the settings were not valid. if (modelPlot->isHidden()) { zpane->hide(); setIsBlank(true); } else { zpane->show(); setIsBlank(false); } setClean(); setUpdatesEnabled(true); }
void HistogramWindow::updateChart() { if (!amVisible()) { stale = true; return; } // What is the selected series? RideFile::SeriesType series = static_cast<RideFile::SeriesType>(seriesCombo->itemData(seriesCombo->currentIndex()).toInt()); // If no data present show the blank state page if (!rangemode) { RideFile::SeriesType baseSeries = (series == RideFile::wattsKg) ? RideFile::watts : series; if (rideItem() != NULL && rideItem()->ride()->isDataPresent(baseSeries)) setIsBlank(false); else setIsBlank(true); } else { setIsBlank(false); } // Lets get the data then if (stale) { RideFileCache *old = source; if (rangemode) { // set the date range to the appropiate selection DateRange use; if (useCustom) { use = custom; } else if (useToToday) { use = myDateRange; QDate today = QDate::currentDate(); if (use.to > today) use.to = today; } else { use = myDateRange; } if (data->isChecked()) { // plotting a data series, so refresh the ridefilecache #ifdef GC_HAVE_LUCENE source = new RideFileCache(context, use.from, use.to, isfiltered, files, rangemode); #else source = new RideFileCache(context, use.from, use.to); #endif cfrom = use.from; cto = use.to; stale = false; if (old) delete old; // guarantee source pointer changes stale = false; // well we tried // set the data on the plot powerHist->setData(source); // and which series to plot powerHist->setSeries(series); // and now the controls powerHist->setShading(shadeZones->isChecked() ? true : false); powerHist->setZoned(showInZones->isChecked() ? true : false); powerHist->setlnY(showLnY->isChecked() ? true : false); powerHist->setWithZeros(showZeroes->isChecked() ? true : false); powerHist->setSumY(showSumY->currentIndex()== 0 ? true : false); } else { if (last.from != use.from || last.to != use.to) { // remember the last lot we collected last = use; // plotting a metric, reread the metrics for the selected date range results = context->athlete->metricDB->getAllMetricsFor(use); } if (results.count() == 0) setIsBlank(true); else setIsBlank(false); // setData using the summary metrics -- always reset since filters may // have changed, or perhaps the bin width... powerHist->setSeries(RideFile::none); powerHist->setDelta(getDelta()); powerHist->setDigits(getDigits()); #ifdef GC_HAVE_LUCENE powerHist->setData(results, totalMetric(), distMetric(), isfiltered, files); #else powerHist->setData(results, totalMetric(), distMetric(), false, QStringList()); #endif powerHist->setColor(colorButton->getColor()); } } else { powerHist->setData(myRideItem, interval); // intervals selected forces data to // be recomputed since interval selection // has changed. // and which series to plot powerHist->setSeries(series); // and now the controls powerHist->setShading(shadeZones->isChecked() ? true : false); powerHist->setZoned(showInZones->isChecked() ? true : false); powerHist->setlnY(showLnY->isChecked() ? true : false); powerHist->setWithZeros(showZeroes->isChecked() ? true : false); powerHist->setSumY(showSumY->currentIndex()== 0 ? true : false); } powerHist->recalc(true); // interval changed? force recalc powerHist->replot(); interval = false;// we force a recalc whem called coz intervals // have been selected. The recalc routine in // powerhist optimises out, but doesn't keep track // of interval selection -- simplifies the setters // and getters, so worth this 'hack'. } // if stale }