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

Signed-off-by: Joakim Bygdell <j.bygd...@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)

_______________________________________________
subsurface mailing list
subsurface@subsurface-divelog.org
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to