diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-08 14:24:35 +0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-01-09 09:30:18 +0800 |
commit | b9d7e440fd37a4da8455d80a71911a4fbcdbfa11 (patch) | |
tree | 724dd6844591d6ba276e591cbab0db62bf26998c | |
parent | 8626778918b4dd5a304cbe970eded6cad759431b (diff) | |
download | subsurface-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.cpp | 11 |
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(); |