aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2020-02-07 15:49:31 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-02-08 10:29:36 -0800
commit6c7411c776597d46074247923137965e2216b732 (patch)
tree4c4949b61013fc0e3d63034ec2c6371d424a7087
parentfb057b7094b4cdef3456b8dad3ed653d99125fe8 (diff)
downloadsubsurface-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>
-rw-r--r--mobile-widgets/qml/DiveSummary.qml18
-rw-r--r--qt-models/divesummarymodel.cpp28
2 files changed, 27 insertions, 19 deletions
diff --git a/mobile-widgets/qml/DiveSummary.qml b/mobile-widgets/qml/DiveSummary.qml
index 612cee9fd..8c390c8a2 100644
--- a/mobile-widgets/qml/DiveSummary.qml
+++ b/mobile-widgets/qml/DiveSummary.qml
@@ -48,19 +48,11 @@ Kirigami.ScrollablePage {
ListModel {
id: monthModel
- ListElement {text: qsTr("Total")}
- ListElement {text: qsTr(" 1 month [ 30 days]")}
- ListElement {text: qsTr(" 2 month [ 60 days]")}
- ListElement {text: qsTr(" 3 month [ 90 days]")}
- ListElement {text: qsTr(" 4 month [120 days]")}
- ListElement {text: qsTr(" 5 month [150 days]")}
- ListElement {text: qsTr(" 6 month [180 days]")}
- ListElement {text: qsTr(" 7 month [210 days]")}
- ListElement {text: qsTr(" 8 month [240 days]")}
- ListElement {text: qsTr(" 9 month [270 days]")}
- ListElement {text: qsTr("10 month [300 days]")}
- ListElement {text: qsTr("11 month [330 days]")}
- ListElement {text: qsTr("12 month [360 days]")}
+ ListElement {text: qsTr("All")}
+ ListElement {text: qsTr("1 month")}
+ ListElement {text: qsTr("3 months")}
+ ListElement {text: qsTr("6 months")}
+ ListElement {text: qsTr("1 year")}
}
TemplateLabel {
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);