diff options
-rw-r--r-- | mobile-widgets/qml/DiveList.qml | 11 | ||||
-rw-r--r-- | mobile-widgets/qmlmanager.cpp | 17 | ||||
-rw-r--r-- | mobile-widgets/qmlmanager.h | 1 |
3 files changed, 28 insertions, 1 deletions
diff --git a/mobile-widgets/qml/DiveList.qml b/mobile-widgets/qml/DiveList.qml index cda60bf59..72d9d2da9 100644 --- a/mobile-widgets/qml/DiveList.qml +++ b/mobile-widgets/qml/DiveList.qml @@ -271,6 +271,15 @@ Kirigami.ScrollablePage { manager.addDiveToTrip(currentItem.myData.id, currentItem.myData.tripBelow) } } + property QtObject createTripForDiveAction: Kirigami.Action { + text: visible ? qsTr("Create trip with dive %1").arg(currentItem.myData.number) : "" + icon { name: ":/icons/list-add" } + visible: currentItem && currentItem.myData && !currentItem.myData.isTrip && currentItem.myData.isTopLevel + onTriggered: { + manager.addTripForDive(currentItem.myData.id) + } + } + property QtObject toggleInvalidAction: Kirigami.Action { text: currentItem && currentItem.myData && currentItem.myData.isInvalid ? qsTr("Mark dive as valid") : qsTr("Mark dive as invalid") // icon: { name: "TBD" } @@ -316,7 +325,7 @@ Kirigami.ScrollablePage { enabled: manager.redoText !== "" onTriggered: manager.redo() } - property variant contextactions: [ removeDiveFromTripAction, addDiveToTripAboveAction, addDiveToTripBelowAction, toggleInvalidAction, deleteAction, mapAction, tripDetailsEdit, undoAction, redoAction ] + property variant contextactions: [ removeDiveFromTripAction, createTripForDiveAction, addDiveToTripAboveAction, addDiveToTripBelowAction, toggleInvalidAction, deleteAction, mapAction, tripDetailsEdit, undoAction, redoAction ] function setupActions() { if (Backend.cloud_verification_status === Enums.CS_VERIFIED || Backend.cloud_verification_status === Enums.CS_NOCLOUD) { diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp index 06bc5d8ef..86f199ae7 100644 --- a/mobile-widgets/qmlmanager.cpp +++ b/mobile-widgets/qmlmanager.cpp @@ -1231,6 +1231,23 @@ void QMLManager::removeDiveFromTrip(int id) changesNeedSaving(); } +void QMLManager::addTripForDive(int id) +{ + struct dive *d = get_dive_by_uniq_id(id); + if (!d) { + appendTextToLog(QString("Asked to create trip for non-existing dive with id %1").arg(id)); + return; + } + if (d->divetrip) { + appendTextToLog(QString("Asked to create trip for dive %1 with id %2 but it's already part of a trip with location %3.").arg(d->number).arg(id).arg(d->divetrip->location)); + return; + } + QVector <dive *> dives; + dives.append(d); + Command::createTrip(dives); + changesNeedSaving(); +} + void QMLManager::addDiveToTrip(int id, int tripId) { struct dive *d = get_dive_by_uniq_id(id); diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h index b124ea7e6..cadbe4973 100644 --- a/mobile-widgets/qmlmanager.h +++ b/mobile-widgets/qmlmanager.h @@ -178,6 +178,7 @@ public slots: QStringList endpressure, QStringList gasmix, QStringList usedCylinder, int rating, int visibility, QString state); void updateTripDetails(QString tripIdString, QString tripLocation, QString tripNotes); void removeDiveFromTrip(int id); + void addTripForDive(int id); void addDiveToTrip(int id, int tripId); void changesNeedSaving(); void openNoCloudRepo(); |