summaryrefslogtreecommitdiffstats
path: root/qt-mobile
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-12-07 22:24:56 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-12-07 22:24:56 -0800
commit8baae6a3b6de67641ef603307727e5159b522519 (patch)
tree384f24583d3ae02ff0cf7ba4b8e7341096d6187f /qt-mobile
parent9e6991a0e16799cbd0205536e23654dce1153c30 (diff)
downloadsubsurface-8baae6a3b6de67641ef603307727e5159b522519.tar.gz
QML-UI: make dive edit almost sort of work
So this has a lot of caveats: - right now it only works for buddy, divemaster and suit - you have to actually exit the field with your cursor or the change doesn't take - that's ridiculous, there must be a far more clever way to do this - because I use the onEditingFinished handler I can't do this for the Notes (so here's another reason why I KNOW that this is the wrong way to do this) But it shows in principle how this could be done and once someone who actually knows what they are doing gets their hands on the code I'm optimistic that this can be morphed into something much more useful. It does tie together the changes made in the previous commits so that both clicking around on the dive list gives the expected results and synching the data back to the cloud actually works. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-mobile')
-rw-r--r--qt-mobile/qml/DiveDetails.qml3
-rw-r--r--qt-mobile/qml/DiveDetailsEdit.qml16
-rw-r--r--qt-mobile/qmlmanager.cpp4
3 files changed, 21 insertions, 2 deletions
diff --git a/qt-mobile/qml/DiveDetails.qml b/qt-mobile/qml/DiveDetails.qml
index dc2087a34..b815a04cc 100644
--- a/qt-mobile/qml/DiveDetails.qml
+++ b/qt-mobile/qml/DiveDetails.qml
@@ -49,6 +49,9 @@ MobileComponents.Page {
checkable: true
iconName: checked ? "view-readermode" : "document-edit"
onTriggered: {
+ if (diveDetailsWindow.state == "edit") {
+ manager.commitChanges(dive_id, suit, buddy, divemaster, notes);
+ }
diveDetailsWindow.state = checked ? "edit" : "view";
contextDrawer.close();
// close drawer?
diff --git a/qt-mobile/qml/DiveDetailsEdit.qml b/qt-mobile/qml/DiveDetailsEdit.qml
index 7648eaf3f..e3545535c 100644
--- a/qt-mobile/qml/DiveDetailsEdit.qml
+++ b/qt-mobile/qml/DiveDetailsEdit.qml
@@ -65,6 +65,9 @@ Item {
id: txtSuit
text: suit
Layout.fillWidth: true
+ onEditingFinished: {
+ suit = text;
+ }
}
MobileComponents.Label {
@@ -75,6 +78,9 @@ Item {
id: txtBuddy
text: buddy
Layout.fillWidth: true
+ onEditingFinished: {
+ buddy = text;
+ }
}
MobileComponents.Label {
@@ -85,6 +91,9 @@ Item {
id: txtDiveMaster
text: divemaster
Layout.fillWidth: true
+ onEditingFinished: {
+ divemaster = text;
+ }
}
MobileComponents.Label {
@@ -100,6 +109,11 @@ Item {
Layout.minimumHeight: MobileComponents.Units.gridUnit * 6
selectByMouse: true
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+// there is no onEditingFinished signal... not sure how to get the value
+// out of this field when we're done editing
+// onEditingFinished: {
+// diveDetailsWindow.notes = text;
+// }
}
}
Item {
@@ -107,4 +121,4 @@ Item {
width: height // just to make sure the spacer doesn't produce scrollbars, but also isn't null
}
}
-} \ No newline at end of file
+}
diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp
index 0fbdac286..13749caa4 100644
--- a/qt-mobile/qmlmanager.cpp
+++ b/qt-mobile/qmlmanager.cpp
@@ -250,8 +250,10 @@ void QMLManager::commitChanges(QString diveId, QString suit, QString buddy, QStr
free(d->notes);
d->notes = strdup(notes.toUtf8().data());
}
- if (diveChanged)
+ if (diveChanged) {
+ DiveListModel::instance()->updateDive(d);
mark_divelist_changed(true);
+ }
}
void QMLManager::saveChanges()