From 1219dc693170e4a04fff992bd5aed990674779c1 Mon Sep 17 00:00:00 2001 From: Joakim Bygdell Date: Mon, 12 Sep 2016 20:30:07 +0200 Subject: QML UI: deal with multiple buddies correctly When editing adive in Subsurface-mobile we can only handle one buddy due to the limitations of the combobox. To prevent loss of data when editing a dive with more than one buddy we display "Multiple Buddies" in the buddy field. This creates a special case where no changes are written to the buddy field unless the user changes buddy for that dive. Signed-off-by: Dirk Hohndel --- mobile-widgets/qml/DiveDetails.qml | 6 +++++- mobile-widgets/qmlmanager.cpp | 14 +++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) (limited to 'mobile-widgets') diff --git a/mobile-widgets/qml/DiveDetails.qml b/mobile-widgets/qml/DiveDetails.qml index 7f6ca81a0..be342886d 100644 --- a/mobile-widgets/qml/DiveDetails.qml +++ b/mobile-widgets/qml/DiveDetails.qml @@ -156,7 +156,11 @@ Kirigami.Page { airtemp = diveDetailsListView.currentItem.modelData.dive.airTemp watertemp = diveDetailsListView.currentItem.modelData.dive.waterTemp suitIndex = diveDetailsListView.currentItem.modelData.dive.suitList.indexOf(diveDetailsListView.currentItem.modelData.dive.suit) - buddyIndex = diveDetailsListView.currentItem.modelData.dive.buddyList.indexOf(diveDetailsListView.currentItem.modelData.dive.buddy) + if (diveDetailsListView.currentItem.modelData.dive.buddy.search(",")) { + buddyIndex = diveDetailsListView.currentItem.modelData.dive.buddyList.indexOf("Multiple Buddies"); + } else { + 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) { diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp index 9de5ac1c8..1b9aebe10 100644 --- a/mobile-widgets/qmlmanager.cpp +++ b/mobile-widgets/qmlmanager.cpp @@ -869,9 +869,17 @@ void QMLManager::commitChanges(QString diveId, QString date, QString location, Q d->suit = strdup(qPrintable(suit)); } if (myDive->buddy() != buddy) { - diveChanged = true; - free(d->buddy); - d->buddy = strdup(qPrintable(buddy)); + if (myDive->buddy().contains(",")) { + if (!buddy.contains("Multiple Buddies")) { + diveChanged = true; + free(d->buddy); + d->buddy = strdup(qPrintable(buddy)); + } + } else { + diveChanged = true; + free(d->buddy); + d->buddy = strdup(qPrintable(buddy)); + } } if (myDive->divemaster() != diveMaster) { diveChanged = true; -- cgit v1.2.3-70-g09d2