Mercurial > hg > syntilista
annotate src/sqlmodels.cpp @ 217:58af72da7f60
Update copyrights.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 02 Jan 2018 01:47:38 +0200 |
parents | 131463be208b |
children | 43a5e09bb832 |
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" |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
10 |
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 SLPersonSQLModel::SLPersonSQLModel(QObject *parent) : QSqlQueryModel(parent) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
13 { |
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 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
|
18 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
19 QVariant value = QSqlQueryModel::data(index, role); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
20 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
21 if (value.isValid() && role == Qt::DisplayRole) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
22 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
23 // Format some of the displayed values |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
24 switch (index.column()) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
25 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
26 case 3: |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
27 return slMoneyValueToStr(value.toDouble()); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
28 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
29 case 4: |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
30 return slDateTimeToStr(value.toDateTime()); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
31 } |
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 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
|
35 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
36 // Use fancy coloring for debt |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
37 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
|
38 if (val < 0) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
39 return QVariant::fromValue(QColor(Qt::red)); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
40 else |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
41 return QVariant::fromValue(QColor(Qt::green)); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
42 } |
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 return value; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
45 } |
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 int SLPersonSQLModel::updatePerson(const SLPersonInfo &info) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
49 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
50 QSqlQuery np; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
51 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
52 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
|
53 np.addBindValue(info.firstName); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
54 np.addBindValue(info.lastName); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
55 np.addBindValue(info.extraInfo); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
56 np.addBindValue(QDateTime::currentDateTimeUtc()); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
57 np.addBindValue(info.id); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
58 np.exec(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
59 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
60 if (!slCheckAndReportSQLError("SLPersonSQLModel::updatePerson()", np.lastError())) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
61 return -1; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
62 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
63 QSqlDatabase::database().commit(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
64 updateModel(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
65 return 0; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
66 } |
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 qint64 SLPersonSQLModel::addPerson(const SLPersonInfo &info) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
70 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
71 QSqlQuery np; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
72 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
|
73 np.addBindValue(info.firstName); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
74 np.addBindValue(info.lastName); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
75 np.addBindValue(info.extraInfo); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
76 np.addBindValue(QDateTime::currentDateTimeUtc()); |
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.exec(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
79 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
80 if (!slCheckAndReportSQLError("SLPersonSQLModel::addPerson()", np.lastError())) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
81 return -1; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
82 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
83 QSqlDatabase::database().commit(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
84 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
85 QVariant idp = np.lastInsertId(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
86 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
87 updateModel(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
88 return idp.isValid() ? idp.toInt() : -2; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
89 } |
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 int SLPersonSQLModel::deletePerson(qint64 id) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
93 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
94 QSqlDatabase::database().transaction(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
95 QSqlQuery del; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
96 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
97 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
|
98 del.addBindValue(id); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
99 del.exec(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
100 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
101 if (!slCheckAndReportSQLError("delete user", del.lastError())) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
102 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
103 QSqlDatabase::database().rollback(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
104 return -1; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
105 } |
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 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
|
108 del.addBindValue(id); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
109 del.exec(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
110 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
111 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
|
112 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
113 QSqlDatabase::database().rollback(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
114 return -2; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
115 } |
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 QSqlDatabase::database().commit(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
118 updateModel(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
119 return 0; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
120 } |
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 void SLPersonSQLModel::updateModel() |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
124 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
125 query().exec(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
126 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
|
127 } |
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 SLTransactionSQLModel::SLTransactionSQLModel(QObject *parent) : QSqlQueryModel(parent) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
131 { |
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 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
|
136 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
137 QVariant value = QSqlQueryModel::data(index, role); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
138 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
139 if (value.isValid() && role == Qt::DisplayRole) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
140 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
141 // Format some of the displayed values |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
142 switch (index.column()) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
143 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
144 case 1: |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
145 return slMoneyValueToStrSign(value.toDouble()); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
146 |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
147 case 2: |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
148 return slDateTimeToStr(value.toDateTime()); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
149 } |
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 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
|
153 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
154 // Use fancy coloring for debt |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
155 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
|
156 if (val < 0) |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
157 return QVariant::fromValue(QColor(Qt::red)); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
158 else |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
159 return QVariant::fromValue(QColor(Qt::green)); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
160 } |
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 return value; |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
163 } |
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 void SLTransactionSQLModel::updateModel() |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
167 { |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
168 query().exec(); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
169 emit dataChanged(QModelIndex(), QModelIndex()); |
131463be208b
Split the custom SQL models code into sqlmodels.cpp
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
170 } |