diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2020-02-07 15:49:31 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-02-08 10:29:36 -0800 |
commit | 6c7411c776597d46074247923137965e2216b732 (patch) | |
tree | 4c4949b61013fc0e3d63034ec2c6371d424a7087 /qt-models/divesummarymodel.cpp | |
parent | fb057b7094b4cdef3456b8dad3ed653d99125fe8 (diff) | |
download | subsurface-6c7411c776597d46074247923137965e2216b732.tar.gz |
mobile/summary: use more intuitive time periods
No one will ask you about your dives in the last seven months (and the
existing code actually provided the past 210 days in that case). Instead
do more intuitive periods. Last month, quarter, half year, year.
Use Qt's ability to make sane date calculations easy.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models/divesummarymodel.cpp')
-rw-r--r-- | qt-models/divesummarymodel.cpp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/qt-models/divesummarymodel.cpp b/qt-models/divesummarymodel.cpp index 739463246..1c192a573 100644 --- a/qt-models/divesummarymodel.cpp +++ b/qt-models/divesummarymodel.cpp @@ -242,12 +242,28 @@ void DiveSummaryModel::calc(int column, int period) if (column >= (int)results.size()) return; - QDateTime localTime; - - // Calculate Start of the 2 periods. - timestamp_t now, start; - now = QDateTime::currentMSecsSinceEpoch() / 1000L + gettimezoneoffset(); - start = (period == 0) ? 0 : now - period * 30 * 24 * 60 * 60; + QDateTime currentTime = QDateTime::currentDateTime(); + QDateTime startTime = currentTime; + + // Calculate Start of the periods. + switch (period) { + case 0: // having startTime == currentTime is used as special case below + break; + case 1: startTime = currentTime.addMonths(-1); + break; + case 2: startTime = currentTime.addMonths(-3); + break; + case 3: startTime = currentTime.addMonths(-6); + break; + case 4: startTime = currentTime.addYears(-1); + break; + default: qWarning("DiveSummaryModel::calc called with invalid period"); + } + timestamp_t start; + if (startTime == currentTime) + start = 0; + else + start = startTime.toMSecsSinceEpoch() / 1000L + gettimezoneoffset(); // Loop over all dives and sum up data Stats stats = loopDives(start); |