mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
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>
This commit is contained in:
parent
ed11dab7fb
commit
1219dc6931
3 changed files with 17 additions and 4 deletions
|
@ -425,6 +425,7 @@ QStringList DiveObjectHelper::buddyList() const
|
|||
QRegExp sep("(,\\s)");
|
||||
QStringList tempList = temp.split(sep);
|
||||
buddies << tempList;
|
||||
buddies << "Multiple Buddies";
|
||||
}
|
||||
}
|
||||
buddies.removeDuplicates();
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue