diff --git a/src/AllPlot.cpp b/src/AllPlot.cpp index 8356bbba6..6fd65c195 100644 --- a/src/AllPlot.cpp +++ b/src/AllPlot.cpp @@ -993,7 +993,7 @@ AllPlot::configChanged(qint32) QPen hrPen = QPen(GColor(CHEARTRATE)); hrPen.setWidth(width); standard->hrCurve->setPen(hrPen); - QPen tcorePen = QPen(GColor(CHEARTRATE)); + QPen tcorePen = QPen(GColor(CCORETEMP)); tcorePen.setWidth(width); standard->tcoreCurve->setPen(tcorePen); standard->hrDCurve->setPen(hrPen); @@ -1390,10 +1390,14 @@ AllPlot::setLeftOnePalette() if (standard->cadCurve->isVisible()) { single = GColor(CCADENCE); } - if (standard->hrCurve->isVisible() || standard->tcoreCurve->isVisible()) { + if (standard->hrCurve->isVisible()) { single = GColor(CHEARTRATE); } + if (standard->tcoreCurve->isVisible()) { + single = GColor(CCORETEMP); + } + // lets go ScaleScaleDraw *sd = new ScaleScaleDraw; sd->setTickLength(QwtScaleDiv::MajorTick, 3); @@ -1798,9 +1802,8 @@ AllPlot::recalc(AllPlotObject *objects) (!objects->hrDArray.empty() ? objects->hrDArray[i] : 0), (!objects->slopeArray.empty() ? objects->slopeArray[i] : 0), (!objects->tcoreArray.empty() ? objects->tcoreArray[i] : 0)); - if (!objects->wattsArray.empty()) - totalWatts += objects->wattsArray[i]; + if (!objects->wattsArray.empty()) totalWatts += objects->wattsArray[i]; if (!objects->npArray.empty()) totalNP += objects->npArray[i]; if (!objects->rvArray.empty()) totalRV += objects->rvArray[i]; if (!objects->rcadArray.empty()) totalRCad += objects->rcadArray[i]; @@ -1811,30 +1814,21 @@ AllPlot::recalc(AllPlotObject *objects) if (!objects->hhbArray.empty()) totalHHb += objects->hhbArray[i]; if (!objects->atissArray.empty()) totalATISS += objects->atissArray[i]; if (!objects->antissArray.empty()) totalANTISS += objects->antissArray[i]; - - if (!objects->xpArray.empty()) - totalXP += objects->xpArray[i]; - if (!objects->apArray.empty()) - totalAP += objects->apArray[i]; - if (!objects->tcoreArray.empty()) - totalTcore += objects->tcoreArray[i]; - if (!objects->hrArray.empty()) - totalHr += objects->hrArray[i]; - + if (!objects->xpArray.empty()) totalXP += objects->xpArray[i]; + if (!objects->apArray.empty()) totalAP += objects->apArray[i]; + if (!objects->tcoreArray.empty()) totalTcore += objects->tcoreArray[i]; + if (!objects->hrArray.empty()) totalHr += objects->hrArray[i]; if (!objects->accelArray.empty()) totalAccel += objects->accelArray[i]; if (!objects->wattsDArray.empty()) totalWattsD += objects->wattsDArray[i]; if (!objects->cadDArray.empty()) totalCadD += objects->cadDArray[i]; if (!objects->nmDArray.empty()) totalNmD += objects->nmDArray[i]; if (!objects->hrDArray.empty()) totalHrD += objects->hrDArray[i]; - - if (!objects->speedArray.empty()) - totalSpeed += objects->speedArray[i]; - if (!objects->cadArray.empty()) - totalCad += objects->cadArray[i]; - if (!objects->altArray.empty()) - totalAlt += objects->altArray[i]; - if (!objects->slopeArray.empty()) - totalSlope += objects->slopeArray[i]; + if (!objects->speedArray.empty()) totalSpeed += objects->speedArray[i]; + if (!objects->cadArray.empty()) totalCad += objects->cadArray[i]; + if (!objects->altArray.empty()) totalAlt += objects->altArray[i]; + if (!objects->slopeArray.empty()) totalSlope += objects->slopeArray[i]; + if (!objects->windArray.empty()) totalWind += objects->windArray[i]; + if (!objects->torqueArray.empty()) totalTorque += objects->torqueArray[i]; if (!objects->tempArray.empty() ) { if (objects->tempArray[i] == RideFile::NoTemp) { dp.temp = (i>0 && !list.empty()?list.back().temp:0.0); @@ -1844,10 +1838,6 @@ AllPlot::recalc(AllPlotObject *objects) totalTemp += objects->tempArray[i]; } } - if (!objects->windArray.empty()) - totalWind += objects->windArray[i]; - if (!objects->torqueArray.empty()) - totalTorque += objects->torqueArray[i]; // left/right pedal data if (!objects->balanceArray.empty()) @@ -2625,9 +2615,9 @@ AllPlot::setYMax() if (standard->tcoreCurve->isVisible()) { labels << tr("Core Temperature"); if (referencePlot == NULL) - ymax = standard->tcoreCurve->maxYValue(); + ymax = qMax(ymax, standard->tcoreCurve->maxYValue()); else - ymax = referencePlot->standard->tcoreCurve->maxYValue(); + ymax = qMax(ymax, referencePlot->standard->tcoreCurve->maxYValue()); } if (standard->smo2Curve->isVisible()) { labels << tr("SmO2"); @@ -2672,7 +2662,25 @@ AllPlot::setYMax() xytick[QwtScaleDiv::MajorTick]<tcoreCurve->isVisible() && standard->tcoreCurve->minYValue() < ymin) + ymin = standard->tcoreCurve->minYValue(); + + double step = 0.00f; + if (ymin < 100.00f) step = (ymax - ymin) / 4; + + // we just have Core Temp ... + setAxisScale(QwtAxisId(QwtAxis::yLeft, 1),ymin<100.0f?ymin:0, ymax, step); + + } else { + + setAxisScaleDiv(QwtAxisId(QwtAxis::yLeft, 1),QwtScaleDiv(ymin, ymax, xytick)); + } } // QwtAxis::yLeft, 3 @@ -3049,7 +3057,7 @@ AllPlot::setDataFromPlot(AllPlot *plot, int startidx, int stopidx) standard->wCurve->setVisible(rideItem->ride()->areDataPresent()->watts && showW); standard->mCurve->setVisible(rideItem->ride()->areDataPresent()->watts && showW); standard->hrCurve->setVisible(rideItem->ride()->areDataPresent()->hr && showHr); - standard->tcoreCurve->setVisible(rideItem->ride()->areDataPresent()->tcore && showTcore); + standard->tcoreCurve->setVisible(rideItem->ride()->areDataPresent()->hr && showTcore); standard->speedCurve->setVisible(rideItem->ride()->areDataPresent()->kph && showSpeed); standard->accelCurve->setVisible(rideItem->ride()->areDataPresent()->kph && showAccel); standard->wattsDCurve->setVisible(rideItem->ride()->areDataPresent()->watts && showPowerD); @@ -3898,6 +3906,13 @@ AllPlot::setDataFromPlot(AllPlot *plot) double min = thereCurve->minYValue(); setAxisScale(QwtPlot::yLeft, min > 0 ? 0 : min * 1.1f, 1.1f * thereCurve->maxYValue()); + } else if (scope == RideFile::tcore) { + + // always zero or lower (don't truncate) + double min = qMin(36.5f, float(thereCurve->minYValue())); + double max = qMax(39.0f, float(thereCurve->maxYValue()+0.5f)); + setAxisScale(QwtPlot::yLeft, min, max); + } else if (scope != RideFile::lrbalance) { if (thereCurve) setAxisScale(QwtPlot::yLeft, thereCurve->minYValue(), 1.1f * thereCurve->maxYValue()); @@ -3921,6 +3936,7 @@ AllPlot::setDataFromPlot(AllPlot *plot) if (scope == RideFile::thb || scope == RideFile::smo2 || scope == RideFile::o2hb || scope == RideFile::hhb) // Hb sd->setDecimals(2); + if (scope == RideFile::tcore) sd->setDecimals(1); setAxisScaleDraw(QwtPlot::yLeft, sd); @@ -5129,7 +5145,7 @@ AllPlot::setDataFromRideFile(RideFile *ride, AllPlotObject *here) here->xpArray.resize(dataPresent->xp ? npoints : 0); here->apArray.resize(dataPresent->apower ? npoints : 0); here->hrArray.resize(dataPresent->hr ? npoints : 0); - here->tcoreArray.resize(dataPresent->tcore ? npoints : 0); + here->tcoreArray.resize(dataPresent->hr ? npoints : 0); here->speedArray.resize(dataPresent->kph ? npoints : 0); here->accelArray.resize(dataPresent->kph ? npoints : 0); here->wattsDArray.resize(dataPresent->watts ? npoints : 0); @@ -5285,7 +5301,7 @@ AllPlot::setDataFromRideFile(RideFile *ride, AllPlotObject *here) here->xpCurve->setVisible(dataPresent->xp && showXP); here->apCurve->setVisible(dataPresent->apower && showAP); here->hrCurve->setVisible(dataPresent->hr && showHr); - here->tcoreCurve->setVisible(dataPresent->tcore && showTcore); + here->tcoreCurve->setVisible(dataPresent->hr && showTcore); here->speedCurve->setVisible(dataPresent->kph && showSpeed); here->cadCurve->setVisible(dataPresent->cad && showCad); here->altCurve->setVisible(dataPresent->alt && showAlt); diff --git a/src/Colors.cpp b/src/Colors.cpp index 421326d90..97d700399 100644 --- a/src/Colors.cpp +++ b/src/Colors.cpp @@ -92,6 +92,7 @@ void GCColor::setupColors() { tr("Plot Grid"), "COLORGRID", QColor(65,65,65) }, { tr("Interval Highlighter"), "COLORINTERVALHIGHLIGHTER", Qt::blue }, { tr("Heart Rate"), "COLORHEARTRATE", Qt::red }, + { tr("Core Temperature"), "COLORCORETEMP", QColor(255, 173, 92) }, { tr("Speed"), "COLORSPEED", Qt::green }, { tr("Acceleration"), "COLORACCEL", Qt::cyan }, { tr("Power"), "COLORPOWER", Qt::yellow }, diff --git a/src/Colors.h b/src/Colors.h index 1404500f4..e40460891 100644 --- a/src/Colors.h +++ b/src/Colors.h @@ -146,7 +146,7 @@ class ColorEngine : public QObject #define GColor(x) GCColor::getColor(x) // Define how many cconfigurable metric colors are available -#define CNUMOFCFGCOLORS 94 +#define CNUMOFCFGCOLORS 95 #define CPLOTBACKGROUND 0 #define CRIDEPLOTBACKGROUND 1 @@ -163,84 +163,85 @@ class ColorEngine : public QObject #define CPLOTGRID 12 #define CINTERVALHIGHLIGHTER 13 #define CHEARTRATE 14 -#define CSPEED 15 -#define CACCELERATION 16 -#define CPOWER 17 -#define CNPOWER 18 -#define CXPOWER 19 -#define CAPOWER 20 -#define CCP 21 -#define CCADENCE 22 -#define CALTITUDE 23 -#define CALTITUDEBRUSH 24 -#define CWINDSPEED 25 -#define CTORQUE 26 -#define CSLOPE 27 -#define CGEAR 28 -#define CRV 29 -#define CRCAD 30 -#define CRGCT 31 -#define CSMO2 32 -#define CTHB 33 -#define CO2HB 34 -#define CHHB 35 -#define CLOAD 36 -#define CTSS 37 -#define CSTS 38 -#define CLTS 39 -#define CSB 40 -#define CDAILYSTRESS 41 -#define CBIKESCORE 42 -#define CCALENDARTEXT 43 -#define CZONE1 44 -#define CZONE2 45 -#define CZONE3 46 -#define CZONE4 47 -#define CZONE5 48 -#define CZONE6 49 -#define CZONE7 50 -#define CZONE8 51 -#define CZONE9 52 -#define CZONE10 53 -#define CHZONE1 54 -#define CHZONE2 55 -#define CHZONE3 56 -#define CHZONE4 57 -#define CHZONE5 58 -#define CHZONE6 59 -#define CHZONE7 60 -#define CHZONE8 61 -#define CHZONE9 62 -#define CHZONE10 63 -#define CAEROVE 64 -#define CAEROEL 65 -#define CCALCELL 66 -#define CCALHEAD 67 -#define CCALCURRENT 68 -#define CCALACTUAL 69 -#define CCALPLANNED 70 -#define CCALTODAY 71 -#define CPOPUP 72 -#define CPOPUPTEXT 73 -#define CTILEBAR 74 -#define CTILEBARSELECT 75 -#define CTOOLBAR 76 -#define CRIDEGROUP 77 -#define CSPINSCANLEFT 78 -#define CSPINSCANRIGHT 79 -#define CTEMP 80 -#define CDIAL 81 -#define CALTPOWER 82 -#define CBALANCELEFT 83 -#define CBALANCERIGHT 84 -#define CWBAL 85 -#define CRIDECP 86 -#define CATISS 87 -#define CANTISS 88 -#define CLTE 89 -#define CRTE 90 -#define CLPS 91 -#define CRPS 92 -#define CCHROME 93 +#define CCORETEMP 15 +#define CSPEED 16 +#define CACCELERATION 17 +#define CPOWER 18 +#define CNPOWER 19 +#define CXPOWER 20 +#define CAPOWER 21 +#define CCP 22 +#define CCADENCE 23 +#define CALTITUDE 24 +#define CALTITUDEBRUSH 25 +#define CWINDSPEED 26 +#define CTORQUE 27 +#define CSLOPE 28 +#define CGEAR 29 +#define CRV 30 +#define CRCAD 31 +#define CRGCT 32 +#define CSMO2 33 +#define CTHB 34 +#define CO2HB 35 +#define CHHB 36 +#define CLOAD 37 +#define CTSS 38 +#define CSTS 39 +#define CLTS 40 +#define CSB 41 +#define CDAILYSTRESS 42 +#define CBIKESCORE 43 +#define CCALENDARTEXT 44 +#define CZONE1 45 +#define CZONE2 46 +#define CZONE3 47 +#define CZONE4 48 +#define CZONE5 49 +#define CZONE6 50 +#define CZONE7 51 +#define CZONE8 52 +#define CZONE9 53 +#define CZONE10 54 +#define CHZONE1 55 +#define CHZONE2 56 +#define CHZONE3 57 +#define CHZONE4 58 +#define CHZONE5 59 +#define CHZONE6 60 +#define CHZONE7 61 +#define CHZONE8 62 +#define CHZONE9 63 +#define CHZONE10 64 +#define CAEROVE 65 +#define CAEROEL 66 +#define CCALCELL 67 +#define CCALHEAD 68 +#define CCALCURRENT 69 +#define CCALACTUAL 70 +#define CCALPLANNED 71 +#define CCALTODAY 72 +#define CPOPUP 73 +#define CPOPUPTEXT 74 +#define CTILEBAR 75 +#define CTILEBARSELECT 76 +#define CTOOLBAR 77 +#define CRIDEGROUP 78 +#define CSPINSCANLEFT 79 +#define CSPINSCANRIGHT 80 +#define CTEMP 81 +#define CDIAL 82 +#define CALTPOWER 83 +#define CBALANCELEFT 84 +#define CBALANCERIGHT 85 +#define CWBAL 86 +#define CRIDECP 87 +#define CATISS 88 +#define CANTISS 89 +#define CLTE 90 +#define CRTE 91 +#define CLPS 92 +#define CRPS 93 +#define CCHROME 94 #endif