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/StatisticsPage.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/StatisticsPage.qml')
-rw-r--r-- | mobile-widgets/qml/StatisticsPage.qml | 119 |
1 files changed, 119 insertions, 0 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") + } +} |