Consistently show dive duration based on preferences

We now respect the settings in the preferences and also only show
the duration as minutes and seconds if the dive is a free dive.

Fixes #361
Fixes #362

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2017-05-06 17:43:32 -07:00
parent 876b479d69
commit 92d24a2912
3 changed files with 15 additions and 25 deletions

View file

@ -36,7 +36,7 @@ int parseWeightToGrams(const QString &text);
int parsePressureToMbar(const QString &text); int parsePressureToMbar(const QString &text);
int parseGasMixO2(const QString &text); int parseGasMixO2(const QString &text);
int parseGasMixHE(const QString &text); int parseGasMixHE(const QString &text);
QString get_dive_duration_string(timestamp_t when, QString hourText, QString minutesText); QString get_dive_duration_string(timestamp_t when, QString hourText, QString minutesText, QString secondsText = "", bool isFreeDive = false);
QString get_dive_date_string(timestamp_t when); QString get_dive_date_string(timestamp_t when);
QString get_short_dive_date_string(timestamp_t when); QString get_short_dive_date_string(timestamp_t when);
bool is_same_day (timestamp_t trip_when, timestamp_t dive_when); bool is_same_day (timestamp_t trip_when, timestamp_t dive_when);

View file

@ -924,19 +924,23 @@ int parseGasMixHE(const QString &text)
return he; return he;
} }
QString get_dive_duration_string(timestamp_t when, QString hourText, QString minutesText) QString get_dive_duration_string(timestamp_t when, QString hourText, QString minutesText, QString secondsText, bool isFreeDive)
{ {
int hrs, mins; int hrs, mins, fullmins, secs;
mins = (when + 59) / 60; mins = (when + 59) / 60;
fullmins = when / 60;
secs = when - 60 * fullmins;
hrs = mins / 60; hrs = mins / 60;
mins -= hrs * 60;
QString displayTime; QString displayTime;
if (hrs) if (prefs.units.duration_units == units::ALWAYS_HOURS || (prefs.units.duration_units == units::MIXED && hrs)) {
displayTime = QString("%1%2%3%4").arg(hrs).arg(hourText).arg(mins, 2, 10, QChar('0')).arg(minutesText); mins -= hrs * 60;
else displayTime = QString("%1%2%3%4").arg(hrs).arg(hourText).arg(mins, 2, 10, QChar('0')).arg(hourText == ":" ? "" : minutesText);
displayTime = QString("%1%2").arg(mins).arg(minutesText); } else if (isFreeDive) {
displayTime = QString("%1%2%3%4").arg(fullmins).arg(minutesText).arg(secs, 2, 10, QChar('0')).arg(secondsText);
} else {
displayTime = QString("%1%2").arg(mins).arg(hourText == ":" ? "" : minutesText);
}
return displayTime; return displayTime;
} }

View file

@ -342,22 +342,8 @@ int DiveItem::countPhotos(dive *dive) const
QString DiveItem::displayDuration() const QString DiveItem::displayDuration() const
{ {
int hrs, mins, fullmins, secs;
struct dive *dive = get_dive_by_uniq_id(diveId); struct dive *dive = get_dive_by_uniq_id(diveId);
mins = (dive->duration.seconds + 59) / 60; return get_dive_duration_string(dive->duration.seconds, ":", "m", "s", dive->dc.divemode == FREEDIVE);
fullmins = dive->duration.seconds / 60;
secs = dive->duration.seconds - 60 * fullmins;
hrs = mins / 60;
mins -= hrs * 60;
QString displayTime;
if (hrs)
displayTime = QString("%1:%2").arg(hrs).arg(mins, 2, 10, QChar('0'));
else if (mins < 15 || dive->dc.divemode == FREEDIVE)
displayTime = QString("%1m%2s").arg(fullmins).arg(secs, 2, 10, QChar('0'));
else
displayTime = QString("%1").arg(mins);
return displayTime;
} }
QString DiveItem::displayTemperature() const QString DiveItem::displayTemperature() const