summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mobile-widgets/qml/DiveList.qml11
-rw-r--r--mobile-widgets/qmlmanager.cpp17
-rw-r--r--mobile-widgets/qmlmanager.h1
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();