Store service types that are builtin as numbers to reference in code easier.

This commit is contained in:
2020-06-10 13:31:17 -04:00
parent bb3904e2d1
commit 420d36a1a0
4 changed files with 22 additions and 8 deletions

View File

@@ -9,6 +9,17 @@ Kirigami.ApplicationWindow {
title: "Vehicle Voyage" 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 { Kirigami.PageRouter {
id: router id: router
initialRoute: "main" initialRoute: "main"
@@ -226,7 +237,7 @@ Kirigami.ApplicationWindow {
text: serviceprovider text: serviceprovider
} }
Controls.Label { Controls.Label {
text: servicetype text: servicetypename
} }
Controls.Label { Controls.Label {
text: new Date(servicedate).toLocaleDateString(Qt.locale()) text: new Date(servicedate).toLocaleDateString(Qt.locale())
@@ -288,9 +299,11 @@ Kirigami.ApplicationWindow {
Controls.ComboBox { Controls.ComboBox {
id: typeField 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: { onActivated: {
if(currentText === qsTr("Other")) { if(currentValue == -1) {
customTypeField.visible = true; customTypeField.visible = true;
} else { } else {
customTypeField.visible = false; customTypeField.visible = false;
@@ -347,11 +360,11 @@ Kirigami.ApplicationWindow {
onClicked: { onClicked: {
var dateObj = Date.fromLocaleDateString(Qt.locale(), dateField.text); var dateObj = Date.fromLocaleDateString(Qt.locale(), dateField.text);
var typeText = typeField.currentText; var typeText = typeField.currentText;
if(typeField.currentText === qsTr("Other")) { if(typeField.currentValue == -1) {
typeText = customTypeField.text; typeText = customTypeField.text;
} }
if(milesField.acceptableInput) { 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(); router.popRoute();
} else { } else {
formError.text = qsTr("Invalid number of miles."); formError.text = qsTr("Invalid number of miles.");

View File

@@ -51,12 +51,13 @@ QVariant SqlServiceRecord::data ( const QModelIndex& index, int role ) const
return value; 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(); QSqlRecord newItem = this->record();
newItem.setValue("vehicle", this->currentVehicleID); newItem.setValue("vehicle", this->currentVehicleID);
newItem.setValue("serviceprovider", serviceProvider); newItem.setValue("serviceprovider", serviceProvider);
newItem.setValue("servicetype", serviceType); newItem.setValue("servicetype", serviceType);
newItem.setValue("servicetypename", serviceTypeName);
newItem.setValue("servicedate", dateISO); newItem.setValue("servicedate", dateISO);
newItem.setValue("miles", miles); newItem.setValue("miles", miles);
newItem.setValue("notes", notes); newItem.setValue("notes", notes);

View File

@@ -30,7 +30,7 @@ public:
explicit SqlServiceRecord(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase()); explicit SqlServiceRecord(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase());
QHash<int, QByteArray> roleNames() const override; QHash<int, QByteArray> roleNames() const override;
Q_INVOKABLE QVariant data(const QModelIndex &index, int role) 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 removeRecord(int index);
Q_INVOKABLE void changeVehicleFilter(int id); Q_INVOKABLE void changeVehicleFilter(int id);

View File

@@ -59,7 +59,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
//Create table structure //Create table structure
db.open(); 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 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.commit();
db.close(); db.close();
} }