Rename variables to prevent collision. Emit on db updates. Fix async function not getting arguments. Add icon on vehicles that show up when service is needed.

This commit is contained in:
2020-08-22 21:38:55 -04:00
parent e20d6ce723
commit 49a79f9dc6
5 changed files with 45 additions and 10 deletions

View File

@@ -12,5 +12,5 @@ target_link_libraries(vehiclevoyage Qt5::Core Qt5::Qml Qt5::Quick Qt5::QuickCont
install(TARGETS vehiclevoyage ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) install(TARGETS vehiclevoyage ${KF5_INSTALL_TARGETS_DEFAULT_ARGS})
if (CMAKE_SYSTEM_NAME STREQUAL "Android") if (CMAKE_SYSTEM_NAME STREQUAL "Android")
kirigami_package_breeze_icons(ICONS list-add application-javascript help-about edit-find edit-delete window-close mail-sent globe preferences-system edit-symbolic) kirigami_package_breeze_icons(ICONS list-add application-javascript help-about edit-find edit-delete window-close mail-sent globe preferences-system edit-symbolic dialog-information)
endif() endif()

View File

@@ -102,6 +102,40 @@ Kirigami.PageRoute {
text: year text: year
level: 4 level: 4
} }
Kirigami.Icon {
id: checkupIcon
visible: false
width: Kirigami.Units.iconSizes.smallMedium
height: Kirigami.Units.iconSizes.smallMedium
source: "dialog-information"
isMask: true
color: Kirigami.Theme.activeTextColor
MouseArea {
id: checkupMouse
hoverEnabled: true
anchors.fill: checkupIcon
}
Controls.ToolTip {
id: checkupTip
text: qsTr("Service is needed")
visible: checkupMouse.containsMouse
}
Connections {
target: dbAnalytics
function onIsOilChangeNeeded(changeNeeded, vehicleId) {
if(vehicleId == id) {
checkupIcon.visible = changeNeeded;
}
}
}
Component.onCompleted: {
//Check vehicle warnings
dbAnalytics.checkOilChangeNeededForVehicle(id, appAnalyticsSettings.value("milesForOilChange",5000), appAnalyticsSettings.value("monthsForOilChange",6));
}
}
} }
} }
actions: [ actions: [

View File

@@ -8,17 +8,17 @@ Kirigami.PageRoute {
Component { Component {
Kirigami.ScrollablePage { Kirigami.ScrollablePage {
property var vehicleId: Kirigami.PageRouter.data.id property var vehicleIndex: Kirigami.PageRouter.data.id
Component.onCompleted: { Component.onCompleted: {
recordModel.changeVehicleFilter(vehicleId); recordModel.changeVehicleFilter(vehicleIndex);
//Check vehicle warnings //Check vehicle warnings
dbAnalytics.checkOilChangeNeededForVehicle(vehicleId, appAnalyticsSettings.value("milesForOilChange",5000), appAnalyticsSettings.value("monthsForOilChange",6)); dbAnalytics.checkOilChangeNeededForVehicle(vehicleIndex, appAnalyticsSettings.value("milesForOilChange",5000), appAnalyticsSettings.value("monthsForOilChange",6));
} }
Connections { Connections {
target: recordModel target: recordModel
function onVehicleUpdated(vehicleId) { function onVehicleUpdated(vehicleId) {
//Check vehicle warnings //Check vehicle warnings
if(vehicleId == vehicleId) { if(vehicleId == vehicleIndex) {
dbAnalytics.checkOilChangeNeededForVehicle(vehicleId, appAnalyticsSettings.value("milesForOilChange",5000), appAnalyticsSettings.value("monthsForOilChange",6)); dbAnalytics.checkOilChangeNeededForVehicle(vehicleId, appAnalyticsSettings.value("milesForOilChange",5000), appAnalyticsSettings.value("monthsForOilChange",6));
} }
} }
@@ -29,7 +29,7 @@ Kirigami.PageRoute {
text: qsTr("Add Service Record") text: qsTr("Add Service Record")
iconName: "list-add" iconName: "list-add"
onTriggered: { onTriggered: {
router.pushRoute({"route": "addrecord", "data": vehicleId}); router.pushRoute({"route": "addrecord", "data": vehicleIndex});
} }
} }
ListView { ListView {
@@ -49,8 +49,8 @@ Kirigami.PageRoute {
text: qsTr("You are due for an oil change!") text: qsTr("You are due for an oil change!")
Connections { Connections {
target: dbAnalytics target: dbAnalytics
function onIsOilChangeNeeded(changeNeeded, vehicle) { function onIsOilChangeNeeded(changeNeeded, vehicleId) {
if(vehicle == vehicleId) { if(vehicleId == vehicleIndex) {
oilMessage.visible = changeNeeded; oilMessage.visible = changeNeeded;
} }
} }

View File

@@ -26,7 +26,7 @@ RecordAnalytics::RecordAnalytics(QObject* parent, QSqlDatabase db) : _db(db)
void RecordAnalytics::checkOilChangeNeededForVehicle(int vehicleId, int milesForChange, int monthsForChange) void RecordAnalytics::checkOilChangeNeededForVehicle(int vehicleId, int milesForChange, int monthsForChange)
{ {
QtConcurrent::run([&](){ QtConcurrent::run([&](int vehicleId, int milesForChange, int monthsForChange){
QSqlQuery query = _db.exec("SELECT * FROM records WHERE records.vehicle = "+QString::number(vehicleId)); QSqlQuery query = _db.exec("SELECT * FROM records WHERE records.vehicle = "+QString::number(vehicleId));
int milesRecord = query.record().indexOf("miles"); int milesRecord = query.record().indexOf("miles");
int dateRecord = query.record().indexOf("servicedate"); int dateRecord = query.record().indexOf("servicedate");
@@ -50,7 +50,7 @@ void RecordAnalytics::checkOilChangeNeededForVehicle(int vehicleId, int milesFor
} else { } else {
emit this->isOilChangeNeeded(false, vehicleId); emit this->isOilChangeNeeded(false, vehicleId);
} }
}); },vehicleId, milesForChange, monthsForChange);
} }

View File

@@ -125,6 +125,7 @@ void SqlServiceRecord::updateRecord(int index, QString serviceProvider, QString
this->setRecord(index, record); this->setRecord(index, record);
this->database().commit(); this->database().commit();
this->select(); this->select();
emit this->vehicleUpdated(this->currentVehicleID);
} }