Mercurial > hg > syntilista
annotate src/sqlmodels.cpp @ 255:55581d90c55d
Change API for slCheckAndReportSQLError().
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 10 Oct 2018 13:21:51 +0300 |
parents | 43a5e09bb832 |
children | 0f345852b3ed |
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 | 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 |
255
55581d90c55d
Change API for slCheckAndReportSQLError().
Matti Hamalainen <ccr@tnsp.org>
parents:
246
diff
changeset
|
61 if (!slCheckAndReportSQLError(np, "SLPersonSQLModel::updatePerson()")) |
213
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 |
255
55581d90c55d
Change API for slCheckAndReportSQLError().
Matti Hamalainen <ccr@tnsp.org>
parents:
246
diff
changeset
|
81 if (!slCheckAndReportSQLError(np, "SLPersonSQLModel::addPerson()")) |
213
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 |
255
55581d90c55d
Change API for slCheckAndReportSQLError().
Matti Hamalainen <ccr@tnsp.org>
parents:
246
diff
changeset
|
102 if (!slCheckAndReportSQLError(del, "delete user")) |
213
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 |
255
55581d90c55d
Change API for slCheckAndReportSQLError().
Matti Hamalainen <ccr@tnsp.org>
parents:
246
diff
changeset
|
112 if (!slCheckAndReportSQLError(del, "delete user transactions")) |
213
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 } |