summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2014-07-16 20:23:15 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-07-16 20:24:56 -0700
commitb3e662a895f6106846b236816ea13a458b95ab4a (patch)
treec5059c7d4002d906f4fec8b4a54a6870783a015c
parentbebcbfe92ac29681db0f4662b930c5f8a48448d3 (diff)
downloadsubsurface-b3e662a895f6106846b236816ea13a458b95ab4a.tar.gz
Pick the correct timezoneoffset for the day in question
Calculating the timezoneoffset for the current date really makes no sense whatsoever when displaying a time that isn't "now". Fixes #605 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--helpers.h2
-rw-r--r--qt-gui.cpp10
-rw-r--r--qt-ui/maintab.cpp2
3 files changed, 9 insertions, 5 deletions
diff --git a/helpers.h b/helpers.h
index f74d44939..06a431779 100644
--- a/helpers.h
+++ b/helpers.h
@@ -27,7 +27,7 @@ void set_default_dive_computer(const char *vendor, const char *product);
void set_default_dive_computer_device(const char *name);
QString getSubsurfaceDataPath(QString folderToFind);
extern const QString get_dc_nickname(const char *model, uint32_t deviceid);
-int gettimezoneoffset();
+int gettimezoneoffset(time_t when = 0);
int parseTemperatureToMkelvin(const QString &text);
QString get_dive_date_string(timestamp_t when);
QString get_short_dive_date_string(timestamp_t when);
diff --git a/qt-gui.cpp b/qt-gui.cpp
index 68f65e76a..0f5342921 100644
--- a/qt-gui.cpp
+++ b/qt-gui.cpp
@@ -372,10 +372,14 @@ QString getSubsurfaceDataPath(QString folderToFind)
return QString("");
}
-int gettimezoneoffset()
+int gettimezoneoffset(time_t when)
{
- QDateTime dt1 = QDateTime::currentDateTime();
- QDateTime dt2 = dt1.toUTC();
+ QDateTime dt1, dt2;
+ if (when == 0)
+ dt1 = QDateTime::currentDateTime();
+ else
+ dt1 = QDateTime::fromMSecsSinceEpoch(when * 1000);
+ dt2 = dt1.toUTC();
dt1.setTimeSpec(Qt::UTC);
return dt2.secsTo(dt1);
}
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index 4c46d36ac..7c85825d4 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -380,7 +380,7 @@ void MainTab::updateDiveInfo(bool clear)
if (!clear) {
updateGpsCoordinates(&displayed_dive);
- QDateTime localTime = QDateTime::fromTime_t(displayed_dive.when - gettimezoneoffset());
+ QDateTime localTime = QDateTime::fromTime_t(displayed_dive.when - gettimezoneoffset(displayed_dive.when));
ui.dateEdit->setDate(localTime.date());
ui.timeEdit->setTime(localTime.time());
if (MainWindow::instance() && MainWindow::instance()->dive_list()->selectedTrips().count() == 1) {