aboutsummaryrefslogtreecommitdiffstats
path: root/mobile-widgets/qml/DiveDetailsEdit.qml
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2016-04-04 22:02:03 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-04-04 22:33:58 -0700
commit7be962bfc2879a72c32ff67518731347dcdff6de (patch)
treed05bf7ab234a448ee37a15b608e2b939f2285d07 /mobile-widgets/qml/DiveDetailsEdit.qml
parent2d760a7bff71c46c5aeba37c40d236ea16eefea2 (diff)
downloadsubsurface-7be962bfc2879a72c32ff67518731347dcdff6de.tar.gz
Move subsurface-core to core and qt-mobile to mobile-widgets
Having subsurface-core as a directory name really messes with autocomplete and is obviously redundant. Simmilarly, qt-mobile caused an autocomplete conflict and also was inconsistent with the desktop-widget name for the directory containing the "other" UI. And while cleaning up the resulting change in the path name for include files, I decided to clean up those even more to make them consistent overall. This could have been handled in more commits, but since this requires a make clean before the build, it seemed more sensible to do it all in one. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'mobile-widgets/qml/DiveDetailsEdit.qml')
-rw-r--r--mobile-widgets/qml/DiveDetailsEdit.qml236
1 files changed, 236 insertions, 0 deletions
diff --git a/mobile-widgets/qml/DiveDetailsEdit.qml b/mobile-widgets/qml/DiveDetailsEdit.qml
new file mode 100644
index 000000000..e4338b3b8
--- /dev/null
+++ b/mobile-widgets/qml/DiveDetailsEdit.qml
@@ -0,0 +1,236 @@
+import QtQuick 2.3
+import QtQuick.Controls 1.2
+import QtQuick.Controls.Styles 1.2
+import QtQuick.Dialogs 1.2
+import QtQuick.Layouts 1.1
+import org.subsurfacedivelog.mobile 1.0
+import org.kde.kirigami 1.0 as Kirigami
+
+Item {
+ id: detailsEdit
+ property int dive_id
+ property int number
+ property alias dateText: txtDate.text
+ property alias locationText: txtLocation.text
+ property string gpsText
+ property alias airtempText: txtAirTemp.text
+ property alias watertempText: txtWaterTemp.text
+ property alias suitText: txtSuit.text
+ property alias buddyText: txtBuddy.text
+ property alias divemasterText: txtDiveMaster.text
+ property alias notesText: txtNotes.text
+ property alias durationText: txtDuration.text
+ property alias depthText: txtDepth.text
+ property alias weightText: txtWeight.text
+ property alias startpressureText: txtStartPressure.text
+ property alias endpressureText: txtEndPressure.text
+ property alias gasmixText: txtGasMix.text
+
+ function saveData() {
+ // apply the changes to the dive_table
+ manager.commitChanges(dive_id, detailsEdit.dateText, detailsEdit.locationText, detailsEdit.gpsText, detailsEdit.durationText,
+ detailsEdit.depthText, detailsEdit.airtempText, detailsEdit.watertempText, detailsEdit.suitText,
+ detailsEdit.buddyText, detailsEdit.divemasterText, detailsEdit.weightText, detailsEdit.notesText,
+ detailsEdit.startpressureText, detailsEdit.endpressureText, detailsEdit.gasmixText)
+ // trigger the profile to be redrawn
+ QMLProfile.diveId = dive_id
+
+ // apply the changes to the dive detail view - since the edit could have changed the order
+ // first make sure that we are looking at the correct dive - our model allows us to look
+ // up the index based on the unique dive_id
+ var newIdx = diveModel.getIdxForId(dive_id)
+ diveDetailsListView.currentIndex = newIdx
+ diveDetailsListView.currentItem.modelData.date = detailsEdit.dateText
+ diveDetailsListView.currentItem.modelData.location = detailsEdit.locationText
+ diveDetailsListView.currentItem.modelData.duration = detailsEdit.durationText
+ diveDetailsListView.currentItem.modelData.depth = detailsEdit.depthText
+ diveDetailsListView.currentItem.modelData.airtemp = detailsEdit.airtempText
+ diveDetailsListView.currentItem.modelData.watertemp = detailsEdit.watertempText
+ diveDetailsListView.currentItem.modelData.suit = detailsEdit.suitText
+ diveDetailsListView.currentItem.modelData.buddy = detailsEdit.buddyText
+ diveDetailsListView.currentItem.modelData.divemaster = detailsEdit.divemasterText
+ diveDetailsListView.currentItem.modelData.notes = detailsEdit.notesText
+ diveDetailsPage.state = "view"
+ Qt.inputMethod.hide()
+ // now make sure we directly show the saved dive (this may be a new dive, or it may have moved)
+ showDiveIndex(newIdx)
+ }
+
+ height: editArea.height
+ ColumnLayout {
+ id: editArea
+ spacing: Kirigami.Units.smallSpacing
+ width: subsurfaceTheme.columnWidth - 2 * Kirigami.Units.gridUnit
+
+ GridLayout {
+ id: editorDetails
+ width: parent.width
+ columns: 2
+
+ Kirigami.Heading {
+ Layout.columnSpan: 2
+ text: "Dive " + number
+ }
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Date:"
+ }
+ TextField {
+ id: txtDate;
+ Layout.fillWidth: true
+ }
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Location:"
+ }
+ TextField {
+ id: txtLocation;
+ Layout.fillWidth: true
+ }
+
+ // we should add a checkbox here that allows the user
+ // to add the current location as the dive location
+ // (think of someone adding a dive while on the boat or
+ // at the dive site)
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Use current\nGPS location:"
+ }
+ CheckBox {
+ id: checkboxGPS
+ onCheckedChanged: {
+ if (checked)
+ gpsText = manager.getCurrentPosition()
+ }
+ }
+
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Depth:"
+ }
+ TextField {
+ id: txtDepth
+ Layout.fillWidth: true
+ validator: RegExpValidator { regExp: /[^-]*/ }
+ }
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Duration:"
+ }
+ TextField {
+ id: txtDuration
+ Layout.fillWidth: true
+ validator: RegExpValidator { regExp: /[^-]*/ }
+ }
+
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Air Temp:"
+ }
+ TextField {
+ id: txtAirTemp
+ Layout.fillWidth: true
+ }
+
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Water Temp:"
+ }
+ TextField {
+ id: txtWaterTemp
+ Layout.fillWidth: true
+ }
+
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Suit:"
+ }
+ TextField {
+ id: txtSuit
+ Layout.fillWidth: true
+ }
+
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Buddy:"
+ }
+ TextField {
+ id: txtBuddy
+ Layout.fillWidth: true
+ }
+
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Dive Master:"
+ }
+ TextField {
+ id: txtDiveMaster
+ Layout.fillWidth: true
+ }
+
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Weight:"
+ }
+ TextField {
+ id: txtWeight
+ readOnly: (text == "cannot edit multiple weight systems" ? true : false)
+ Layout.fillWidth: true
+ }
+
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Gas mix:"
+ }
+ TextField {
+ id: txtGasMix
+ readOnly: (text == "cannot edit multiple gases" ? true : false)
+ Layout.fillWidth: true
+ validator: RegExpValidator { regExp: /(EAN100|EAN\d\d|AIR|100|\d{1,2}|\d{1,2}\/\d{1,2})/ }
+ }
+
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Start Pressure:"
+ }
+ TextField {
+ id: txtStartPressure
+ readOnly: (text == "cannot edit multiple cylinders" ? true : false)
+ Layout.fillWidth: true
+ }
+
+ Kirigami.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "End Pressure:"
+ }
+ TextField {
+ id: txtEndPressure
+ readOnly: (text == "cannot edit multiple cylinders" ? true : false)
+ Layout.fillWidth: true
+ }
+
+
+ Kirigami.Label {
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignLeft
+ text: "Notes:"
+ }
+ TextArea {
+ Layout.columnSpan: 2
+ width: parent.width
+ id: txtNotes
+ textFormat: TextEdit.RichText
+ focus: true
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Layout.minimumHeight: Kirigami.Units.gridUnit * 6
+ selectByMouse: true
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ }
+ }
+ Item {
+ height: Kirigami.Units.gridUnit * 3
+ width: height // just to make sure the spacer doesn't produce scrollbars, but also isn't null
+ }
+ }
+}