mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Mobile: consolidate settings to one page and menu entry
Addresses: #492 Signed-off-by: Rick Walsh <rickmwalsh@gmail.com> Had a bit of rebase issue with this one. Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
This commit is contained in:
parent
e80132cdef
commit
6655b37add
5 changed files with 43 additions and 51 deletions
415
mobile-widgets/qml/Settings.qml
Normal file
415
mobile-widgets/qml/Settings.qml
Normal file
|
@ -0,0 +1,415 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
import QtQuick 2.3
|
||||
import QtQuick.Controls 2.0
|
||||
import QtQuick.Window 2.2
|
||||
import QtQuick.Dialogs 1.2
|
||||
import QtQuick.Layouts 1.1
|
||||
import org.kde.kirigami 2.0 as Kirigami
|
||||
import org.subsurfacedivelog.mobile 1.0
|
||||
|
||||
Kirigami.ScrollablePage {
|
||||
objectName: "Settings"
|
||||
title: qsTr("Settings")
|
||||
anchors.margins: Kirigami.Units.gridUnit / 2
|
||||
|
||||
actions {
|
||||
main: Kirigami.Action {
|
||||
text: qsTr("Save")
|
||||
iconName: "document-save"
|
||||
onTriggered: {
|
||||
manager.distanceThreshold = distanceThreshold.text
|
||||
manager.timeThreshold = timeThreshold.text
|
||||
manager.theme = subsurfaceTheme.currentTheme
|
||||
manager.savePreferences()
|
||||
stackView.pop()
|
||||
}
|
||||
}
|
||||
}
|
||||
ColumnLayout {
|
||||
width: parent.width - Kirigami.Units.gridUnit
|
||||
CloudCredentials {
|
||||
id: cloudCredentials
|
||||
Layout.fillWidth: true
|
||||
Layout.margins: Kirigami.Units.gridUnit
|
||||
Layout.topMargin: 0
|
||||
property int headingLevel: 4
|
||||
}
|
||||
Rectangle {
|
||||
color: subsurfaceTheme.darkerPrimaryColor
|
||||
height: 1
|
||||
opacity: 0.5
|
||||
Layout.columnSpan: 3
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
GridLayout {
|
||||
id: themeSettings
|
||||
columns: 2
|
||||
Layout.bottomMargin: Kirigami.Units.gridUnit
|
||||
|
||||
Kirigami.Heading {
|
||||
text: qsTr("Theme")
|
||||
color: subsurfaceTheme.textColor
|
||||
level: 4
|
||||
Layout.topMargin: Kirigami.Units.largeSpacing
|
||||
Layout.bottomMargin: Kirigami.Units.largeSpacing / 2
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
RadioButton {
|
||||
id: bluebutton
|
||||
checked: subsurfaceTheme.currentTheme === "Blue"
|
||||
onClicked: {
|
||||
blueTheme()
|
||||
}
|
||||
indicator: Rectangle {
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
x: bluebutton.leftPadding
|
||||
y: parent.height / 2 - height / 2
|
||||
radius: 4
|
||||
border.color: bluebutton.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
|
||||
color: subsurfaceTheme.backgroundColor
|
||||
|
||||
Rectangle {
|
||||
width: 12
|
||||
height: 12
|
||||
x: 4
|
||||
y: 4
|
||||
radius: 3
|
||||
color: bluebutton.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
|
||||
visible: bluebutton.checked
|
||||
}
|
||||
}
|
||||
}
|
||||
Row {
|
||||
Label {
|
||||
text: qsTr("Blue")
|
||||
color: subsurfaceTheme.textColor
|
||||
anchors.verticalCenter: blueRect.verticalCenter
|
||||
rightPadding: Kirigami.Units.gridUnit
|
||||
}
|
||||
Rectangle {
|
||||
id: blueRect
|
||||
color: subsurfaceTheme.blueBackgroundColor
|
||||
border.color: "black"
|
||||
width: sampleRegularBlue.width + 2 * Kirigami.Units.gridUnit
|
||||
height: Kirigami.Units.gridUnit * 2
|
||||
Text {
|
||||
id: sampleRegularBlue
|
||||
text: qsTr("regular text")
|
||||
color: subsurfaceTheme.blueTextColor
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
color: subsurfaceTheme.bluePrimaryColor
|
||||
border.color: "black"
|
||||
width: sampleHighlightBlue.width + 2 * Kirigami.Units.gridUnit
|
||||
height: Kirigami.Units.gridUnit * 2
|
||||
Text {
|
||||
id: sampleHighlightBlue
|
||||
text: qsTr("Highlight")
|
||||
color: subsurfaceTheme.bluePrimaryTextColor
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RadioButton {
|
||||
id: pinkbutton
|
||||
checked: subsurfaceTheme.currentTheme === "Pink"
|
||||
onClicked: {
|
||||
pinkTheme()
|
||||
}
|
||||
indicator: Rectangle {
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
x: pinkbutton.leftPadding
|
||||
y: parent.height / 2 - height / 2
|
||||
radius: 4
|
||||
border.color: pinkbutton.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
|
||||
color: subsurfaceTheme.backgroundColor
|
||||
|
||||
Rectangle {
|
||||
width: 12
|
||||
height: 12
|
||||
x: 4
|
||||
y: 4
|
||||
radius: 3
|
||||
color: pinkbutton.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
|
||||
visible: pinkbutton.checked
|
||||
}
|
||||
}
|
||||
}
|
||||
Row {
|
||||
Label {
|
||||
text: qsTr("Pink")
|
||||
color: subsurfaceTheme.textColor
|
||||
anchors.verticalCenter: pinkRect.verticalCenter
|
||||
rightPadding: Kirigami.Units.gridUnit
|
||||
}
|
||||
Rectangle {
|
||||
id: pinkRect
|
||||
color: subsurfaceTheme.pinkBackgroundColor
|
||||
border.color: "black"
|
||||
width: sampleRegularPink.width + 2 * Kirigami.Units.gridUnit
|
||||
height: Kirigami.Units.gridUnit * 2
|
||||
Text {
|
||||
id: sampleRegularPink
|
||||
text: qsTr("regular text")
|
||||
color: subsurfaceTheme.pinkTextColor
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
color: subsurfaceTheme.pinkPrimaryColor
|
||||
border.color: "black"
|
||||
width: sampleHighlightPink.width + 2 * Kirigami.Units.gridUnit
|
||||
height: Kirigami.Units.gridUnit * 2
|
||||
Text {
|
||||
id: sampleHighlightPink
|
||||
text: qsTr("Highlight")
|
||||
color: subsurfaceTheme.pinkPrimaryTextColor
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RadioButton {
|
||||
id: darkbutton
|
||||
checked: subsurfaceTheme.currentTheme === "Dark"
|
||||
onClicked: {
|
||||
darkTheme()
|
||||
}
|
||||
indicator: Rectangle {
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
x: darkbutton.leftPadding
|
||||
y: parent.height / 2 - height / 2
|
||||
radius: 4
|
||||
border.color: darkbutton.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
|
||||
color: subsurfaceTheme.backgroundColor
|
||||
|
||||
Rectangle {
|
||||
width: 12
|
||||
height: 12
|
||||
x: 4
|
||||
y: 4
|
||||
radius: 3
|
||||
color: darkbutton.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
|
||||
visible: darkbutton.checked
|
||||
}
|
||||
}
|
||||
}
|
||||
Row {
|
||||
Label {
|
||||
text: qsTr("Dark")
|
||||
color: subsurfaceTheme.textColor
|
||||
anchors.verticalCenter: blackRect.verticalCenter
|
||||
rightPadding: Kirigami.Units.gridUnit
|
||||
}
|
||||
Rectangle {
|
||||
id: blackRect
|
||||
color: subsurfaceTheme.darkBackgroundColor
|
||||
border.color: "black"
|
||||
width: sampleRegularDark.width + 2 * Kirigami.Units.gridUnit
|
||||
height: Kirigami.Units.gridUnit * 2
|
||||
Text {
|
||||
id: sampleRegularDark
|
||||
text: qsTr("regular text")
|
||||
color: subsurfaceTheme.darkTextColor
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
color: subsurfaceTheme.darkPrimaryColor
|
||||
border.color: "black"
|
||||
width: sampleHighlightDark.width + 2 * Kirigami.Units.gridUnit
|
||||
height: Kirigami.Units.gridUnit * 2
|
||||
Text {
|
||||
id: sampleHighlightDark
|
||||
text: qsTr("Highlight")
|
||||
color: subsurfaceTheme.darkPrimaryTextColor
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
color: subsurfaceTheme.darkerPrimaryColor
|
||||
height: 1
|
||||
opacity: 0.5
|
||||
Layout.columnSpan: 3
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
GridLayout {
|
||||
id: gpsPrefs
|
||||
columns: 2
|
||||
width: parent.width
|
||||
|
||||
Kirigami.Heading {
|
||||
text: qsTr("Subsurface GPS data webservice")
|
||||
color: subsurfaceTheme.textColor
|
||||
level: 4
|
||||
Layout.topMargin: Kirigami.Units.largeSpacing
|
||||
Layout.bottomMargin: Kirigami.Units.largeSpacing / 2
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Kirigami.Label {
|
||||
text: qsTr("Distance threshold (meters)")
|
||||
Layout.alignment: Qt.AlignRight
|
||||
}
|
||||
|
||||
TextField {
|
||||
id: distanceThreshold
|
||||
text: manager.distanceThreshold
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Kirigami.Label {
|
||||
text: qsTr("Time threshold (minutes)")
|
||||
Layout.alignment: Qt.AlignRight
|
||||
}
|
||||
|
||||
TextField {
|
||||
id: timeThreshold
|
||||
text: manager.timeThreshold
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
color: subsurfaceTheme.darkerPrimaryColor
|
||||
height: 1
|
||||
opacity: 0.5
|
||||
Layout.columnSpan: 3
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
GridLayout {
|
||||
id: locationService
|
||||
columns: 2
|
||||
width: parent.width
|
||||
CheckBox {
|
||||
id: locationCheckbox
|
||||
visible: manager.locationServiceAvailable
|
||||
checked: manager.locationServiceEnabled
|
||||
onClicked: {
|
||||
manager.locationServiceEnabled = checked
|
||||
}
|
||||
indicator: Rectangle {
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
x: locationCheckbox.leftPadding
|
||||
y: parent.height / 2 - height / 2
|
||||
radius: 4
|
||||
border.color: locationCheckbox.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
|
||||
color: subsurfaceTheme.backgroundColor
|
||||
|
||||
Rectangle {
|
||||
width: 12
|
||||
height: 12
|
||||
x: 4
|
||||
y: 4
|
||||
radius: 3
|
||||
color: locationCheckbox.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
|
||||
visible: locationCheckbox.checked
|
||||
}
|
||||
}
|
||||
}
|
||||
Kirigami.Label {
|
||||
text: qsTr("Run location service")
|
||||
}
|
||||
}
|
||||
GridLayout {
|
||||
id: libdclogprefs
|
||||
columns: 2
|
||||
width: parent.width
|
||||
Kirigami.Heading {
|
||||
text: qsTr("Dive computer")
|
||||
color: subsurfaceTheme.textColor
|
||||
level: 4
|
||||
Layout.topMargin: Kirigami.Units.largeSpacing
|
||||
Layout.bottomMargin: Kirigami.Units.largeSpacing / 2
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Switch {
|
||||
id: libdclogButton
|
||||
checked: manager.libdcLog
|
||||
onClicked: {
|
||||
manager.libdcLog = checked
|
||||
}
|
||||
}
|
||||
Kirigami.Label {
|
||||
text: qsTr("Save detailed log of interaction with the dive computer")
|
||||
}
|
||||
}
|
||||
GridLayout {
|
||||
id: developer
|
||||
columns: 2
|
||||
width: parent.width - Kirigami.Units.gridUnit
|
||||
Kirigami.Heading {
|
||||
text: qsTr("Developer")
|
||||
color: subsurfaceTheme.textColor
|
||||
level: 4
|
||||
Layout.topMargin: Kirigami.Units.largeSpacing
|
||||
Layout.bottomMargin: Kirigami.Units.largeSpacing / 2
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
CheckBox {
|
||||
id: developerButton
|
||||
checked: manager.developer
|
||||
onClicked: {
|
||||
manager.developer = checked
|
||||
}
|
||||
indicator: Rectangle {
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
x: developerButton.leftPadding
|
||||
y: parent.height / 2 - height / 2
|
||||
radius: 4
|
||||
border.color: developerButton.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
|
||||
color: subsurfaceTheme.backgroundColor
|
||||
|
||||
Rectangle {
|
||||
width: 12
|
||||
height: 12
|
||||
x: 4
|
||||
y: 4
|
||||
radius: 3
|
||||
color: developerButton.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
|
||||
visible: developerButton.checked
|
||||
}
|
||||
}
|
||||
}
|
||||
Kirigami.Label {
|
||||
text: qsTr("Display Developer menu")
|
||||
}
|
||||
}
|
||||
Item {
|
||||
height: Kirigami.Units.gridUnit * 6
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue