[PATCH 2/3] QML UI: add comboboxes to DiveDetailsEdit

Joakim Bygdell j.bygdell at gmail.com
Mon May 16 10:59:05 PDT 2016


This adds autocompleting text input fields for suit, buddy and
divemaster.

Signed-off-by: Joakim Bygdell <j.bygdell at gmail.com>
---
 core/subsurface-qt/DiveObjectHelper.cpp | 18 ++++++++--------
 mobile-widgets/qml/DiveDetails.qml      | 12 +++++------
 mobile-widgets/qml/DiveDetailsEdit.qml  | 37 ++++++++++++++++++++-------------
 3 files changed, 38 insertions(+), 29 deletions(-)

diff --git a/core/subsurface-qt/DiveObjectHelper.cpp b/core/subsurface-qt/DiveObjectHelper.cpp
index 9f694c5..e71b076 100644
--- a/core/subsurface-qt/DiveObjectHelper.cpp
+++ b/core/subsurface-qt/DiveObjectHelper.cpp
@@ -371,9 +371,9 @@ QStringList DiveObjectHelper::suitList() const
 		if (!temp.isEmpty())
 			suits << d->suit;
 	}
-       suits.removeDuplicates();
-       suits.sort();
-       return suits;
+	suits.removeDuplicates();
+	suits.sort();
+	return suits;
 }
 
 QStringList DiveObjectHelper::buddyList() const
@@ -392,9 +392,9 @@ QStringList DiveObjectHelper::buddyList() const
 			buddies << tempList;
 		}
 	}
-       buddies.removeDuplicates();
-       buddies.sort();
-       return buddies;
+	buddies.removeDuplicates();
+	buddies.sort();
+	return buddies;
 }
 
 QStringList DiveObjectHelper::divemasterList() const
@@ -407,7 +407,7 @@ QStringList DiveObjectHelper::divemasterList() const
 		if (!temp.isEmpty())
 			divemasters << d->divemaster;
 	}
-       divemasters.removeDuplicates();
-       divemasters.sort();
-       return divemasters;
+	divemasters.removeDuplicates();
+	divemasters.sort();
+	return divemasters;
 }
diff --git a/mobile-widgets/qml/DiveDetails.qml b/mobile-widgets/qml/DiveDetails.qml
index 8e258d7..167eb69 100644
--- a/mobile-widgets/qml/DiveDetails.qml
+++ b/mobile-widgets/qml/DiveDetails.qml
@@ -15,14 +15,14 @@ Kirigami.Page {
 	property alias date: detailsEdit.dateText
 	property alias airtemp: detailsEdit.airtempText
 	property alias watertemp: detailsEdit.watertempText
-	property alias buddy: detailsEdit.buddyText
-	property alias divemaster: detailsEdit.divemasterText
+    property alias buddyIndex: detailsEdit.buddyIndex
+    property alias divemasterIndex: detailsEdit.divemasterIndex
 	property alias depth: detailsEdit.depthText
 	property alias duration: detailsEdit.durationText
 	property alias location: detailsEdit.locationText
 	property alias gps: detailsEdit.gpsText
 	property alias notes: detailsEdit.notesText
-	property alias suit: detailsEdit.suitText
+    property alias suitIndex: detailsEdit.suitIndex
 	property alias weight: detailsEdit.weightText
 	property alias startpressure: detailsEdit.startpressureText
 	property alias endpressure: detailsEdit.endpressureText
@@ -149,9 +149,9 @@ Kirigami.Page {
 		depth = diveDetailsListView.currentItem.modelData.dive.depth
 		airtemp = diveDetailsListView.currentItem.modelData.dive.airTemp
 		watertemp = diveDetailsListView.currentItem.modelData.dive.waterTemp
-		suit = diveDetailsListView.currentItem.modelData.dive.suit
-		buddy = diveDetailsListView.currentItem.modelData.dive.buddy
-		divemaster = diveDetailsListView.currentItem.modelData.dive.divemaster
+        suitIndex = diveDetailsListView.currentItem.modelData.dive.suitList.indexOf(diveDetailsListView.currentItem.modelData.dive.suit)
+        buddyIndex = diveDetailsListView.currentItem.modelData.dive.buddyList.indexOf(diveDetailsListView.currentItem.modelData.dive.buddy)
+        divemasterIndex = diveDetailsListView.currentItem.modelData.dive.divemasterList.indexOf(diveDetailsListView.currentItem.modelData.dive.divemaster)
 		notes = diveDetailsListView.currentItem.modelData.dive.notes
 		if (diveDetailsListView.currentItem.modelData.dive.singleWeight) {
 			// we have only one weight, go ahead, have fun and edit it
diff --git a/mobile-widgets/qml/DiveDetailsEdit.qml b/mobile-widgets/qml/DiveDetailsEdit.qml
index 7ff511d..9986d23 100644
--- a/mobile-widgets/qml/DiveDetailsEdit.qml
+++ b/mobile-widgets/qml/DiveDetailsEdit.qml
@@ -15,9 +15,9 @@ Item {
 	property alias gpsText: txtGps.text
 	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 suitIndex: suitBox.currentIndex
+	property alias buddyIndex: buddyBox.currentIndex
+	property alias divemasterIndex: divemasterBox.currentIndex
 	property alias notesText: txtNotes.text
 	property alias durationText: txtDuration.text
 	property alias depthText: txtDepth.text
@@ -30,8 +30,8 @@ Item {
 	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.depthText, detailsEdit.airtempText, detailsEdit.watertempText, suitBox.editText,
+				      buddyBox.editText, divemasterBox.editText, detailsEdit.weightText, detailsEdit.notesText,
 				      detailsEdit.startpressureText, detailsEdit.endpressureText, detailsEdit.gasmixText)
 		// trigger the profile to be redrawn
 		QMLProfile.diveId = dive_id
@@ -47,9 +47,9 @@ Item {
 		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.suit = suitBox.currentText
+		diveDetailsListView.currentItem.modelData.buddy = buddyBox.currentText
+		diveDetailsListView.currentItem.modelData.divemaster = divemasterBox.currentText
 		diveDetailsListView.currentItem.modelData.notes = detailsEdit.notesText
 		diveDetailsPage.state = "view"
 		Qt.inputMethod.hide()
@@ -154,8 +154,11 @@ Item {
 				Layout.alignment: Qt.AlignRight
 				text: qsTr("Suit:")
 			}
-			StyledTextField {
-				id: txtSuit
+			ComboBox {
+				id: suitBox
+				editable: true
+				model: diveDetailsListView.currentItem.modelData.dive.suitList
+				inputMethodHints: Qt.ImhNoPredictiveText
 				Layout.fillWidth: true
 			}
 
@@ -163,8 +166,11 @@ Item {
 				Layout.alignment: Qt.AlignRight
 				text: qsTr("Buddy:")
 			}
-			StyledTextField {
-				id: txtBuddy
+			ComboBox {
+				id: buddyBox
+				editable: true
+				model: diveDetailsListView.currentItem.modelData.dive.buddyList
+				inputMethodHints: Qt.ImhNoPredictiveText
 				Layout.fillWidth: true
 			}
 
@@ -172,8 +178,11 @@ Item {
 				Layout.alignment: Qt.AlignRight
 				text: qsTr("Dive Master:")
 			}
-			StyledTextField {
-				id: txtDiveMaster
+			ComboBox {
+				id: divemasterBox
+				editable: true
+				model: diveDetailsListView.currentItem.modelData.dive.divemasterList
+				inputMethodHints: Qt.ImhNoPredictiveText
 				Layout.fillWidth: true
 			}
 
-- 
2.5.4 (Apple Git-61)



More information about the subsurface mailing list