Fixed calculation of measures when using imperial units (#4584)

See https://groups.google.com/g/golden-cheetah-users/c/hAwFNWP3-G0
This commit is contained in:
Joachim Kohlhammer
2024-12-23 13:16:01 +01:00
committed by GitHub
parent e9e83936d4
commit 9e38ae9b85

View File

@@ -778,19 +778,21 @@ MeasuresPage::addClicked()
QDateTimeEdit *dtEdit = new QDateTimeEdit(now);
dtEdit->setCalendarPopup(true);
form->addRow(tr("Start Date"), dtEdit);
QList<double> unitsFactors = measuresGroup->getFieldUnitsFactors();
QStringList fieldNames = measuresGroup->getFieldNames();
QList<QLabel*> valuesLabel;
QList<QDoubleSpinBox*> valuesEdit;
int k = 0;
for (QString &fieldName : fieldNames) {
const double unitsFactor = (metricUnits ? 1.0 : unitsFactors[k]);
valuesLabel << new QLabel(fieldName);
valuesEdit << new QDoubleSpinBox(this);
valuesEdit[k]->setMaximum(9999.99);
valuesEdit[k]->setMinimum(0.0);
valuesEdit[k]->setDecimals(2);
if (measures.count() > 0) {
valuesEdit[k]->setValue(measures[0].values[k]);
valuesEdit[k]->setValue(measures[0].values[k] * unitsFactor);
} else {
valuesEdit[k]->setValue(0.0);
}
@@ -833,7 +835,8 @@ MeasuresPage::addClicked()
}
measures[rnum].when = dtEdit->dateTime();
for (k = 0; k < valuesEdit.count(); ++k) {
measures[rnum].values[k] = valuesEdit[k]->value();
const double unitsFactor = (metricUnits ? 1.0 : unitsFactors[k]);
measures[rnum].values[k] = valuesEdit[k]->value() / unitsFactor;
}
measures[rnum].comment = commentEdit->text();
fillItemFromMeasures(rnum, add);
@@ -867,8 +870,10 @@ MeasuresPage::rangeChanged(const QModelIndex &topLeft)
if (rnum == measures.count()) {
return;
}
QList<double> unitsFactors = measuresGroup->getFieldUnitsFactors();
if (col > 0 && col <= valueDelegates.count()) {
measures[rnum].values[col - 1] = topLeft.data(Qt::DisplayRole).toDouble();
const double unitsFactor = (metricUnits ? 1.0 : unitsFactors[col - 1]);
measures[rnum].values[col - 1] = topLeft.data(Qt::DisplayRole).toDouble() / unitsFactor;
} else if (col == valueDelegates.count() + 1) {
measures[rnum].comment = topLeft.data(Qt::DisplayRole).toString();
}