// SPDX-License-Identifier: GPL-2.0 import QtQuick 2.12 import QtQuick.Controls 2.12 import QtQuick.Controls 1.4 import QtQuick.Layouts 1.12 import QtQuick.Dialogs 1.3 import org.subsurfacedivelog.mobile 1.0 import org.kde.kirigami 2.4 as Kirigami Kirigami.ScrollablePage { title: qsTr("Dive planner setup") Column { width: parent.width spacing: 1 Layout.margins: 10 TemplateSection { id: rates title: qsTr("Rates") GridLayout { columns: 2 rowSpacing: 10 columnSpacing: 20 visible: rates.isExpanded TemplateLabel { Layout.columnSpan: 2 text: qsTr("Ascent") font.bold: true } TemplateLabel { text: qsTr("below 75% avg. depth") } TemplateSpinBox { from: 1 to: 99 stepSize: 1 value: 15 textFromValue: function (value, locale) { return value + qsTr("m/min") } onValueModified: { console.log("got value: " + value) } } TemplateLabel { text: qsTr("75% to 50% avg. depth") } TemplateSpinBox { from: 1 to: 99 stepSize: 1 value: 15 textFromValue: function (value, locale) { return value + qsTr("m/min") } onValueModified: { console.log("got value: " + value) } } TemplateLabel { text: qsTr("50% avg. depth to 6m") } TemplateSpinBox { from: 1 to: 99 stepSize: 1 value: 15 textFromValue: function (value, locale) { return value + qsTr("m/min") } onValueModified: { console.log("got value: " + value) } } TemplateLabel { text: qsTr("6m to surface") } TemplateSpinBox { from: 1 to: 99 stepSize: 1 value: 15 textFromValue: function (value, locale) { return value + qsTr("m/min") } onValueModified: { console.log("got value: " + value) } } TemplateLabel { Layout.columnSpan: 2 text: qsTr("Descent") font.bold: true } TemplateLabel { text: qsTr("Surface to the bottom") } TemplateSpinBox { from: 1 to: 99 stepSize: 1 value: 15 textFromValue: function (value, locale) { return value + qsTr("m/min") } onValueModified: { console.log("got value: " + value) } } } } TemplateSection { id: planning title: qsTr("Planning") GridLayout { columns: 2 rowSpacing: 10 columnSpacing: 20 visible: planning.isExpanded // Only support "Open circuit" TemplateLabel { text: "WORK in progress" } TemplateRadioButton { text: qsTr("Recreational NO deco") Layout.columnSpan: 2 } // Reserve gas is 50bar (PADI/SSI rules) TemplateRadioButton { text: qsTr("Bühlmann, GFLow/GFHigh:") } Row { spacing: 0 TemplateSpinBox { width: planning.width / 2 -30 from: 1 to: 99 stepSize: 1 value: 15 textFromValue: function (value, locale) { return value + qsTr(" %") } onValueModified: { console.log("got value: " + value) } } TemplateSpinBox { width: planning.width / 2 -30 from: 1 to: 99 stepSize: 1 value: 15 textFromValue: function (value, locale) { return value + qsTr(" %") } onValueModified: { console.log("got value: " + value) } } } TemplateRadioButton { text: qsTr("VPM-B, Conservatism:") } TemplateSpinBox { from: 0 to: 4 stepSize: 1 value: 2 textFromValue: function (value, locale) { return qsTr("+") + value } onValueModified: { console.log("got value: " + value) } } } } TemplateSection { id: gasoptions title: qsTr("Gas options") GridLayout { columns: 2 rowSpacing: 10 columnSpacing: 20 visible: gasoptions.isExpanded TemplateLabel { text: qsTr("Bottom SAC") } TemplateSpinBox { from: 1 to: 99 stepSize: 1 value: 20 textFromValue: function (value, locale) { return value + qsTr("l/min") } onValueModified: { console.log("got value: " + value) } } TemplateLabel { text: qsTr("Deco SAC") } TemplateSpinBox { from: 1 to: 99 stepSize: 1 value: 17 textFromValue: function (value, locale) { return value + qsTr("l/min") } onValueModified: { console.log("got value: " + value) } } TemplateLabel { text: qsTr("SAC factor") } TemplateSpinBox { from: 20 to: 99 stepSize: 1 value: 20 textFromValue: function (value, locale) { return (value / 10).toFixed(1) } onValueModified: { console.log("got value: " + value) } } TemplateLabel { text: qsTr("Problem solving time") } TemplateSpinBox { from: 1 to: 9 stepSize: 1 value: 4 textFromValue: function (value, locale) { return value + qsTr("min") } onValueModified: { console.log("got value: " + value) } } TemplateLabel { text: qsTr("Bottom pO2") } TemplateSpinBox { from: 0 to: 200 stepSize: 1 value: 120 textFromValue: function (value, locale) { return (value / 100).toFixed(2) + "bar" } onValueModified: { console.log("got value: " + value) } } TemplateLabel { text: qsTr("Deco pO2") } TemplateSpinBox { from: 0 to: 200 stepSize: 1 value: 160 textFromValue: function (value, locale) { return (value / 100).toFixed(2) + "bar" } onValueModified: { console.log("got value: " + value) } } TemplateLabel { text: qsTr("Best mix END") } TemplateSpinBox { from: 1 to: 99 stepSize: 1 value: 20 textFromValue: function (value, locale) { return value + qsTr("m") } onValueModified: { console.log("got value: " + value) } } TemplateCheckBox { text: qsTr("O2 narcotic") } } } TemplateSection { id: notes title: qsTr("Notes") ColumnLayout { visible: notes.isExpanded TemplateCheckBox { text: qsTr("Display runtime") } TemplateCheckBox { text: qsTr("Display segment duration") } TemplateCheckBox { text: qsTr("Display transitions in deco") } TemplateCheckBox { text: qsTr("Verbatim dive plan") } TemplateCheckBox { text: qsTr("Display plan variations") } } } } }