diff options
-rw-r--r-- | dive.h | 1 | ||||
-rw-r--r-- | qt-ui/models.cpp | 28 |
2 files changed, 17 insertions, 12 deletions
@@ -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" diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index f70a81a94..213475723 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -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(); |