subsurface/mobile-widgets/qml/Preferences.qml

407 lines
10 KiB
QML
Raw Normal View History

// 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: "Preferences"
title: qsTr("Preferences")
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
GridLayout {
id: themePrefs
columns: 2
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
}
}
}
}
}
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
}
}
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("Debug log for download from divecomputer")
color: subsurfaceTheme.textColor
level: 4
Layout.topMargin: Kirigami.Units.largeSpacing
Layout.bottomMargin: Kirigami.Units.largeSpacing / 2
Layout.columnSpan: 2
}
CheckBox {
id: libdclogButton
checked: manager.libdcLog
onClicked: {
manager.libdcLog = checked
}
indicator: Rectangle {
implicitWidth: 20
implicitHeight: 20
x: libdclogButton.leftPadding
y: parent.height / 2 - height / 2
radius: 4
border.color: libdclogButton.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
color: subsurfaceTheme.backgroundColor
Rectangle {
width: 12
height: 12
x: 4
y: 4
radius: 3
color: libdclogButton.down ? subsurfaceTheme.primaryColor : subsurfaceTheme.darkerPrimaryColor
visible: libdclogButton.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
}
}
}