summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2014-01-08 14:24:35 +0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-01-09 09:30:18 +0800
commitb9d7e440fd37a4da8455d80a71911a4fbcdbfa11 (patch)
tree724dd6844591d6ba276e591cbab0db62bf26998c
parent8626778918b4dd5a304cbe970eded6cad759431b (diff)
downloadsubsurface-b9d7e440fd37a4da8455d80a71911a4fbcdbfa11.tar.gz
Make 'string_to_grams()' use proper type safe types
Make it use 'weight_t' and hide the "grams" part inside the type. That was the whole point of the weight_t type, after all. Returning a "double" was always bogus, since we internally always do integer grams (and the function actually used "rint()" to get all the rounding right anyway). As a result, it's now called "string_to_weight()". Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--qt-ui/models.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp
index aa9db450b..cb956702b 100644
--- a/qt-ui/models.cpp
+++ b/qt-ui/models.cpp
@@ -464,13 +464,14 @@ void WeightModel::passInData(const QModelIndex& index, const QVariant& value)
}
}
-double string_to_grams(char *str)
+weight_t string_to_weight(char *str)
{
char *end;
double value = strtod_flags(str, &end, 0);
QString rest = QString(end).trimmed();
QString local_kg = WeightModel::tr("kg");
QString local_lbs = WeightModel::tr("lbs");
+ weight_t weight;
if (rest.startsWith("kg") || rest.startsWith(local_kg))
goto kg;
@@ -480,9 +481,11 @@ double string_to_grams(char *str)
if (prefs.units.weight == prefs.units.LBS)
goto lbs;
kg:
- return rint(value * 1000);
+ weight.grams = rint(value * 1000);
+ return weight;
lbs:
- return lbs_to_grams(value);
+ weight.grams = lbs_to_grams(value);
+ return weight;
}
bool WeightModel::setData(const QModelIndex& index, const QVariant& value, int role)
@@ -509,7 +512,7 @@ bool WeightModel::setData(const QModelIndex& index, const QVariant& value, int r
break;
case WEIGHT:
if (CHANGED(data, "", "")) {
- ws->weight.grams = string_to_grams(vString.toUtf8().data());
+ ws->weight = string_to_weight(vString.toUtf8().data());
// now update the ws_info
changed = true;
WSInfoModel *wsim = WSInfoModel::instance();