From 0590c2bec6fd8a79e43025b4dd9bbc802ee19966 Mon Sep 17 00:00:00 2001 From: Kevin Whitaker Date: Sat, 6 Jun 2020 21:14:24 -0400 Subject: [PATCH] Make service records model. --- src/db/sqlservicerecord.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/db/sqlservicerecord.h | 10 +++++++--- src/db/sqlvehicle.h | 2 +- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/db/sqlservicerecord.cpp b/src/db/sqlservicerecord.cpp index 341051c..2d03b8a 100644 --- a/src/db/sqlservicerecord.cpp +++ b/src/db/sqlservicerecord.cpp @@ -16,3 +16,39 @@ */ #include "sqlservicerecord.h" +#include + +SqlServiceRecord::SqlServiceRecord(QObject* parent) +{ + setTable("records"); +} + + +QHash SqlServiceRecord::roleNames() const +{ + QHash roles; + // record() returns an empty QSqlRecord + for (int i = 0; i < this->record().count(); i ++) { + roles.insert(Qt::UserRole + i + 1, record().fieldName(i).toUtf8()); + } + return roles; +} + + +QVariant SqlServiceRecord::data(const QModelIndex& index, int role) const +{ + QVariant value = QSqlQueryModel::data(index, role); + if(role < Qt::UserRole) + { + value = QSqlQueryModel::data(index, role); + } + else + { + int columnIdx = role - Qt::UserRole - 1; + QModelIndex modelIndex = this->index(index.row(), columnIdx); + value = QSqlQueryModel::data(modelIndex, Qt::DisplayRole); + } + return value; +} + + diff --git a/src/db/sqlservicerecord.h b/src/db/sqlservicerecord.h index 62e6adb..e1a4a53 100644 --- a/src/db/sqlservicerecord.h +++ b/src/db/sqlservicerecord.h @@ -18,14 +18,18 @@ #ifndef SQLSERVICERECORD_H #define SQLSERVICERECORD_H -#include +#include /** - * @todo write docs + * Model to access service records. */ -class SqlServiceRecord : public QSqlQueryModel +class SqlServiceRecord : public QSqlTableModel { Q_OBJECT +public: + explicit SqlServiceRecord(QObject *parent); + QHash roleNames() const override; + QVariant data(const QModelIndex &index, int role) const override; }; diff --git a/src/db/sqlvehicle.h b/src/db/sqlvehicle.h index 15a4432..706f61b 100644 --- a/src/db/sqlvehicle.h +++ b/src/db/sqlvehicle.h @@ -29,7 +29,7 @@ class SqlVehicle : public QSqlTableModel public: explicit SqlVehicle(QObject *parent); QHash roleNames() const override; - QVariant data(const QModelIndex &index, int role) const; + QVariant data(const QModelIndex &index, int role) const override; private: