From 420d36a1a0fb59679e423fd8c7ea2d40419b0f91 Mon Sep 17 00:00:00 2001 From: Kevin Whitaker Date: Wed, 10 Jun 2020 13:31:17 -0400 Subject: [PATCH] Store service types that are builtin as numbers to reference in code easier. --- src/contents/ui/main.qml | 23 ++++++++++++++++++----- src/db/sqlservicerecord.cpp | 3 ++- src/db/sqlservicerecord.h | 2 +- src/main.cpp | 2 +- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/contents/ui/main.qml b/src/contents/ui/main.qml index 3838fdc..344eefb 100644 --- a/src/contents/ui/main.qml +++ b/src/contents/ui/main.qml @@ -8,6 +8,17 @@ Kirigami.ApplicationWindow { id: root title: "Vehicle Voyage" + + ListModel { + id: serviceTypeModel + ListElement {value: 0; text: qsTr("Oil and Filter Change");} + ListElement {value: 1; text: qsTr("Windshield Wiper Replacement");} + ListElement {value: 2; text: qsTr("Coolant Change");} + ListElement {value: 3; text: qsTr("Tire Rotation");} + ListElement {value: 4; text: qsTr("Timing Belt Change");} + ListElement {value: 5; text: qsTr("Serpentine Belt Changed");} + ListElement {value: -1; text: qsTr("Other");} + } Kirigami.PageRouter { id: router @@ -226,7 +237,7 @@ Kirigami.ApplicationWindow { text: serviceprovider } Controls.Label { - text: servicetype + text: servicetypename } Controls.Label { text: new Date(servicedate).toLocaleDateString(Qt.locale()) @@ -288,9 +299,11 @@ Kirigami.ApplicationWindow { Controls.ComboBox { id: typeField - model: [qsTr("Oil and Filter Change"), qsTr("Windshield Wiper Replacement"), qsTr("Coolant Change"), qsTr("Tire Rotation"), qsTr("Timing Belt Change"), qsTr("Serpentine Belt Changed"), qsTr("Other")] + model: serviceTypeModel + textRole: "text" + valueRole: "value" onActivated: { - if(currentText === qsTr("Other")) { + if(currentValue == -1) { customTypeField.visible = true; } else { customTypeField.visible = false; @@ -347,11 +360,11 @@ Kirigami.ApplicationWindow { onClicked: { var dateObj = Date.fromLocaleDateString(Qt.locale(), dateField.text); var typeText = typeField.currentText; - if(typeField.currentText === qsTr("Other")) { + if(typeField.currentValue == -1) { typeText = customTypeField.text; } if(milesField.acceptableInput) { - recordModel.addNewRecord(providerField.text, typeText, dateObj.toISOString(), parseInt(milesField.text), notesField.text); + recordModel.addNewRecord(providerField.text, typeField.currentValue, typeText, dateObj.toISOString(), parseInt(milesField.text), notesField.text); router.popRoute(); } else { formError.text = qsTr("Invalid number of miles."); diff --git a/src/db/sqlservicerecord.cpp b/src/db/sqlservicerecord.cpp index 2b9b286..43bf477 100644 --- a/src/db/sqlservicerecord.cpp +++ b/src/db/sqlservicerecord.cpp @@ -51,12 +51,13 @@ QVariant SqlServiceRecord::data ( const QModelIndex& index, int role ) const return value; } -void SqlServiceRecord::addNewRecord(QString serviceProvider, QString serviceType, QString dateISO, int miles, QString notes) +void SqlServiceRecord::addNewRecord(QString serviceProvider, int serviceType, QString serviceTypeName, QString dateISO, int miles, QString notes) { QSqlRecord newItem = this->record(); newItem.setValue("vehicle", this->currentVehicleID); newItem.setValue("serviceprovider", serviceProvider); newItem.setValue("servicetype", serviceType); + newItem.setValue("servicetypename", serviceTypeName); newItem.setValue("servicedate", dateISO); newItem.setValue("miles", miles); newItem.setValue("notes", notes); diff --git a/src/db/sqlservicerecord.h b/src/db/sqlservicerecord.h index be1decf..c85c6f3 100644 --- a/src/db/sqlservicerecord.h +++ b/src/db/sqlservicerecord.h @@ -30,7 +30,7 @@ public: explicit SqlServiceRecord(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase()); QHash roleNames() const override; Q_INVOKABLE QVariant data(const QModelIndex &index, int role) const override; - Q_INVOKABLE void addNewRecord(QString serviceProvider, QString serviceType, QString dateISO, int miles, QString notes); + Q_INVOKABLE void addNewRecord(QString serviceProvider, int serviceType, QString serviceTypeName, QString dateISO, int miles, QString notes); Q_INVOKABLE void removeRecord(int index); Q_INVOKABLE void changeVehicleFilter(int id); diff --git a/src/main.cpp b/src/main.cpp index fea5220..926faa5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -59,7 +59,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) //Create table structure db.open(); db.exec("CREATE TABLE vehicles (id INTEGER PRIMARY KEY, name TEXT, maker TEXT, vmodel TEXT, year INTEGER, image TEXT, vin TEXT);"); - db.exec("CREATE TABLE records (id INTEGER PRIMARY KEY, vehicle INTEGER, serviceprovider TEXT, servicetype TEXT, servicedate TEXT, miles INTEGER, notes TEXT);"); + db.exec("CREATE TABLE records (id INTEGER PRIMARY KEY, vehicle INTEGER, serviceprovider TEXT, servicetype INTEGER, servicetypename TEXT, servicedate TEXT, miles INTEGER, notes TEXT);"); db.commit(); db.close(); } -- GitLab