diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2021-01-04 15:47:33 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2021-01-10 15:16:52 -0800 |
commit | eb2b0f0a3eb9cf84970c9a21dda9553112b99b17 (patch) | |
tree | bf25194d1cdc96975f2279e566474e09bf6299ac /mobile-widgets/qml | |
parent | d77f25432850ea2e2ea9e7fb84c49d52c3a308eb (diff) | |
download | subsurface-eb2b0f0a3eb9cf84970c9a21dda9553112b99b17.tar.gz |
mobile/statistics: add a statistics page on mobile
This adds a reasonably flexibile mobile page that tries to do the right
thing for both portrait and landscape mode. In order to get the most out
of a mobile screen, it's implemented in a way that always gives it the
full screen (it does so by emptying out the page stack and being the
only page shown - brutal, but effective).
This commit also contains a bunch of other random cleanups that didn't
really justify being in separate commits.
Parts of this was written by Berthold, hence the double SOB.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'mobile-widgets/qml')
-rw-r--r-- | mobile-widgets/qml/StatisticsPage.qml | 119 | ||||
-rw-r--r-- | mobile-widgets/qml/main.qml | 24 | ||||
-rw-r--r-- | mobile-widgets/qml/mobile-resources.qrc | 1 |
3 files changed, 143 insertions, 1 deletions
diff --git a/mobile-widgets/qml/StatisticsPage.qml b/mobile-widgets/qml/StatisticsPage.qml new file mode 100644 index 000000000..4119c653a --- /dev/null +++ b/mobile-widgets/qml/StatisticsPage.qml @@ -0,0 +1,119 @@ +// SPDX-License-Identifier: GPL-2.0 +import QtQuick 2.6 +import QtQuick.Controls 2.4 +import QtQuick.Layouts 1.2 +import org.subsurfacedivelog.mobile 1.0 +import org.kde.kirigami 2.4 as Kirigami + +Kirigami.Page { + id: statisticsPage + objectName: "StatisticsPage" + title: qsTr("Statistics") + leftPadding: 0 + topPadding: 0 + rightPadding: 0 + bottomPadding: 0 + width: rootItem.width + implicitWidth: rootItem.width + property bool wide: width > height + StatsManager { + id: statsManager + } + onVisibleChanged: { + if (visible) + statsManager.doit() + } + + GridLayout { + anchors.fill: parent + ColumnLayout { + id: i1 + Layout.column: 0 + Layout.row: 0 + Layout.margins: Kirigami.Units.smallSpacing + TemplateLabelSmall { + text: qsTr("Base variable") + } + TemplateComboBox { + id: var1 + model: statsManager.var1List + Layout.fillWidth: false + onCurrentIndexChanged: { + statsManager.var1Changed(currentIndex) + } + } + } + ColumnLayout { + id: i2 + Layout.column: wide ? 0 : 1 + Layout.row: wide ? 1 : 0 + Layout.margins: Kirigami.Units.smallSpacing + TemplateLabelSmall { + text: qsTr("Binning") + } + TemplateComboBox { + id: var1Binner + model: statsManager.binner1List + Layout.fillWidth: false + onCurrentIndexChanged: { + statsManager.var1BinnerChanged(currentIndex) + } + } + } + ColumnLayout { + id: i3 + Layout.column: wide ? 0 : 2 + Layout.row: wide ? 2 : 0 + Layout.margins: Kirigami.Units.smallSpacing + TemplateLabelSmall { + text: qsTr("Data") + } + TemplateComboBox { + id: var2 + model: statsManager.var2List + Layout.fillWidth: false + onCurrentIndexChanged: { + statsManager.var2Changed(currentIndex) + } + } + } + ColumnLayout { + id: i4 + Layout.column: wide ? 0 : 3 + Layout.row: wide ? 3 : 0 + Layout.margins: Kirigami.Units.smallSpacing + TemplateLabelSmall { + text: qsTr("Binning") + } + TemplateComboBox { + id: var2Binner + model: statsManager.binner2List + Layout.fillWidth: false + onCurrentIndexChanged: { + statsManager.var2BinnerChanged(currentIndex) + } + } + } + Item { + Layout.column: wide ? 0 : 4 + Layout.row: wide ? 4 : 0 + Layout.preferredHeight: wide ? parent.height - Kirigami.Units.gridUnit * 16 : Kirigami.Units.gridUnit + Layout.preferredWidth: wide ? parent.width - i1.implicitWidt - i2.implicitWidt - i3.implicitWidt - i4.implicitWidth : Kirigami.Units.gridUnit + // just used for spacing + } + + StatsView { + Layout.row: wide ? 0 : 1 + Layout.column: wide ? 1 : 0 + Layout.rowSpan: wide ? 5 : 1 + Layout.columnSpan: wide ? 1 : 5 + id: statsView + Layout.fillWidth: true + Layout.fillHeight: true + } + } + Component.onCompleted: { + statsManager.init(statsView, var1) + console.log("Statistics widget loaded") + } +} diff --git a/mobile-widgets/qml/main.qml b/mobile-widgets/qml/main.qml index 4f5344275..837b29b59 100644 --- a/mobile-widgets/qml/main.qml +++ b/mobile-widgets/qml/main.qml @@ -88,6 +88,9 @@ Kirigami.ApplicationWindow { for (var i=pageStack.depth; i>1; i--) { pageStack.pop() } + if (pageStack.currentItem !== diveList) { + showDiveList() + } detailsWindow.endEditMode() } @@ -96,6 +99,15 @@ Kirigami.ApplicationWindow { } function showPage(page) { + if (page === statistics) { + manager.appendTextToLog("switching to statistics page, clearing out stack") + pageStack.clear() + } + if (pageStack.currentItem === statistics) { + manager.appendTextToLog("switching away from statistics page, clearing out stack") + pageStack.clear() + } + if (page !== mapPage) hackToOpenMap = 0 // we really want a different page if (globalDrawer.drawerOpen) @@ -441,6 +453,12 @@ if you have network connectivity and want to sync your data to cloud storage."), } }, Kirigami.Action { + text: qsTr("Statistics") + onTriggered: { + showPage(statistics) + } + }, + Kirigami.Action { icon { name: ":/icons/ic_settings.svg" } @@ -859,9 +877,13 @@ if you have network connectivity and want to sync your data to cloud storage."), visible: false } + StatisticsPage { + id: statistics + visible: false + } + Settings { id: settingsWindow - visible: false } CopySettings { diff --git a/mobile-widgets/qml/mobile-resources.qrc b/mobile-widgets/qml/mobile-resources.qrc index 00ef4f868..d0b285ab6 100644 --- a/mobile-widgets/qml/mobile-resources.qrc +++ b/mobile-widgets/qml/mobile-resources.qrc @@ -37,6 +37,7 @@ <file>Log.qml</file> <file>main.qml</file> <file>MapPage.qml</file> + <file>StatisticsPage.qml</file> <file>Settings.qml</file> <file>CopySettings.qml</file> <file>ThemeTest.qml</file> |