mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Add and use 'string_to_fraction()' helper converter function
This matches the pattern of unit conversion, and will allow us to remove all the code that uses the old complex "CHANGED()" macro that tries to remove units or percent signs. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
4f982c1758
commit
1d2238b110
2 changed files with 17 additions and 12 deletions
1
dive.h
1
dive.h
|
@ -820,6 +820,7 @@ extern weight_t string_to_weight(const char *str);
|
|||
extern depth_t string_to_depth(const char *str);
|
||||
extern pressure_t string_to_pressure(const char *str);
|
||||
extern volume_t string_to_volume(const char *str, pressure_t workp);
|
||||
extern fraction_t string_to_fraction(const char *str);
|
||||
|
||||
#include "pref.h"
|
||||
|
||||
|
|
|
@ -240,21 +240,15 @@ bool CylindersModel::setData(const QModelIndex& index, const QVariant& value, in
|
|||
}
|
||||
break;
|
||||
case O2:
|
||||
if (CHANGED(toDouble, "%", "%")) {
|
||||
int o2 = vString.toDouble() * 10 + 0.5;
|
||||
if (cyl->gasmix.he.permille + o2 <= 1000) {
|
||||
cyl->gasmix.o2.permille = o2;
|
||||
changed = true;
|
||||
}
|
||||
if (CHANGED(data, "", "")) {
|
||||
cyl->gasmix.o2 = string_to_fraction(vString.toUtf8().data());
|
||||
changed = true;
|
||||
}
|
||||
break;
|
||||
case HE:
|
||||
if (CHANGED(toDouble, "%", "%")) {
|
||||
int he = vString.toDouble() * 10 + 0.5;
|
||||
if (cyl->gasmix.o2.permille + he <= 1000) {
|
||||
cyl->gasmix.he.permille = he;
|
||||
changed = true;
|
||||
}
|
||||
if (CHANGED(data, "", "")) {
|
||||
cyl->gasmix.he = string_to_fraction(vString.toUtf8().data());
|
||||
changed = true;
|
||||
}
|
||||
break;
|
||||
case DEPTH:
|
||||
|
@ -531,6 +525,16 @@ l:
|
|||
return volume;
|
||||
}
|
||||
|
||||
fraction_t string_to_fraction(const char *str)
|
||||
{
|
||||
const char *end;
|
||||
double value = strtod_flags(str, &end, 0);
|
||||
fraction_t fraction;
|
||||
|
||||
fraction.permille = rint(value * 10);
|
||||
return fraction;
|
||||
}
|
||||
|
||||
bool WeightModel::setData(const QModelIndex& index, const QVariant& value, int role)
|
||||
{
|
||||
QString vString = value.toString();
|
||||
|
|
Loading…
Add table
Reference in a new issue