From 0a4192ca1c39e904c9632f6e355c8ba0964ecefe Mon Sep 17 00:00:00 2001
From: Kevin Whitaker <eyecreate@eyecreate.org>
Date: Wed, 29 Jul 2020 12:01:23 -0400
Subject: [PATCH] Have record class emit when data has changed and update
 warnings when data has changed.

---
 src/contents/ui/main.qml    | 13 +++++++++++--
 src/db/sqlservicerecord.cpp |  2 ++
 src/db/sqlservicerecord.h   |  2 ++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/contents/ui/main.qml b/src/contents/ui/main.qml
index a6511c4..096101b 100644
--- a/src/contents/ui/main.qml
+++ b/src/contents/ui/main.qml
@@ -262,8 +262,18 @@ Kirigami.ApplicationWindow {
                     property var serviceId: Kirigami.PageRouter.data.id
                     Component.onCompleted: {
                         recordModel.changeVehicleFilter(serviceId);
+                        //Check vehicle warnings
                         dbAnalytics.checkOilChangeNeededForVehicle(serviceId);
                     }
+                    Connections {
+                        target: recordModel
+                        function onVehicleUpdated(vehicleId) {
+                            //Check vehicle warnings
+                            if(vehicleId == serviceId) {
+                                dbAnalytics.checkOilChangeNeededForVehicle(vehicleId);
+                            }
+                        }
+                    }
                     id: serviceRecordPage
                     title: qsTr("Service Records for ") + Kirigami.PageRouter.data.name
                     mainAction: Kirigami.Action {
@@ -290,7 +300,7 @@ Kirigami.ApplicationWindow {
                                         text: qsTr("You are due for an oil change!")
                                         Connections {
                                             target: dbAnalytics
-                                            onIsOilChangeNeeded: {
+                                            function onIsOilChangeNeeded(changeNeeded) {
                                                 oilMessage.visible = changeNeeded;
                                             }
                                         }
@@ -441,7 +451,6 @@ Kirigami.ApplicationWindow {
                                         }
                                         if(milesField.acceptableInput) {
                                             recordModel.addNewRecord(providerField.text, typeField.currentValue, typeText, dateObj.toISOString(), parseInt(milesField.text), notesField.text);
-                                            //TODO: check if emit signal to car warnings.
                                             router.popRoute();
                                         } else {
                                             formError.text = qsTr("Invalid number of miles.");
diff --git a/src/db/sqlservicerecord.cpp b/src/db/sqlservicerecord.cpp
index 7509c8e..ed7a842 100644
--- a/src/db/sqlservicerecord.cpp
+++ b/src/db/sqlservicerecord.cpp
@@ -71,6 +71,7 @@ void SqlServiceRecord::addNewRecord(int vehicleId, QString serviceProvider, int
         printf("inserted new service record\n");
         this->database().commit();
         this->select();
+        emit this->vehicleUpdated(this->currentVehicleID);
     } else {
         this->database().rollback();
         printf("database error\n");
@@ -84,6 +85,7 @@ void SqlServiceRecord::removeRecord(int index)
         printf("removed service record\n");
         this->database().commit();
         this->select();
+        emit this->vehicleUpdated(this->currentVehicleID);
     } else {
         this->database().rollback();
         printf("database error\n");
diff --git a/src/db/sqlservicerecord.h b/src/db/sqlservicerecord.h
index 6816686..8069207 100644
--- a/src/db/sqlservicerecord.h
+++ b/src/db/sqlservicerecord.h
@@ -35,6 +35,8 @@ public:
     Q_INVOKABLE void removeRecord(int index);
     Q_INVOKABLE void changeVehicleFilter(int id);
     
+signals:
+    void vehicleUpdated(int vehicleId);
 private:
     int currentVehicleID = 0;
 
-- 
GitLab