From 370673cc999f9738f247d1c0544ab49733c25a39 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Tue, 18 Jun 2013 10:48:46 -0700 Subject: [PATCH] Improve display of yearly statistics Display the units in the header, make the header more consistent looking, convert the values into the right units with appropriate precision. Signed-off-by: Dirk Hohndel --- helpers.h | 15 +++++++++----- qt-gui.cpp | 32 ++++++++++++++++++++++++++++ qt-ui/models.cpp | 54 ++++++++++++++++++++++-------------------------- 3 files changed, 67 insertions(+), 34 deletions(-) diff --git a/helpers.h b/helpers.h index 81fddbd5e..783efe530 100644 --- a/helpers.h +++ b/helpers.h @@ -11,11 +11,16 @@ #include "dive.h" #include "qthelper.h" -QString get_depth_string(depth_t depth, bool showunit); -QString get_weight_string(weight_t weight, bool showunit); -QString get_temperature_string(temperature_t temp, bool showunit); -QString get_volume_string(volume_t volume, bool showunit); -QString get_pressure_string(pressure_t pressure, bool showunit); +QString get_depth_string(depth_t depth, bool showunit = false); +QString get_depth_unit(); +QString get_weight_string(weight_t weight, bool showunit = false); +QString get_weight_unit(); +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_unit(); +QString get_pressure_string(pressure_t pressure, bool showunit = false); +QString get_pressure_unit(); void set_default_dive_computer(const char *vendor, const char *product); void set_default_dive_computer_device(const char *name); QString getSubsurfaceDataPath(QString folderToFind); diff --git a/qt-gui.cpp b/qt-gui.cpp index 10b7d8086..2474d407d 100644 --- a/qt-gui.cpp +++ b/qt-gui.cpp @@ -196,6 +196,14 @@ QString get_depth_string(depth_t depth, bool showunit) } } +QString get_depth_unit() +{ + if (prefs.units.length == units::METERS) + return "m"; + else + return "ft"; +} + QString get_weight_string(weight_t weight, bool showunit) { if (prefs.units.weight == units::KG) { @@ -207,6 +215,14 @@ QString get_weight_string(weight_t weight, bool showunit) } } +QString get_weight_unit() +{ + if (prefs.units.weight == units::KG) + return "kg"; + else + return "lbs"; +} + QString get_temperature_string(temperature_t temp, bool showunit) { if (prefs.units.temperature == units::CELSIUS) { @@ -220,6 +236,14 @@ QString get_temperature_string(temperature_t temp, bool showunit) } } +QString get_temp_unit() +{ + if (prefs.units.temperature == units::CELSIUS) + return QString(UTF8_DEGREE "C"); + else + return QString(UTF8_DEGREE "F"); +} + QString get_volume_string(volume_t volume, bool showunit) { if (prefs.units.volume == units::LITER) { @@ -231,6 +255,14 @@ QString get_volume_string(volume_t volume, bool showunit) } } +QString get_volume_unit() +{ + if (prefs.units.volume == units::LITER) + return "l"; + else + return "cuft"; +} + QString get_pressure_string(pressure_t pressure, bool showunit) { if (prefs.units.pressure == units::BAR) { diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index 7f3ce9a1a..a5321ce76 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -1302,7 +1302,6 @@ YearStatisticsItem::YearStatisticsItem(stats_t interval) : stats_interval(interv QVariant YearStatisticsItem::data(int column, int role) const { - const char *unit; double value; QVariant ret; @@ -1317,29 +1316,26 @@ QVariant YearStatisticsItem::data(int column, int role) const case AVERAGE_TIME: ret = get_minutes(stats_interval.total_time.seconds / stats_interval.selection_size); break; case SHORTEST_TIME: ret = get_minutes(stats_interval.shortest_time.seconds); break; case LONGEST_TIME: ret = get_minutes(stats_interval.longest_time.seconds); break; - case AVG_DEPTH: ret = stats_interval.avg_depth.mm; break; - case MIN_DEPTH: ret = stats_interval.min_depth.mm; break; - case MAX_DEPTH: ret = stats_interval.max_depth.mm; break; - case AVG_SAC: ret = stats_interval.avg_sac.mliter; break; - case MIN_SAC: ret = stats_interval.min_sac.mliter; break; - case MAX_SAC: ret = stats_interval.max_sac.mliter; break; + case AVG_DEPTH: ret = get_depth_string(stats_interval.avg_depth); break; + case MIN_DEPTH: ret = get_depth_string(stats_interval.min_depth); break; + case MAX_DEPTH: ret = get_depth_string(stats_interval.max_depth); break; + case AVG_SAC: ret = get_volume_string(stats_interval.avg_sac); break; + case MIN_SAC: ret = get_volume_string(stats_interval.min_sac); break; + case MAX_SAC: ret = get_volume_string(stats_interval.max_sac); break; case AVG_TEMP: - get_temp_units(stats_interval.min_temp, &unit); if (stats_interval.combined_temp && stats_interval.combined_count) { - ret = QString("%1 %2").arg(stats_interval.combined_temp / stats_interval.combined_count).arg(unit); + ret = QString::number(stats_interval.combined_temp / stats_interval.combined_count, 'f', 1); } break; case MIN_TEMP: - value = get_temp_units(stats_interval.min_temp, &unit); - if (value > -100.0) { - ret = QString("%1 %2").arg(value).arg(unit); - } + value = get_temp_units(stats_interval.min_temp, NULL); + if (value > -100.0) + ret = QString::number(value, 'f', 1); break; case MAX_TEMP: - value = get_temp_units(stats_interval.max_temp, &unit); - if (value > -100.0) { - ret = QString("%1 %2").arg(value).arg(unit); - } + value = get_temp_units(stats_interval.max_temp, NULL); + if (value > -100.0) + ret = QString::number(value, 'f', 1); break; } return ret; @@ -1362,18 +1358,18 @@ QVariant YearlyStatisticsModel::headerData(int section, Qt::Orientation orientat case YEAR: val = tr("Year \n > Month"); break; case DIVES: val = tr("#"); break; case TOTAL_TIME: val = tr("Duration \n Total"); break; - case AVERAGE_TIME: val = tr("Average"); break; - case SHORTEST_TIME: val = tr("Shortest"); break; - case LONGEST_TIME: val = tr("Longest"); break; - case AVG_DEPTH: val = tr("Depth \n Average"); break; - case MIN_DEPTH: val = tr("Minimum"); break; - case MAX_DEPTH: val = tr("Maximum"); break; - case AVG_SAC: val = tr("SAC \n Average"); break; - case MIN_SAC: val = tr("Minimum"); break; - case MAX_SAC: val = tr("Maximum"); break; - case AVG_TEMP: val = tr("Temperature \n Average"); break; - case MIN_TEMP: val = tr("Minimum"); break; - case MAX_TEMP: val = tr("Maximum"); break; + case AVERAGE_TIME: val = tr("\nAverage"); break; + case SHORTEST_TIME: val = tr("\nShortest"); break; + case LONGEST_TIME: val = tr("\nLongest"); break; + case AVG_DEPTH: val = QString(tr("Depth (%1)\n Average")).arg(get_depth_unit()); break; + case MIN_DEPTH: val = tr("\nMinimum"); break; + case MAX_DEPTH: val = tr("\nMaximum"); break; + case AVG_SAC: val = QString(tr("SAC (%1)\n Average")).arg(get_volume_unit()); break; + case MIN_SAC: val = tr("\nMinimum"); break; + case MAX_SAC: val = tr("\nMaximum"); break; + case AVG_TEMP: val = QString(tr("Temp. (%1)\n Average").arg(get_temp_unit())); break; + case MIN_TEMP: val = tr("\nMinimum"); break; + case MAX_TEMP: val = tr("\nMaximum"); break; } } return val;