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>
This commit is contained in:
Dirk Hohndel 2015-12-07 22:24:56 -08:00
parent 9e6991a0e1
commit 8baae6a3b6
3 changed files with 21 additions and 2 deletions

View file

@ -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?

View file

@ -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
}
}
}
}

View file

@ -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()