summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2014-01-02 21:36:01 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-01-02 22:40:50 -0800
commit4cce5df7e22575d5e37f99b15dbf283e2da53ea9 (patch)
tree9906ea865052a8b40a9432ac008475e0fe483418
parentc49d3885f51a9f2ae3fec9252b75fe4b5d7ee503 (diff)
downloadsubsurface-4cce5df7e22575d5e37f99b15dbf283e2da53ea9.tar.gz
Fix imperial cylinder sizes in equipment tab
The imperial cylinder sizes are not just in cubic feet: they are in cubic feet of gas at STP. So the imperial/metric difference is not just about converting blindly from liters to cubic feet, you also have to take the working pressure of the cylinder into account. This was broken by commit f9b7c5dfe9d0 ("Make units in cells consistant in CylindersModel"), because those poor sheltered Swedish people have never had to work with the wondrous imperial cylinder sizing, and think that units should make _sense_. Hah. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--helpers.h2
-rw-r--r--qt-gui.cpp4
-rw-r--r--qt-ui/models.cpp7
3 files changed, 6 insertions, 7 deletions
diff --git a/helpers.h b/helpers.h
index bfd47f0fe..f7343859d 100644
--- a/helpers.h
+++ b/helpers.h
@@ -19,7 +19,7 @@ QString get_weight_unit();
QString get_cylinder_used_gas_string(cylinder_t *cyl, bool showunit = false);
QString get_temperature_string(temperature_t temp, bool showunit = false);
QString get_temp_unit();
-QString get_volume_string(volume_t volume, bool showunit = false);
+QString get_volume_string(volume_t volume, bool showunit = false, unsigned int mbar = 0);
QString get_volume_unit();
QString get_pressure_string(pressure_t pressure, bool showunit = false);
QString get_pressure_unit();
diff --git a/qt-gui.cpp b/qt-gui.cpp
index fe2068ab0..93b11d37b 100644
--- a/qt-gui.cpp
+++ b/qt-gui.cpp
@@ -322,13 +322,15 @@ QString get_temp_unit()
return QString(UTF8_DEGREE "F");
}
-QString get_volume_string(volume_t volume, bool showunit)
+QString get_volume_string(volume_t volume, bool showunit, unsigned int mbar)
{
if (prefs.units.volume == units::LITER) {
double liter = volume.mliter / 1000.0;
return QString("%1%2").arg(liter, 0, 'f', liter >= 40.0 ? 0 : 1 ).arg(showunit ? translate("gettextFromC","l") : "");
} else {
double cuft = ml_to_cuft(volume.mliter);
+ if (mbar)
+ cuft *= bar_to_atm(mbar / 1000.0);
return QString("%1%2").arg(cuft, 0, 'f', cuft >= 20.0 ? 0 : (cuft >= 2.0 ? 1 : 2)).arg(showunit ? translate("gettextFromC","cuft") : "");
}
}
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp
index 0199c9989..ab501a2bd 100644
--- a/qt-ui/models.cpp
+++ b/qt-ui/models.cpp
@@ -111,11 +111,8 @@ QVariant CylindersModel::data(const QModelIndex& index, int role) const
ret = QString(cyl->type.description);
break;
case SIZE:
- // we can't use get_volume_string because the idiotic imperial tank
- // sizes take working pressure into account...
- if (cyl->type.size.mliter) {
- ret = get_volume_string(cyl->type.size, TRUE);
- }
+ if (cyl->type.size.mliter)
+ ret = get_volume_string(cyl->type.size, TRUE, cyl->type.workingpressure.mbar);
break;
case WORKINGPRESS:
if (cyl->type.workingpressure.mbar)