summaryrefslogtreecommitdiffstats
path: root/qt-models/divesummarymodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models/divesummarymodel.cpp')
-rw-r--r--qt-models/divesummarymodel.cpp28
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);