Add menu (delete, edit) to journey list items
authorDavid Llewellyn-Jones <david@flypig.co.uk>
Sat, 14 Jul 2018 19:08:51 +0000 (20:08 +0100)
committerDavid Llewellyn-Jones <david@flypig.co.uk>
Sat, 14 Jul 2018 19:08:51 +0000 (20:08 +0100)
qml/pages/JourneyList.qml
src/journeymodel.cpp
src/journeymodel.h
translations/harbour-pedalo-de.ts
translations/harbour-pedalo.ts

index 0468df0..8831f40 100644 (file)
@@ -15,8 +15,9 @@ Page {
         header: PageHeader {
             title: qsTr("Journey list")
         }
         header: PageHeader {
             title: qsTr("Journey list")
         }
-        delegate: BackgroundItem {
+        delegate: ListItem {
             id: delegate
             id: delegate
+            menu: journeyMenuComponent
 
             Row {
                 spacing: Theme.paddingLarge
 
             Row {
                 spacing: Theme.paddingLarge
@@ -39,6 +40,26 @@ Page {
                 }
             }
             onClicked: pageStack.push(Qt.resolvedUrl("AddJourney.qml"), {title: "Edit journey", index: index, start: journeymodel.epochToDateTime(start), duration: duration, overtook: overtook, overtakenby: overtakenby})
                 }
             }
             onClicked: pageStack.push(Qt.resolvedUrl("AddJourney.qml"), {title: "Edit journey", index: index, start: journeymodel.epochToDateTime(start), duration: duration, overtook: overtook, overtakenby: overtakenby})
+
+            Component {
+                id: journeyMenuComponent
+                ContextMenu {
+                    MenuItem {
+                        text: qsTr("Edit")
+                        onClicked: pageStack.push(Qt.resolvedUrl("AddJourney.qml"), {title: "Edit journey", index: index, start: journeymodel.epochToDateTime(start), duration: duration, overtook: overtook, overtakenby: overtakenby})
+                    }
+                    MenuItem {
+                        text: qsTr("Delete")
+                        onClicked: remove(index)
+                    }
+                }
+            }
+
+            function remove(index) {
+                remorseAction(qsTr("Deleting journey"), function() {
+                    onClicked: journeymodel.deleteJourney(index)
+                })
+            }
         }
         VerticalScrollDecorator {}
     }
         }
         VerticalScrollDecorator {}
     }
index 80a5eb5..5b7b5da 100644 (file)
@@ -30,6 +30,12 @@ void JourneyModel::editJourney(quint32 index, QDateTime start, quint32 duration,
     emit dataChanged(createIndex(index, 0), createIndex(index, 0));
 }
 
     emit dataChanged(createIndex(index, 0), createIndex(index, 0));
 }
 
+void JourneyModel::deleteJourney(quint32 index) {
+    beginRemoveRows(QModelIndex(), index, index);
+    journeys.removeAt(index);
+    endRemoveRows();
+}
+
 int JourneyModel::rowCount(const QModelIndex & parent) const {
     Q_UNUSED(parent)
     return journeys.count();
 int JourneyModel::rowCount(const QModelIndex & parent) const {
     Q_UNUSED(parent)
     return journeys.count();
@@ -99,9 +105,7 @@ void JourneyModel::importFromFile(QFile & file) {
 QDate JourneyModel::epochToDate(quint64 epoch) {
     QDateTime date;
 
 QDate JourneyModel::epochToDate(quint64 epoch) {
     QDateTime date;
 
-    qDebug() << "Epoch: " << epoch;
     date.setMSecsSinceEpoch(epoch);
     date.setMSecsSinceEpoch(epoch);
-    qDebug() << "Date: " << date.date();
     return date.date();
 }
 
     return date.date();
 }
 
index a068b14..910821c 100644 (file)
@@ -25,6 +25,7 @@ public:
     void addJourney(const Journey &journey);
     Q_INVOKABLE void addJourney(QDateTime start, quint32 duration, quint32 overtook, quint32 overtakenby);
     Q_INVOKABLE void editJourney(quint32 index, QDateTime start, quint32 duration, quint32 overtook, quint32 overtakenby);
     void addJourney(const Journey &journey);
     Q_INVOKABLE void addJourney(QDateTime start, quint32 duration, quint32 overtook, quint32 overtakenby);
     Q_INVOKABLE void editJourney(quint32 index, QDateTime start, quint32 duration, quint32 overtook, quint32 overtakenby);
+    Q_INVOKABLE void deleteJourney(quint32 index);
 
     int rowCount(const QModelIndex & parent = QModelIndex()) const;
 
 
     int rowCount(const QModelIndex & parent = QModelIndex()) const;
 
index 2a19b3f..bb23457 100644 (file)
         <source>Journey list</source>
         <translation type="unfinished"></translation>
     </message>
         <source>Journey list</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deleting journey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MainPage</name>
 </context>
 <context>
     <name>MainPage</name>
index 74b615b..e580051 100644 (file)
         <source>Journey list</source>
         <translation type="unfinished"></translation>
     </message>
         <source>Journey list</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deleting journey</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MainPage</name>
 </context>
 <context>
     <name>MainPage</name>