annotate src/sqlmodels.cpp @ 246:43a5e09bb832

Split some utility functions to util.{h,cpp}
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 08 May 2018 13:14:29 +0300
parents 58af72da7f60
children 55581d90c55d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
213
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 //
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 // Syntilista - debt list/management database program
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 // Programmed and designed by Matti Hämäläinen <ccr@tnsp.org>
217
58af72da7f60 Update copyrights.
Matti Hamalainen <ccr@tnsp.org>
parents: 213
diff changeset
4 // (C) Copyright 2017-2018 Tecnic Software productions (TNSP)
213
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 //
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6 // Distributed under 3-clause BSD style license, refer to
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 // included file "COPYING" for exact terms.
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 //
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9 #include "main.h"
246
43a5e09bb832 Split some utility functions to util.{h,cpp}
Matti Hamalainen <ccr@tnsp.org>
parents: 217
diff changeset
10 #include "util.h"
213
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13 SLPersonSQLModel::SLPersonSQLModel(QObject *parent) : QSqlQueryModel(parent)
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
15 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18 QVariant SLPersonSQLModel::data(const QModelIndex &index, int role) const
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20 QVariant value = QSqlQueryModel::data(index, role);
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22 if (value.isValid() && role == Qt::DisplayRole)
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24 // Format some of the displayed values
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25 switch (index.column())
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
26 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27 case 3:
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28 return slMoneyValueToStr(value.toDouble());
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
30 case 4:
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
31 return slDateTimeToStr(value.toDateTime());
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
32 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
33 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
34
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
35 if (index.column() == 3 && role == Qt::ForegroundRole)
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
36 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 // Use fancy coloring for debt
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38 double val = QSqlQueryModel::data(index, Qt::DisplayRole).toDouble();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39 if (val < 0)
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
40 return QVariant::fromValue(QColor(Qt::red));
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
41 else
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
42 return QVariant::fromValue(QColor(Qt::green));
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
44
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
45 return value;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
46 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
47
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
48
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
49 int SLPersonSQLModel::updatePerson(const SLPersonInfo &info)
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
51 QSqlQuery np;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
52
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53 np.prepare(QStringLiteral("UPDATE people SET first_name=?,last_name=?,extra_info=?,updated=? WHERE id=?"));
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
54 np.addBindValue(info.firstName);
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55 np.addBindValue(info.lastName);
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
56 np.addBindValue(info.extraInfo);
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
57 np.addBindValue(QDateTime::currentDateTimeUtc());
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
58 np.addBindValue(info.id);
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
59 np.exec();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
60
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
61 if (!slCheckAndReportSQLError("SLPersonSQLModel::updatePerson()", np.lastError()))
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
62 return -1;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
63
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
64 QSqlDatabase::database().commit();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
65 updateModel();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
66 return 0;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
67 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
68
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
69
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
70 qint64 SLPersonSQLModel::addPerson(const SLPersonInfo &info)
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
71 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
72 QSqlQuery np;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
73 np.prepare(QStringLiteral("INSERT INTO people (first_name,last_name,extra_info,added,updated) VALUES (?,?,?,?,?)"));
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
74 np.addBindValue(info.firstName);
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
75 np.addBindValue(info.lastName);
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
76 np.addBindValue(info.extraInfo);
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
77 np.addBindValue(QDateTime::currentDateTimeUtc());
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
78 np.addBindValue(QDateTime::currentDateTimeUtc());
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
79 np.exec();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
80
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
81 if (!slCheckAndReportSQLError("SLPersonSQLModel::addPerson()", np.lastError()))
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
82 return -1;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
83
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
84 QSqlDatabase::database().commit();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
85
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
86 QVariant idp = np.lastInsertId();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
87
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
88 updateModel();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
89 return idp.isValid() ? idp.toInt() : -2;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
90 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
91
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
92
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
93 int SLPersonSQLModel::deletePerson(qint64 id)
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
94 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
95 QSqlDatabase::database().transaction();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
96 QSqlQuery del;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
97
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
98 del.prepare(QStringLiteral("DELETE FROM people WHERE id=?"));
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
99 del.addBindValue(id);
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
100 del.exec();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
101
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
102 if (!slCheckAndReportSQLError("delete user", del.lastError()))
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
103 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
104 QSqlDatabase::database().rollback();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
105 return -1;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
106 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
107
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
108 del.prepare(QStringLiteral("DELETE FROM transactions WHERE person=?"));
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
109 del.addBindValue(id);
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
110 del.exec();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
111
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
112 if (!slCheckAndReportSQLError("delete user transactions", del.lastError()))
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
113 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
114 QSqlDatabase::database().rollback();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
115 return -2;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
116 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
117
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
118 QSqlDatabase::database().commit();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
119 updateModel();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
120 return 0;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
121 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
122
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
123
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
124 void SLPersonSQLModel::updateModel()
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
125 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
126 query().exec();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
127 emit dataChanged(index(0, 0), index(rowCount(), columnCount()));
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
128 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
129
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
130
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
131 SLTransactionSQLModel::SLTransactionSQLModel(QObject *parent) : QSqlQueryModel(parent)
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
132 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
133 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
134
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
135
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
136 QVariant SLTransactionSQLModel::data(const QModelIndex &index, int role) const
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
137 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
138 QVariant value = QSqlQueryModel::data(index, role);
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
139
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
140 if (value.isValid() && role == Qt::DisplayRole)
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
141 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
142 // Format some of the displayed values
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
143 switch (index.column())
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
144 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
145 case 1:
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
146 return slMoneyValueToStrSign(value.toDouble());
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
147
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
148 case 2:
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
149 return slDateTimeToStr(value.toDateTime());
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
150 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
151 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
152
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
153 if (index.column() == 1 && role == Qt::ForegroundRole)
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
154 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
155 // Use fancy coloring for debt
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
156 double val = QSqlQueryModel::data(index, Qt::DisplayRole).toDouble();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
157 if (val < 0)
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
158 return QVariant::fromValue(QColor(Qt::red));
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
159 else
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
160 return QVariant::fromValue(QColor(Qt::green));
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
161 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
162
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
163 return value;
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
164 }
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
165
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
166
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
167 void SLTransactionSQLModel::updateModel()
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
168 {
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
169 query().exec();
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
170 emit dataChanged(QModelIndex(), QModelIndex());
131463be208b Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
171 }