diff options
author | Giorgio Marzano <marzano.giorgio@gmail.com> | 2015-10-11 15:37:28 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-10-18 17:37:49 -0700 |
commit | 44bdcffcd45904b621b37ffa6be0d7760173f492 (patch) | |
tree | 0cdb2ec1333d47c544735396e34b0e75451015ee | |
parent | 166d587197e9d1f227f603ed10de71bf06ccacb9 (diff) | |
download | subsurface-44bdcffcd45904b621b37ffa6be0d7760173f492.tar.gz |
Display divetime according to dive mode and translation
Many time stats in maintab display also seconds in short freediving
Signed-off-by: Giorgio Marzano <marzano.giorgio@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | qt-ui/maintab.cpp | 16 | ||||
-rw-r--r-- | statistics.c | 8 | ||||
-rw-r--r-- | statistics.h | 5 |
3 files changed, 20 insertions, 9 deletions
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp index be63d5e11..0afb7b4c0 100644 --- a/qt-ui/maintab.cpp +++ b/qt-ui/maintab.cpp @@ -609,9 +609,13 @@ void MainTab::updateDiveInfo(bool clear) ui.gasUsedText->setText(volumes); ui.oxygenHeliumText->setText(gaslist); ui.dateText->setText(get_short_dive_date_string(displayed_dive.when)); - ui.diveTimeText->setText(QString::number((int)((displayed_dive.duration.seconds + 30) / 60))); + if (displayed_dive.dc.divemode != FREEDIVE) + ui.diveTimeText->setText(get_time_string_s(displayed_dive.duration.seconds + 30, 0, false)); + else + ui.diveTimeText->setText(get_time_string_s(displayed_dive.duration.seconds, 0, true)); if (prevd) - ui.surfaceIntervalText->setText(get_time_string(displayed_dive.when - (prevd->when + prevd->duration.seconds), 4)); + ui.surfaceIntervalText->setText(get_time_string_s(displayed_dive.when - (prevd->when + prevd->duration.seconds), 4, + (displayed_dive.dc.divemode == FREEDIVE))); else ui.surfaceIntervalText->clear(); if (mean[0]) @@ -662,14 +666,14 @@ void MainTab::updateDiveInfo(bool clear) ui.tempLimits->overrideMaxToolTipText(tr("Highest temperature")); ui.tempLimits->overrideMinToolTipText(tr("Lowest temperature")); ui.tempLimits->overrideAvgToolTipText(tr("Average temperature of all selected dives")); - ui.totalTimeAllText->setText(get_time_string(stats_selection.total_time.seconds, 0)); + ui.totalTimeAllText->setText(get_time_string_s(stats_selection.total_time.seconds, 0, (displayed_dive.dc.divemode == FREEDIVE))); int seconds = stats_selection.total_time.seconds; if (stats_selection.selection_size) seconds /= stats_selection.selection_size; - ui.timeLimits->setAverage(get_time_string(seconds, 0)); + ui.timeLimits->setAverage(get_time_string_s(seconds, 0,(displayed_dive.dc.divemode == FREEDIVE))); if (amount_selected > 1) { - ui.timeLimits->setMaximum(get_time_string(stats_selection.longest_time.seconds, 0)); - ui.timeLimits->setMinimum(get_time_string(stats_selection.shortest_time.seconds, 0)); + ui.timeLimits->setMaximum(get_time_string_s(stats_selection.longest_time.seconds, 0, (displayed_dive.dc.divemode == FREEDIVE))); + ui.timeLimits->setMinimum(get_time_string_s(stats_selection.shortest_time.seconds, 0, (displayed_dive.dc.divemode == FREEDIVE))); } ui.timeLimits->overrideMaxToolTipText(tr("Longest dive")); ui.timeLimits->overrideMinToolTipText(tr("Shortest dive")); diff --git a/statistics.c b/statistics.c index 1b2a1a6d3..19fd350eb 100644 --- a/statistics.c +++ b/statistics.c @@ -207,7 +207,7 @@ void process_selected_dives(void) stats_selection.selection_size = nr; } -char *get_time_string(int seconds, int maxdays) +char *get_time_string_s(int seconds, int maxdays, bool freediving) { static char buf[80]; if (maxdays && seconds > 3600 * 24 * maxdays) { @@ -216,10 +216,14 @@ char *get_time_string(int seconds, int maxdays) int days = seconds / 3600 / 24; int hours = (seconds - days * 3600 * 24) / 3600; int minutes = (seconds - days * 3600 * 24 - hours * 3600) / 60; + int secs = (seconds - days * 3600 * 24 - hours * 3600 - minutes*60); if (days > 0) snprintf(buf, sizeof(buf), translate("gettextFromC", "%dd %dh %dmin"), days, hours, minutes); else - snprintf(buf, sizeof(buf), translate("gettextFromC", "%dh %dmin"), hours, minutes); + if (freediving && seconds < 3600) + snprintf(buf, sizeof(buf), translate("gettextFromC", "%dmin %dsecs"), minutes, secs); + else + snprintf(buf, sizeof(buf), translate("gettextFromC", "%dh %dmin"), hours, minutes); } return buf; } diff --git a/statistics.h b/statistics.h index 4d14139e6..dbab25761 100644 --- a/statistics.h +++ b/statistics.h @@ -40,7 +40,7 @@ extern stats_t *stats_yearly; extern stats_t *stats_monthly; extern stats_t *stats_by_trip; -extern char *get_time_string(int seconds, int maxdays); +extern char *get_time_string_s(int seconds, int maxdays, bool freediving); extern char *get_minutes(int seconds); extern void process_all_dives(struct dive *dive, struct dive **prev_dive); extern void get_selected_dives_text(char *buffer, int size); @@ -48,6 +48,9 @@ extern void get_gas_used(struct dive *dive, volume_t gases[MAX_CYLINDERS]); extern void process_selected_dives(void); void selected_dives_gas_parts(volume_t *o2_tot, volume_t *he_tot); +inline char *get_time_string(int seconds, int maxdays) { + return get_time_string_s( seconds, maxdays, false); +} #ifdef __cplusplus } #endif |