summaryrefslogtreecommitdiffstats
path: root/qt-ui/models.cpp
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2014-01-09 10:43:28 +0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-01-09 15:48:22 +0800
commit3734bb9068d4b66fa76b0e13a027b1a8497ae27f (patch)
treeef182f21c76dbbd969ec24fe3df3c40bdc7f3fc7 /qt-ui/models.cpp
parenta79ddde1b9b4d2149c0e2a34a4f63a6ab5ae176d (diff)
downloadsubsurface-3734bb9068d4b66fa76b0e13a027b1a8497ae27f.tar.gz
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>
Diffstat (limited to 'qt-ui/models.cpp')
-rw-r--r--qt-ui/models.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp
index f411d282d..323086196 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();