mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
While parsing weight and pressure we should not change the users settings.
Now it is possible to enter a specific unit that is different from the unit stored in the preferences. If only numbers are inputed the unit will be the same as specified by the users preferences. Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
a91d4164b4
commit
6252d0cd3b
2 changed files with 28 additions and 22 deletions
|
@ -505,20 +505,12 @@ QString QMLManager::commitChanges(QString diveId, QString date, QString location
|
||||||
if (weightsystem_none((void *)&d->weightsystem[1])) {
|
if (weightsystem_none((void *)&d->weightsystem[1])) {
|
||||||
if (get_weight_string(d->weightsystem[0].weight, true) != weight) {
|
if (get_weight_string(d->weightsystem[0].weight, true) != weight) {
|
||||||
diveChanged = true;
|
diveChanged = true;
|
||||||
if (weight.contains(tr("kg")))
|
|
||||||
prefs.units.weight = units::KG;
|
|
||||||
else if (weight.contains(tr("lbs")))
|
|
||||||
prefs.units.weight = units::LBS;
|
|
||||||
d->weightsystem[0].weight.grams = parseWeightToGrams(weight);
|
d->weightsystem[0].weight.grams = parseWeightToGrams(weight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// start and end pressures for first cylinder only
|
// start and end pressures for first cylinder only
|
||||||
if (get_pressure_string(d->cylinder[0].start, true) != startpressure || get_pressure_string(d->cylinder[0].end, true) != endpressure) {
|
if (get_pressure_string(d->cylinder[0].start, true) != startpressure || get_pressure_string(d->cylinder[0].end, true) != endpressure) {
|
||||||
diveChanged = true;
|
diveChanged = true;
|
||||||
if (startpressure.contains(tr("bar")) || endpressure.contains(tr("bar")))
|
|
||||||
prefs.units.pressure = units::BAR;
|
|
||||||
else if (startpressure.contains(tr("psi")) || endpressure.contains(tr("psi")))
|
|
||||||
prefs.units.pressure = units::PSI;
|
|
||||||
d->cylinder[0].start.mbar = parsePressureToMbar(startpressure);
|
d->cylinder[0].start.mbar = parsePressureToMbar(startpressure);
|
||||||
d->cylinder[0].end.mbar = parsePressureToMbar(endpressure);
|
d->cylinder[0].end.mbar = parsePressureToMbar(endpressure);
|
||||||
}
|
}
|
||||||
|
|
|
@ -832,20 +832,27 @@ int parseTemperatureToMkelvin(const QString &text)
|
||||||
int parseWeightToGrams(const QString &text)
|
int parseWeightToGrams(const QString &text)
|
||||||
{
|
{
|
||||||
int grams;
|
int grams;
|
||||||
|
QString kg_or_lbs = text;
|
||||||
QString numOnly = text;
|
QString numOnly = text;
|
||||||
numOnly.replace(",", ".").remove(QRegExp("[^0-9.]"));
|
numOnly.replace(",", ".").remove(QRegExp("[^0-9.]"));
|
||||||
if (numOnly.isEmpty())
|
if (numOnly.isEmpty())
|
||||||
return 0;
|
return 0;
|
||||||
double number = numOnly.toDouble();
|
double number = numOnly.toDouble();
|
||||||
switch (prefs.units.weight) {
|
if (kg_or_lbs.contains(QObject::tr("kg")))
|
||||||
case units::KG:
|
|
||||||
grams = rint(number * 1000);
|
grams = rint(number * 1000);
|
||||||
break;
|
else if (kg_or_lbs.contains(QObject::tr("lbs")))
|
||||||
case units::LBS:
|
|
||||||
grams = lbs_to_grams(number);
|
grams = lbs_to_grams(number);
|
||||||
break;
|
else {
|
||||||
default:
|
switch (prefs.units.weight) {
|
||||||
grams = 0;
|
case units::KG:
|
||||||
|
grams = rint(number * 1000);
|
||||||
|
break;
|
||||||
|
case units::LBS:
|
||||||
|
grams = lbs_to_grams(number);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
grams = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return grams;
|
return grams;
|
||||||
}
|
}
|
||||||
|
@ -853,20 +860,27 @@ int parseWeightToGrams(const QString &text)
|
||||||
int parsePressureToMbar(const QString &text)
|
int parsePressureToMbar(const QString &text)
|
||||||
{
|
{
|
||||||
int mbar;
|
int mbar;
|
||||||
|
QString psi_or_bar = text;
|
||||||
QString numOnly = text;
|
QString numOnly = text;
|
||||||
numOnly.replace(",", ".").remove(QRegExp("[^0-9.]"));
|
numOnly.replace(",", ".").remove(QRegExp("[^0-9.]"));
|
||||||
if (numOnly.isEmpty())
|
if (numOnly.isEmpty())
|
||||||
return 0;
|
return 0;
|
||||||
double number = numOnly.toDouble();
|
double number = numOnly.toDouble();
|
||||||
switch (prefs.units.pressure) {
|
if (psi_or_bar.contains(QObject::tr("bar")))
|
||||||
case units::BAR:
|
|
||||||
mbar = rint(number * 1000);
|
mbar = rint(number * 1000);
|
||||||
break;
|
else if (psi_or_bar.contains(QObject::tr("psi")))
|
||||||
case units::PSI:
|
|
||||||
mbar = psi_to_mbar(number);
|
mbar = psi_to_mbar(number);
|
||||||
break;
|
else {
|
||||||
default:
|
switch (prefs.units.pressure) {
|
||||||
mbar = 0;
|
case units::BAR:
|
||||||
|
mbar = rint(number * 1000);
|
||||||
|
break;
|
||||||
|
case units::PSI:
|
||||||
|
mbar = psi_to_mbar(number);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mbar = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return mbar;
|
return mbar;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue