diff --git a/src/contents/ui/main.qml b/src/contents/ui/main.qml index 3838fdc4e97706b0f87ace78f95ae7ddd92b8c2f..344eefb916db2d138dbc4143f0616f5d897cb6cd 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 2b9b28633923302b308d7853ef7072310837c34c..43bf477b14bffca36c435f7837c412224640230c 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 be1decfc1ad8649aae85158e693d0312b92a9be4..c85c6f3d595ad8bf049ff4317a0d3bb1f0574a64 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 fea522026d48a6d22938c19da871395d548ed307..926faa5a650f4f89896d08b4e3fd82df5d820265 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(); }