aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Benjamin <nystire@gmail.com>2013-10-04 21:39:33 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-10-04 11:57:28 -0700
commitae713763c79afb483afec12d02730e0c5a8af309 (patch)
tree0d1dae49cccdfa464e7675d40c3d41d522a194f6
parentf63605e02e4656b60c6c095f4289dbffa293bc2d (diff)
downloadsubsurface-ae713763c79afb483afec12d02730e0c5a8af309.tar.gz
Add a helper function to calculate weight display string
Add a helper function to unify the calculation of the weight display string, instead of having the same calculation in two places in the code. Signed-off-by: Benjamin Fogel <nystire@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--qt-gui.cpp11
-rw-r--r--qt-ui/models.cpp12
-rw-r--r--qthelper.cpp18
-rw-r--r--qthelper.h3
4 files changed, 27 insertions, 17 deletions
diff --git a/qt-gui.cpp b/qt-gui.cpp
index 78138ad3a..b302e341a 100644
--- a/qt-gui.cpp
+++ b/qt-gui.cpp
@@ -216,14 +216,13 @@ QString get_depth_unit()
QString get_weight_string(weight_t weight, bool showunit)
{
- if (prefs.units.weight == units::KG) {
- int gr = weight.grams % 1000;
- int kg = weight.grams / 1000;
- return QString("%1.%2%3").arg(kg).arg((unsigned)(gr) / 100).arg(showunit ? _("kg") : "");
+ QString str = weight_string (weight.grams);
+ if (get_units()->weight == units::KG) {
+ str = QString ("%1%2").arg(str).arg(showunit ? _("kg") : "");
} else {
- double lbs = grams_to_lbs(weight.grams);
- return QString("%1%2").arg(lbs, 0, 'f', lbs >= 40.0 ? 0 : 1 ).arg(showunit ? _("lbs") : "");
+ str = QString ("%1%2").arg(str).arg(showunit ? _("lbs") : "");
}
+ return (str);
}
QString get_weight_unit()
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp
index 752f3ddf3..62e8d380a 100644
--- a/qt-ui/models.cpp
+++ b/qt-ui/models.cpp
@@ -1107,17 +1107,7 @@ QString DiveItem::displaySac() const
QString DiveItem::displayWeight() const
{
- QString str;
-
- if (get_units()->weight == units::KG) {
- int gr = weight() % 1000;
- int kg = weight() / 1000;
- str = QString("%1.%2").arg(kg).arg((unsigned)(gr) / 100);
- } else {
- double lbs = grams_to_lbs(weight());
- str = QString("%1").arg(lbs, 0, 'f', lbs >= 40.0 ? 0 : 1 );
- }
-
+ QString str = weight_string(weight());
return str;
}
diff --git a/qthelper.cpp b/qthelper.cpp
index 68f8c5058..36d1d02c7 100644
--- a/qthelper.cpp
+++ b/qthelper.cpp
@@ -76,3 +76,21 @@ void DiveComputerList::rmDC(QString m, uint32_t d)
const DiveComputerNode *existNode = this->getExact(m, d);
dcMap.remove(m, *existNode);
}
+
+QString weight_string(int weight_in_grams)
+{
+ QString str;
+ if (get_units()->weight == units::KG) {
+ int gr = weight_in_grams % 1000;
+ int kg = weight_in_grams / 1000;
+ if (kg >= 20.0) {
+ str = QString("0");
+ } else {
+ str = QString("%1.%2").arg(kg).arg((unsigned)(gr) / 100);
+ }
+ } else {
+ double lbs = grams_to_lbs(weight_in_grams);
+ str = QString("%1").arg(lbs, 0, 'f', lbs >= 40.0 ? 0 : 1 );
+ }
+ return (str);
+}
diff --git a/qthelper.h b/qthelper.h
index fcbcbff9a..3ac83b5c4 100644
--- a/qthelper.h
+++ b/qthelper.h
@@ -4,6 +4,7 @@
#include <QMultiMap>
#include <QString>
#include <stdint.h>
+#include "dive.h"
class DiveComputerNode {
public:
@@ -32,4 +33,6 @@ public:
QMultiMap<QString, struct DiveComputerNode> dcWorkingMap;
};
+QString weight_string(int weight_in_grams);
+
#endif // QTHELPER_H