diff options
author | Joakim Bygdell <j.bygdell@gmail.com> | 2016-09-12 20:30:07 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-09-17 13:46:15 -0700 |
commit | 1219dc693170e4a04fff992bd5aed990674779c1 (patch) | |
tree | d81c6c58626c4fbed1b9b0605e015263c7056517 | |
parent | ed11dab7fb4564369339e580511fa7913362b77b (diff) | |
download | subsurface-1219dc693170e4a04fff992bd5aed990674779c1.tar.gz |
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 <dirk@hohndel.org>
-rw-r--r-- | core/subsurface-qt/DiveObjectHelper.cpp | 1 | ||||
-rw-r--r-- | mobile-widgets/qml/DiveDetails.qml | 6 | ||||
-rw-r--r-- | mobile-widgets/qmlmanager.cpp | 14 |
3 files changed, 17 insertions, 4 deletions
diff --git a/core/subsurface-qt/DiveObjectHelper.cpp b/core/subsurface-qt/DiveObjectHelper.cpp index 37f954cb7..246e4510b 100644 --- a/core/subsurface-qt/DiveObjectHelper.cpp +++ b/core/subsurface-qt/DiveObjectHelper.cpp @@ -425,6 +425,7 @@ QStringList DiveObjectHelper::buddyList() const QRegExp sep("(,\\s)"); QStringList tempList = temp.split(sep); buddies << tempList; + buddies << "Multiple Buddies"; } } buddies.removeDuplicates(); 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; |