mobile UI: add ability to remove dive from its trip

If we remove the newest dive from its trip, it becomes inaccessible in the app,
but the dive data saved to disk appears to be correct.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2020-02-19 14:06:03 -08:00
parent 968278fe91
commit 3464e776e2
3 changed files with 26 additions and 1 deletions

View file

@ -59,7 +59,14 @@ Kirigami.Page {
background: Rectangle { color: subsurfaceTheme.backgroundColor }
width: rootItem.colWidth
property QtObject removeDiveFromTripAction: Kirigami.Action { text: qsTr ("Remove dive from trip <TBD>") }
property QtObject removeDiveFromTripAction: Kirigami.Action {
text: qsTr ("Remove this dive from trip")
enabled: currentItem && currentItem.modelData.diveInTrip
onTriggered: {
manager.appendTextToLog("remove dive #" + currentItem.modelData.number + " from its trip")
manager.removeDiveFromTrip(currentItem.modelData.id)
}
}
property QtObject addDiveToTripAction: Kirigami.Action { text: qsTr ("Add dive to trip <TBD>") }
property QtObject undoAction: Kirigami.Action {
text: qsTr("Undo") + " " + manager.undoText

View file

@ -1282,6 +1282,23 @@ void QMLManager::commitChanges(QString diveId, QString number, QString date, QSt
}
}
void QMLManager::removeDiveFromTrip(int id)
{
struct dive *d = get_dive_by_uniq_id(id);
if (!d) {
appendTextToLog(QString("Asked to remove non-existing dive with id %1 from its trip.").arg(id));
return;
}
if (!d->divetrip) {
appendTextToLog(QString("Asked to remove dive with id %1 from its trip (but it's not part of a trip).").arg(id));
return;
}
QVector <dive *> dives;
dives.append(d);
Command::removeDivesFromTrip(dives);
changesNeedSaving();
}
void QMLManager::changesNeedSaving()
{
// we no longer save right away on iOS because file access is so slow; on the other hand,

View file

@ -177,6 +177,7 @@ public slots:
QString watertemp, QString suit, QString buddy,
QString diveMaster, QString weight, QString notes, QStringList startpressure,
QStringList endpressure, QStringList gasmix, QStringList usedCylinder, int rating, int visibility, QString state);
void removeDiveFromTrip(int id);
void changesNeedSaving();
void openNoCloudRepo();
void saveChangesLocal();