models/qsqltablemodel.cpp

Switch to Source codePreprocessed file
LineSource CodeCoverage
1 -
2 -
3 -
4 -
5 -
6 -
7typedef QSqlTableModelSql Sql; -
8 -
9 -
10 -
11 -
12QSqlRecord QSqlTableModelPrivate::record(const QVector<QVariant> &values) const -
13{ -
14 QSqlRecord r = rec; -
15 for (int i = 0; i < r.count() && i < values.count(); ++i)
never evaluated: i < r.count()
never evaluated: i < values.count()
0
16 r.setValue(i, values.at(i));
never executed: r.setValue(i, values.at(i));
0
17 return r;
never executed: return r;
0
18} -
19 -
20int QSqlTableModelPrivate::nameToIndex(const QString &name) const -
21{ -
22 return rec.indexOf(strippedFieldName(name));
executed: return rec.indexOf(strippedFieldName(name));
Execution Count:110
110
23} -
24 -
25QString QSqlTableModelPrivate::strippedFieldName(const QString &name) const -
26{ -
27 QString fieldname = name; -
28 if (db.driver()->isIdentifierEscaped(fieldname, QSqlDriver::FieldName))
evaluated: db.driver()->isIdentifierEscaped(fieldname, QSqlDriver::FieldName)
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:123
4-123
29 fieldname = db.driver()->stripDelimiters(fieldname, QSqlDriver::FieldName);
executed: fieldname = db.driver()->stripDelimiters(fieldname, QSqlDriver::FieldName);
Execution Count:4
4
30 return fieldname;
executed: return fieldname;
Execution Count:127
127
31} -
32 -
33int QSqlTableModelPrivate::insertCount(int maxRow) const -
34{ -
35 int cnt = 0; -
36 CacheMap::ConstIterator i = cache.constBegin(); -
37 const CacheMap::ConstIterator e = cache.constEnd(); -
38 for ( ; i != e && (maxRow < 0 || i.key() <= maxRow); ++i)
evaluated: i != e
TRUEFALSE
yes
Evaluation Count:2027
yes
Evaluation Count:12671
evaluated: maxRow < 0
TRUEFALSE
yes
Evaluation Count:1584
yes
Evaluation Count:443
evaluated: i.key() <= maxRow
TRUEFALSE
yes
Evaluation Count:365
yes
Evaluation Count:78
78-12671
39 if (i.value().insert())
evaluated: i.value().insert()
TRUEFALSE
yes
Evaluation Count:1152
yes
Evaluation Count:797
797-1152
40 ++cnt;
executed: ++cnt;
Execution Count:1152
1152
41 -
42 return cnt;
executed: return cnt;
Execution Count:12749
12749
43} -
44 -
45void QSqlTableModelPrivate::initRecordAndPrimaryIndex() -
46{ -
47 rec = db.record(tableName); -
48 primaryIndex = db.primaryIndex(tableName); -
49 initColOffsets(rec.count()); -
50}
executed: }
Execution Count:178
178
51 -
52void QSqlTableModelPrivate::clear() -
53{ -
54 sortColumn = -1; -
55 sortOrder = Qt::AscendingOrder; -
56 tableName.clear(); -
57 editQuery.clear(); -
58 cache.clear(); -
59 primaryIndex.clear(); -
60 rec.clear(); -
61 filter.clear(); -
62}
executed: }
Execution Count:183
183
63 -
64void QSqlTableModelPrivate::clearCache() -
65{ -
66 cache.clear(); -
67}
executed: }
Execution Count:297
297
68 -
69void QSqlTableModelPrivate::revertCachedRow(int row) -
70{ -
71 QSqlTableModel * const q = q_func(); -
72 ModifiedRow r = cache.value(row); -
73 -
74 switch (r.op()) { -
75 case QSqlTableModelPrivate::None: -
76 qt_noop(); -
77 return;
never executed: return;
0
78 case QSqlTableModelPrivate::Update: -
79 case QSqlTableModelPrivate::Delete: -
80 if (!r.submitted()) {
evaluated: !r.submitted()
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:3
3-13
81 cache[row].revert(); -
82 q->dataChanged(q->createIndex(row, 0), -
83 q->createIndex(row, q->columnCount() - 1)); -
84 }
executed: }
Execution Count:13
13
85 break;
executed: break;
Execution Count:16
16
86 case QSqlTableModelPrivate::Insert: { -
87 QMap<int, QSqlTableModelPrivate::ModifiedRow>::Iterator it = cache.find(row); -
88 if (it == cache.end())
partially evaluated: it == cache.end()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:29
0-29
89 return;
never executed: return;
0
90 q->beginRemoveRows(QModelIndex(), row, row); -
91 it = cache.erase(it); -
92 while (it != cache.end()) {
evaluated: it != cache.end()
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:29
5-29
93 int oldKey = it.key(); -
94 const QSqlTableModelPrivate::ModifiedRow oldValue = it.value(); -
95 cache.erase(it); -
96 it = cache.insert(oldKey - 1, oldValue); -
97 ++it; -
98 }
executed: }
Execution Count:5
5
99 q->endRemoveRows(); -
100 break; }
executed: break;
Execution Count:29
29
101 } -
102}
executed: }
Execution Count:45
45
103 -
104bool QSqlTableModelPrivate::exec(const QString &stmt, bool prepStatement, -
105 const QSqlRecord &rec, const QSqlRecord &whereValues) -
106{ -
107 if (stmt.isEmpty())
partially evaluated: stmt.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:107
0-107
108 return false;
never executed: return false;
0
109 -
110 -
111 if (editQuery.driver() != db.driver())
evaluated: editQuery.driver() != db.driver()
TRUEFALSE
yes
Evaluation Count:45
yes
Evaluation Count:62
45-62
112 editQuery = QSqlQuery(db);
executed: editQuery = QSqlQuery(db);
Execution Count:45
45
113 -
114 -
115 -
116 if (db.driver()->hasFeature(QSqlDriver::SimpleLocking))
partially evaluated: db.driver()->hasFeature(QSqlDriver::SimpleLocking)
TRUEFALSE
yes
Evaluation Count:107
no
Evaluation Count:0
0-107
117 const_cast<QSqlResult *>(query.result())->detachFromResultSet();
executed: const_cast<QSqlResult *>(query.result())->detachFromResultSet();
Execution Count:107
107
118 -
119 if (prepStatement) {
partially evaluated: prepStatement
TRUEFALSE
yes
Evaluation Count:107
no
Evaluation Count:0
0-107
120 if (editQuery.lastQuery() != stmt) {
evaluated: editQuery.lastQuery() != stmt
TRUEFALSE
yes
Evaluation Count:70
yes
Evaluation Count:37
37-70
121 if (!editQuery.prepare(stmt)) {
partially evaluated: !editQuery.prepare(stmt)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:70
0-70
122 error = editQuery.lastError(); -
123 return false;
never executed: return false;
0
124 } -
125 }
executed: }
Execution Count:70
70
126 int i; -
127 for (i = 0; i < rec.count(); ++i)
evaluated: i < rec.count()
TRUEFALSE
yes
Evaluation Count:267
yes
Evaluation Count:107
107-267
128 if (rec.isGenerated(i))
evaluated: rec.isGenerated(i)
TRUEFALSE
yes
Evaluation Count:176
yes
Evaluation Count:91
91-176
129 editQuery.addBindValue(rec.value(i));
executed: editQuery.addBindValue(rec.value(i));
Execution Count:176
176
130 for (i = 0; i < whereValues.count(); ++i)
evaluated: i < whereValues.count()
TRUEFALSE
yes
Evaluation Count:144
yes
Evaluation Count:107
107-144
131 if (whereValues.isGenerated(i) && !whereValues.isNull(i))
partially evaluated: whereValues.isGenerated(i)
TRUEFALSE
yes
Evaluation Count:144
no
Evaluation Count:0
evaluated: !whereValues.isNull(i)
TRUEFALSE
yes
Evaluation Count:139
yes
Evaluation Count:5
0-144
132 editQuery.addBindValue(whereValues.value(i));
executed: editQuery.addBindValue(whereValues.value(i));
Execution Count:139
139
133 -
134 if (!editQuery.exec()) {
evaluated: !editQuery.exec()
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:104
3-104
135 error = editQuery.lastError(); -
136 return false;
executed: return false;
Execution Count:3
3
137 } -
138 } else {
executed: }
Execution Count:104
104
139 if (!editQuery.exec(stmt)) {
never evaluated: !editQuery.exec(stmt)
0
140 error = editQuery.lastError(); -
141 return false;
never executed: return false;
0
142 } -
143 }
never executed: }
0
144 return true;
executed: return true;
Execution Count:104
104
145} -
146 -
147QSqlRecord QSqlTableModelPrivate::primaryValues(const QSqlRecord &rec, const QSqlRecord &pIndex) -
148{ -
149 QSqlRecord pValues(pIndex); -
150 -
151 for (int i = pValues.count() - 1; i >= 0; --i)
evaluated: i >= 0
TRUEFALSE
yes
Evaluation Count:260
yes
Evaluation Count:121
121-260
152 pValues.setValue(i, rec.value(pValues.fieldName(i)));
executed: pValues.setValue(i, rec.value(pValues.fieldName(i)));
Execution Count:260
260
153 -
154 return pValues;
executed: return pValues;
Execution Count:121
121
155} -
156 -
157QSqlRecord QSqlTableModelPrivate::primaryValues(int row) const -
158{ -
159 const QSqlTableModel * const q = q_func(); -
160 -
161 const QSqlRecord &pIndex = primaryIndex.isEmpty() ? rec : primaryIndex;
evaluated: primaryIndex.isEmpty()
TRUEFALSE
yes
Evaluation Count:70
yes
Evaluation Count:51
51-70
162 -
163 ModifiedRow mr = cache.value(row); -
164 if (mr.op() != None)
evaluated: mr.op() != None
TRUEFALSE
yes
Evaluation Count:119
yes
Evaluation Count:2
2-119
165 return mr.primaryValues(pIndex);
executed: return mr.primaryValues(pIndex);
Execution Count:119
119
166 else -
167 return primaryValues(q->QSqlQueryModel::record(row), pIndex);
executed: return primaryValues(q->QSqlQueryModel::record(row), pIndex);
Execution Count:2
2
168} -
169QSqlTableModel::QSqlTableModel(QObject *parent, QSqlDatabase db) -
170 : QSqlQueryModel(*new QSqlTableModelPrivate, parent) -
171{ -
172 QSqlTableModelPrivate * const d = d_func(); -
173 d->db = db.isValid() ? db : QSqlDatabase::database();
evaluated: db.isValid()
TRUEFALSE
yes
Evaluation Count:85
yes
Evaluation Count:51
51-85
174}
executed: }
Execution Count:136
136
175 -
176 -
177 -
178QSqlTableModel::QSqlTableModel(QSqlTableModelPrivate &dd, QObject *parent, QSqlDatabase db) -
179 : QSqlQueryModel(dd, parent) -
180{ -
181 QSqlTableModelPrivate * const d = d_func(); -
182 d->db = db.isValid() ? db : QSqlDatabase::database();
partially evaluated: db.isValid()
TRUEFALSE
yes
Evaluation Count:31
no
Evaluation Count:0
0-31
183}
executed: }
Execution Count:31
31
184 -
185 -
186 -
187 -
188QSqlTableModel::~QSqlTableModel() -
189{ -
190} -
191void QSqlTableModel::setTable(const QString &tableName) -
192{ -
193 QSqlTableModelPrivate * const d = d_func(); -
194 clear(); -
195 d->tableName = tableName; -
196 d->initRecordAndPrimaryIndex(); -
197 -
198 if (d->rec.count() == 0)
evaluated: d->rec.count() == 0
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:175
1-175
199 d->error = QSqlError(QLatin1String("Unable to find table ") + d->tableName, QString(), 1
200 QSqlError::StatementError);
executed: d->error = QSqlError(QLatin1String("Unable to find table ") + d->tableName, QString(), QSqlError::StatementError);
Execution Count:1
1
201}
executed: }
Execution Count:176
176
202 -
203 -
204 -
205 -
206QString QSqlTableModel::tableName() const -
207{ -
208 const QSqlTableModelPrivate * const d = d_func(); -
209 return d->tableName;
executed: return d->tableName;
Execution Count:475
475
210} -
211bool QSqlTableModel::select() -
212{ -
213 QSqlTableModelPrivate * const d = d_func(); -
214 const QString query = selectStatement(); -
215 if (query.isEmpty())
evaluated: query.isEmpty()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:297
1-297
216 return false;
executed: return false;
Execution Count:1
1
217 -
218 beginResetModel(); -
219 -
220 d->clearCache(); -
221 -
222 QSqlQuery qu(query, d->db); -
223 setQuery(qu); -
224 -
225 if (!qu.isActive() || lastError().isValid()) {
evaluated: !qu.isActive()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:295
partially evaluated: lastError().isValid()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:295
0-295
226 -
227 d->initRecordAndPrimaryIndex(); -
228 endResetModel(); -
229 return false;
executed: return false;
Execution Count:2
2
230 } -
231 endResetModel(); -
232 return true;
executed: return true;
Execution Count:295
295
233} -
234bool QSqlTableModel::selectRow(int row) -
235{ -
236 QSqlTableModelPrivate * const d = d_func(); -
237 -
238 if (row < 0 || row >= rowCount())
partially evaluated: row < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:56
partially evaluated: row >= rowCount()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:56
0-56
239 return false;
never executed: return false;
0
240 -
241 const int table_sort_col = d->sortColumn; -
242 d->sortColumn = -1; -
243 const QString table_filter = d->filter; -
244 d->filter = d->db.driver()->sqlStatement(QSqlDriver::WhereStatement, -
245 d->tableName, -
246 d->primaryValues(row), -
247 false); -
248 static const QString wh = Sql::where() + Sql::sp(); -
249 if (d->filter.startsWith(wh, Qt::CaseInsensitive))
partially evaluated: d->filter.startsWith(wh, Qt::CaseInsensitive)
TRUEFALSE
yes
Evaluation Count:56
no
Evaluation Count:0
0-56
250 d->filter.remove(0, wh.length());
executed: d->filter.remove(0, wh.length());
Execution Count:56
56
251 -
252 QString stmt; -
253 -
254 if (!d->filter.isEmpty())
partially evaluated: !d->filter.isEmpty()
TRUEFALSE
yes
Evaluation Count:56
no
Evaluation Count:0
0-56
255 stmt = selectStatement();
executed: stmt = selectStatement();
Execution Count:56
56
256 -
257 d->sortColumn = table_sort_col; -
258 d->filter = table_filter; -
259 -
260 if (stmt.isEmpty())
partially evaluated: stmt.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:56
0-56
261 return false;
never executed: return false;
0
262 -
263 bool exists; -
264 QSqlRecord newValues; -
265 -
266 { -
267 QSqlQuery q(d->db); -
268 q.setForwardOnly(true); -
269 if (!q.exec(stmt))
partially evaluated: !q.exec(stmt)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:56
0-56
270 return false;
never executed: return false;
0
271 -
272 exists = q.next(); -
273 newValues = q.record(); -
274 } -
275 -
276 bool needsAddingToCache = !exists || d->cache.contains(row);
evaluated: !exists
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:47
evaluated: d->cache.contains(row)
TRUEFALSE
yes
Evaluation Count:45
yes
Evaluation Count:2
2-47
277 -
278 if (!needsAddingToCache) {
evaluated: !needsAddingToCache
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:54
2-54
279 const QSqlRecord curValues = record(row); -
280 needsAddingToCache = curValues.count() != newValues.count(); -
281 if (!needsAddingToCache) {
partially evaluated: !needsAddingToCache
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-2
282 -
283 -
284 for (int f = curValues.count() - 1; f >= 0; --f) {
partially evaluated: f >= 0
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-2
285 if (curValues.value(f) != newValues.value(f))
evaluated: curValues.value(f) != newValues.value(f)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1
1
286 needsAddingToCache = true;
executed: needsAddingToCache = true;
Execution Count:1
1
287 break;
executed: break;
Execution Count:2
2
288 } -
289 }
executed: }
Execution Count:2
2
290 }
executed: }
Execution Count:2
2
291 -
292 if (needsAddingToCache) {
evaluated: needsAddingToCache
TRUEFALSE
yes
Evaluation Count:55
yes
Evaluation Count:1
1-55
293 d->cache[row].refresh(exists, newValues); -
294 headerDataChanged(Qt::Vertical, row, row); -
295 dataChanged(createIndex(row, 0), createIndex(row, columnCount() - 1)); -
296 }
executed: }
Execution Count:55
55
297 -
298 return true;
executed: return true;
Execution Count:56
56
299} -
300 -
301 -
302 -
303 -
304QVariant QSqlTableModel::data(const QModelIndex &index, int role) const -
305{ -
306 const QSqlTableModelPrivate * const d = d_func(); -
307 if (!index.isValid() || (role != Qt::DisplayRole && role != Qt::EditRole))
evaluated: !index.isValid()
TRUEFALSE
yes
Evaluation Count:318
yes
Evaluation Count:2535
evaluated: role != Qt::DisplayRole
TRUEFALSE
yes
Evaluation Count:827
yes
Evaluation Count:1708
evaluated: role != Qt::EditRole
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:818
9-2535
308 return QVariant();
executed: return QVariant();
Execution Count:327
327
309 -
310 const QSqlTableModelPrivate::ModifiedRow mrow = d->cache.value(index.row()); -
311 if (mrow.op() != QSqlTableModelPrivate::None)
evaluated: mrow.op() != QSqlTableModelPrivate::None
TRUEFALSE
yes
Evaluation Count:358
yes
Evaluation Count:2168
358-2168
312 return mrow.rec().value(index.column());
executed: return mrow.rec().value(index.column());
Execution Count:358
358
313 -
314 return QSqlQueryModel::data(index, role);
executed: return QSqlQueryModel::data(index, role);
Execution Count:2168
2168
315} -
316 -
317 -
318 -
319 -
320QVariant QSqlTableModel::headerData(int section, Qt::Orientation orientation, int role) const -
321{ -
322 const QSqlTableModelPrivate * const d = d_func(); -
323 if (orientation == Qt::Vertical && role == Qt::DisplayRole) {
partially evaluated: orientation == Qt::Vertical
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
never evaluated: role == Qt::DisplayRole
0-2
324 const QSqlTableModelPrivate::Op op = d->cache.value(section).op(); -
325 if (op == QSqlTableModelPrivate::Insert)
never evaluated: op == QSqlTableModelPrivate::Insert
0
326 return QLatin1String("*");
never executed: return QLatin1String("*");
0
327 else if (op == QSqlTableModelPrivate::Delete)
never evaluated: op == QSqlTableModelPrivate::Delete
0
328 return QLatin1String("!");
never executed: return QLatin1String("!");
0
329 } -
330 return QSqlQueryModel::headerData(section, orientation, role);
executed: return QSqlQueryModel::headerData(section, orientation, role);
Execution Count:2
2
331} -
332bool QSqlTableModel::isDirty() const -
333{ -
334 const QSqlTableModelPrivate * const d = d_func(); -
335 QSqlTableModelPrivate::CacheMap::ConstIterator i = d->cache.constBegin(); -
336 const QSqlTableModelPrivate::CacheMap::ConstIterator e = d->cache.constEnd(); -
337 for (; i != e; i++)
evaluated: i != e
TRUEFALSE
yes
Evaluation Count:58
yes
Evaluation Count:124
58-124
338 if (!i.value().submitted())
evaluated: !i.value().submitted()
TRUEFALSE
yes
Evaluation Count:28
yes
Evaluation Count:30
28-30
339 return true;
executed: return true;
Execution Count:28
28
340 return false;
executed: return false;
Execution Count:124
124
341} -
342bool QSqlTableModel::isDirty(const QModelIndex &index) const -
343{ -
344 const QSqlTableModelPrivate * const d = d_func(); -
345 if (!index.isValid())
partially evaluated: !index.isValid()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:68
0-68
346 return false;
never executed: return false;
0
347 -
348 const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row()); -
349 if (row.submitted())
evaluated: row.submitted()
TRUEFALSE
yes
Evaluation Count:53
yes
Evaluation Count:15
15-53
350 return false;
executed: return false;
Execution Count:53
53
351 -
352 return row.op() == QSqlTableModelPrivate::Insert 15
353 || row.op() == QSqlTableModelPrivate::Delete 15
354 || (row.op() == QSqlTableModelPrivate::Update 15
355 && row.rec().isGenerated(index.column()));
executed: return row.op() == QSqlTableModelPrivate::Insert || row.op() == QSqlTableModelPrivate::Delete || (row.op() == QSqlTableModelPrivate::Update && row.rec().isGenerated(index.column()));
Execution Count:15
15
356} -
357bool QSqlTableModel::setData(const QModelIndex &index, const QVariant &value, int role) -
358{ -
359 QSqlTableModelPrivate * const d = d_func(); -
360 if (d->busyInsertingRows)
partially evaluated: d->busyInsertingRows
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:250
0-250
361 return false;
never executed: return false;
0
362 -
363 if (role != Qt::EditRole)
evaluated: role != Qt::EditRole
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:248
2-248
364 return QSqlQueryModel::setData(index, value, role);
executed: return QSqlQueryModel::setData(index, value, role);
Execution Count:2
2
365 -
366 if (!index.isValid() || index.column() >= d->rec.count() || index.row() >= rowCount())
evaluated: !index.isValid()
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:245
partially evaluated: index.column() >= d->rec.count()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:245
partially evaluated: index.row() >= rowCount()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:245
0-245
367 return false;
executed: return false;
Execution Count:3
3
368 -
369 if (!(flags(index) & Qt::ItemIsEditable))
evaluated: !(flags(index) & Qt::ItemIsEditable)
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:242
3-242
370 return false;
executed: return false;
Execution Count:3
3
371 -
372 if (QSqlTableModel::data(index, role) == value)
evaluated: QSqlTableModel::data(index, role) == value
TRUEFALSE
yes
Evaluation Count:24
yes
Evaluation Count:218
24-218
373 return true;
executed: return true;
Execution Count:24
24
374 -
375 QSqlTableModelPrivate::ModifiedRow &row = d->cache[index.row()]; -
376 -
377 if (row.op() == QSqlTableModelPrivate::None)
evaluated: row.op() == QSqlTableModelPrivate::None
TRUEFALSE
yes
Evaluation Count:41
yes
Evaluation Count:177
41-177
378 row = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Update, 41
379 QSqlQueryModel::record(index.row()));
executed: row = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Update, QSqlQueryModel::record(index.row()));
Execution Count:41
41
380 -
381 row.setValue(index.column(), value); -
382 dataChanged(index, index); -
383 -
384 if (d->strategy == OnFieldChange && row.op() != QSqlTableModelPrivate::Insert)
evaluated: d->strategy == OnFieldChange
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:206
evaluated: row.op() != QSqlTableModelPrivate::Insert
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:5
5-206
385 return submit();
executed: return submit();
Execution Count:7
7
386 -
387 return true;
executed: return true;
Execution Count:211
211
388} -
389void QSqlTableModel::setQuery(const QSqlQuery &query) -
390{ -
391 QSqlQueryModel::setQuery(query); -
392}
executed: }
Execution Count:297
297
393bool QSqlTableModel::updateRowInTable(int row, const QSqlRecord &values) -
394{ -
395 QSqlTableModelPrivate * const d = d_func(); -
396 QSqlRecord rec(values); -
397 beforeUpdate(row, rec); -
398 -
399 const QSqlRecord whereValues = d->primaryValues(row); -
400 const bool prepStatement = d->db.driver()->hasFeature(QSqlDriver::PreparedQueries); -
401 const QString stmt = d->db.driver()->sqlStatement(QSqlDriver::UpdateStatement, d->tableName, -
402 rec, prepStatement); -
403 const QString where = d->db.driver()->sqlStatement(QSqlDriver::WhereStatement, d->tableName, -
404 whereValues, prepStatement); -
405 -
406 if (stmt.isEmpty() || where.isEmpty() || row < 0 || row >= rowCount()) {
partially evaluated: stmt.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:45
partially evaluated: where.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:45
partially evaluated: row < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:45
partially evaluated: row >= rowCount()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:45
0-45
407 d->error = QSqlError(QLatin1String("No Fields to update"), QString(), -
408 QSqlError::StatementError); -
409 return false;
never executed: return false;
0
410 } -
411 -
412 return d->exec(Sql::concat(stmt, where), prepStatement, rec, whereValues);
executed: return d->exec(Sql::concat(stmt, where), prepStatement, rec, whereValues);
Execution Count:45
45
413} -
414bool QSqlTableModel::insertRowIntoTable(const QSqlRecord &values) -
415{ -
416 QSqlTableModelPrivate * const d = d_func(); -
417 QSqlRecord rec = values; -
418 beforeInsert(rec); -
419 -
420 const bool prepStatement = d->db.driver()->hasFeature(QSqlDriver::PreparedQueries); -
421 const QString stmt = d->db.driver()->sqlStatement(QSqlDriver::InsertStatement, d->tableName, -
422 rec, prepStatement); -
423 -
424 if (stmt.isEmpty()) {
evaluated: stmt.isEmpty()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:42
1-42
425 d->error = QSqlError(QLatin1String("No Fields to update"), QString(), -
426 QSqlError::StatementError); -
427 return false;
executed: return false;
Execution Count:1
1
428 } -
429 -
430 return d->exec(stmt, prepStatement, rec, QSqlRecord() );
executed: return d->exec(stmt, prepStatement, rec, QSqlRecord() );
Execution Count:42
42
431} -
432bool QSqlTableModel::deleteRowFromTable(int row) -
433{ -
434 QSqlTableModelPrivate * const d = d_func(); -
435 beforeDelete(row); -
436 -
437 const QSqlRecord whereValues = d->primaryValues(row); -
438 const bool prepStatement = d->db.driver()->hasFeature(QSqlDriver::PreparedQueries); -
439 const QString stmt = d->db.driver()->sqlStatement(QSqlDriver::DeleteStatement, -
440 d->tableName, -
441 QSqlRecord(), -
442 prepStatement); -
443 const QString where = d->db.driver()->sqlStatement(QSqlDriver::WhereStatement, -
444 d->tableName, -
445 whereValues, -
446 prepStatement); -
447 -
448 if (stmt.isEmpty() || where.isEmpty()) {
partially evaluated: stmt.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:20
partially evaluated: where.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:20
0-20
449 d->error = QSqlError(QLatin1String("Unable to delete row"), QString(), -
450 QSqlError::StatementError); -
451 return false;
never executed: return false;
0
452 } -
453 -
454 return d->exec(Sql::concat(stmt, where), prepStatement, QSqlRecord() , whereValues);
executed: return d->exec(Sql::concat(stmt, where), prepStatement, QSqlRecord() , whereValues);
Execution Count:20
20
455} -
456bool QSqlTableModel::submitAll() -
457{ -
458 QSqlTableModelPrivate * const d = d_func(); -
459 -
460 bool success = true; -
461 -
462 for (QForeachContainer<__typeof__(d->cache.keys())> _container_(d->cache.keys()); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (int row = *_container_.i;; __extension__ ({--_container_.brk; break;})) { -
463 -
464 QSqlTableModelPrivate::CacheMap::iterator it = d->cache.find(row); -
465 if (it == d->cache.end())
partially evaluated: it == d->cache.end()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:138
0-138
466 continue;
never executed: continue;
0
467 -
468 QSqlTableModelPrivate::ModifiedRow &mrow = it.value(); -
469 if (mrow.submitted())
evaluated: mrow.submitted()
TRUEFALSE
yes
Evaluation Count:30
yes
Evaluation Count:108
30-108
470 continue;
executed: continue;
Execution Count:30
30
471 -
472 switch (mrow.op()) { -
473 case QSqlTableModelPrivate::Insert: -
474 success = insertRowIntoTable(mrow.rec()); -
475 break;
executed: break;
Execution Count:43
43
476 case QSqlTableModelPrivate::Update: -
477 success = updateRowInTable(row, mrow.rec()); -
478 break;
executed: break;
Execution Count:45
45
479 case QSqlTableModelPrivate::Delete: -
480 success = deleteRowFromTable(row); -
481 break;
executed: break;
Execution Count:20
20
482 case QSqlTableModelPrivate::None: -
483 qt_noop(); -
484 break;
never executed: break;
0
485 } -
486 -
487 if (success) {
evaluated: success
TRUEFALSE
yes
Evaluation Count:104
yes
Evaluation Count:4
4-104
488 mrow.setSubmitted(); -
489 if (d->strategy != OnManualSubmit)
evaluated: d->strategy != OnManualSubmit
TRUEFALSE
yes
Evaluation Count:54
yes
Evaluation Count:50
50-54
490 success = selectRow(row);
executed: success = selectRow(row);
Execution Count:54
54
491 }
executed: }
Execution Count:104
104
492 -
493 if (!success)
evaluated: !success
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:104
4-104
494 break;
executed: break;
Execution Count:4
4
495 }
executed: }
Execution Count:104
104
496 -
497 if (success) {
evaluated: success
TRUEFALSE
yes
Evaluation Count:107
yes
Evaluation Count:4
4-107
498 if (d->strategy == OnManualSubmit)
evaluated: d->strategy == OnManualSubmit
TRUEFALSE
yes
Evaluation Count:31
yes
Evaluation Count:76
31-76
499 success = select();
executed: success = select();
Execution Count:31
31
500 }
executed: }
Execution Count:107
107
501 -
502 return success;
executed: return success;
Execution Count:111
111
503} -
504bool QSqlTableModel::submit() -
505{ -
506 QSqlTableModelPrivate * const d = d_func(); -
507 if (d->strategy == OnRowChange || d->strategy == OnFieldChange)
evaluated: d->strategy == OnRowChange
TRUEFALSE
yes
Evaluation Count:28
yes
Evaluation Count:20
evaluated: d->strategy == OnFieldChange
TRUEFALSE
yes
Evaluation Count:19
yes
Evaluation Count:1
1-28
508 return submitAll();
executed: return submitAll();
Execution Count:47
47
509 return true;
executed: return true;
Execution Count:1
1
510} -
511void QSqlTableModel::revert() -
512{ -
513 QSqlTableModelPrivate * const d = d_func(); -
514 if (d->strategy == OnRowChange)
partially evaluated: d->strategy == OnRowChange
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1
0-1
515 revertAll();
never executed: revertAll();
0
516}
executed: }
Execution Count:1
1
517void QSqlTableModel::setEditStrategy(EditStrategy strategy) -
518{ -
519 QSqlTableModelPrivate * const d = d_func(); -
520 revertAll(); -
521 d->strategy = strategy; -
522}
executed: }
Execution Count:100
100
523 -
524 -
525 -
526 -
527 -
528 -
529QSqlTableModel::EditStrategy QSqlTableModel::editStrategy() const -
530{ -
531 const QSqlTableModelPrivate * const d = d_func(); -
532 return d->strategy;
executed: return d->strategy;
Execution Count:13
13
533} -
534 -
535 -
536 -
537 -
538 -
539 -
540void QSqlTableModel::revertAll() -
541{ -
542 QSqlTableModelPrivate * const d = d_func(); -
543 -
544 const QList<int> rows(d->cache.keys()); -
545 for (int i = rows.size() - 1; i >= 0; --i)
evaluated: i >= 0
TRUEFALSE
yes
Evaluation Count:28
yes
Evaluation Count:117
28-117
546 revertRow(rows.value(i));
executed: revertRow(rows.value(i));
Execution Count:28
28
547}
executed: }
Execution Count:117
117
548 -
549 -
550 -
551 -
552 -
553 -
554void QSqlTableModel::revertRow(int row) -
555{ -
556 if (row < 0)
partially evaluated: row < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:45
0-45
557 return;
never executed: return;
0
558 -
559 QSqlTableModelPrivate * const d = d_func(); -
560 d->revertCachedRow(row); -
561}
executed: }
Execution Count:45
45
562 -
563 -
564 -
565 -
566 -
567 -
568 -
569QSqlIndex QSqlTableModel::primaryKey() const -
570{ -
571 const QSqlTableModelPrivate * const d = d_func(); -
572 return d->primaryIndex;
executed: return d->primaryIndex;
Execution Count:1
1
573} -
574void QSqlTableModel::setPrimaryKey(const QSqlIndex &key) -
575{ -
576 QSqlTableModelPrivate * const d = d_func(); -
577 d->primaryIndex = key; -
578}
never executed: }
0
579 -
580 -
581 -
582 -
583QSqlDatabase QSqlTableModel::database() const -
584{ -
585 const QSqlTableModelPrivate * const d = d_func(); -
586 return d->db;
executed: return d->db;
Execution Count:447
447
587} -
588void QSqlTableModel::sort(int column, Qt::SortOrder order) -
589{ -
590 setSort(column, order); -
591 select(); -
592}
executed: }
Execution Count:12
12
593void QSqlTableModel::setSort(int column, Qt::SortOrder order) -
594{ -
595 QSqlTableModelPrivate * const d = d_func(); -
596 d->sortColumn = column; -
597 d->sortOrder = order; -
598}
executed: }
Execution Count:65
65
599 -
600 -
601 -
602 -
603 -
604 -
605 -
606QString QSqlTableModel::orderByClause() const -
607{ -
608 const QSqlTableModelPrivate * const d = d_func(); -
609 QSqlField f = d->rec.field(d->sortColumn); -
610 if (!f.isValid())
evaluated: !f.isValid()
TRUEFALSE
yes
Evaluation Count:229
yes
Evaluation Count:120
120-229
611 return QString();
executed: return QString();
Execution Count:229
229
612 -
613 -
614 -
615 QString field = d->db.driver()->escapeIdentifier(f.name(), QSqlDriver::FieldName); -
616 field.prepend(QLatin1Char('.')).prepend(d->tableName); -
617 field = d->sortOrder == Qt::AscendingOrder ? Sql::asc(field) : Sql::desc(field);
evaluated: d->sortOrder == Qt::AscendingOrder
TRUEFALSE
yes
Evaluation Count:115
yes
Evaluation Count:5
5-115
618 return Sql::orderBy(field);
executed: return Sql::orderBy(field);
Execution Count:120
120
619} -
620 -
621 -
622 -
623 -
624 -
625int QSqlTableModel::fieldIndex(const QString &fieldName) const -
626{ -
627 const QSqlTableModelPrivate * const d = d_func(); -
628 return d->rec.indexOf(fieldName);
never executed: return d->rec.indexOf(fieldName);
0
629} -
630QString QSqlTableModel::selectStatement() const -
631{ -
632 const QSqlTableModelPrivate * const d = d_func(); -
633 if (d->tableName.isEmpty()) {
partially evaluated: d->tableName.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:270
0-270
634 d->error = QSqlError(QLatin1String("No table name given"), QString(), -
635 QSqlError::StatementError); -
636 return QString();
never executed: return QString();
0
637 } -
638 if (d->rec.isEmpty()) {
evaluated: d->rec.isEmpty()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:269
1-269
639 d->error = QSqlError(QLatin1String("Unable to find table ") + d->tableName, QString(), -
640 QSqlError::StatementError); -
641 return QString();
executed: return QString();
Execution Count:1
1
642 } -
643 -
644 const QString stmt = d->db.driver()->sqlStatement(QSqlDriver::SelectStatement, -
645 d->tableName, -
646 d->rec, -
647 false); -
648 if (stmt.isEmpty()) {
partially evaluated: stmt.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:269
0-269
649 d->error = QSqlError(QLatin1String("Unable to select fields from table ") + d->tableName, -
650 QString(), QSqlError::StatementError); -
651 return stmt;
never executed: return stmt;
0
652 } -
653 return Sql::concat(Sql::concat(stmt, Sql::where(d->filter)), orderByClause());
executed: return Sql::concat(Sql::concat(stmt, Sql::where(d->filter)), orderByClause());
Execution Count:269
269
654} -
655bool QSqlTableModel::removeColumns(int column, int count, const QModelIndex &parent) -
656{ -
657 QSqlTableModelPrivate * const d = d_func(); -
658 if (parent.isValid() || column < 0 || column + count > d->rec.count())
partially evaluated: parent.isValid()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5
partially evaluated: column < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5
partially evaluated: column + count > d->rec.count()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5
0-5
659 return false;
never executed: return false;
0
660 for (int i = 0; i < count; ++i)
evaluated: i < count
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:5
5-7
661 d->rec.remove(column);
executed: d->rec.remove(column);
Execution Count:7
7
662 if (d->query.isActive())
partially evaluated: d->query.isActive()
TRUEFALSE
yes
Evaluation Count:5
no
Evaluation Count:0
0-5
663 return select();
executed: return select();
Execution Count:5
5
664 return true;
never executed: return true;
0
665} -
666bool QSqlTableModel::removeRows(int row, int count, const QModelIndex &parent) -
667{ -
668 QSqlTableModelPrivate * const d = d_func(); -
669 if (parent.isValid() || row < 0 || count <= 0)
evaluated: parent.isValid()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:38
evaluated: row < 0
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:34
evaluated: count <= 0
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:32
2-38
670 return false;
executed: return false;
Execution Count:8
8
671 else if (row + count > rowCount())
evaluated: row + count > rowCount()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:30
2-30
672 return false;
executed: return false;
Execution Count:2
2
673 else if (!count)
partially evaluated: !count
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:30
0-30
674 return true;
never executed: return true;
0
675 -
676 if (d->strategy != OnManualSubmit)
evaluated: d->strategy != OnManualSubmit
TRUEFALSE
yes
Evaluation Count:15
yes
Evaluation Count:15
15
677 if (count > 1 || (d->cache.value(row).submitted() && isDirty()))
evaluated: count > 1
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:14
evaluated: d->cache.value(row).submitted()
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:2
evaluated: isDirty()
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:9
1-14
678 return false;
executed: return false;
Execution Count:4
4
679 -
680 -
681 -
682 for (int idx = row + count - 1; idx >= row; --idx) {
evaluated: idx >= row
TRUEFALSE
yes
Evaluation Count:34
yes
Evaluation Count:26
26-34
683 QSqlTableModelPrivate::ModifiedRow& mrow = d->cache[idx]; -
684 if (mrow.op() == QSqlTableModelPrivate::Insert) {
evaluated: mrow.op() == QSqlTableModelPrivate::Insert
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:21
13-21
685 revertRow(idx); -
686 } else {
executed: }
Execution Count:13
13
687 if (mrow.op() == QSqlTableModelPrivate::None)
evaluated: mrow.op() == QSqlTableModelPrivate::None
TRUEFALSE
yes
Evaluation Count:19
yes
Evaluation Count:2
2-19
688 mrow = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Delete, 19
689 QSqlQueryModel::record(idx));
executed: mrow = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Delete, QSqlQueryModel::record(idx));
Execution Count:19
19
690 else -
691 mrow.setOp(QSqlTableModelPrivate::Delete);
executed: mrow.setOp(QSqlTableModelPrivate::Delete);
Execution Count:2
2
692 if (d->strategy == OnManualSubmit)
evaluated: d->strategy == OnManualSubmit
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:9
9-12
693 headerDataChanged(Qt::Vertical, idx, idx);
executed: headerDataChanged(Qt::Vertical, idx, idx);
Execution Count:12
12
694 }
executed: }
Execution Count:21
21
695 } -
696 -
697 if (d->strategy != OnManualSubmit)
evaluated: d->strategy != OnManualSubmit
TRUEFALSE
yes
Evaluation Count:11
yes
Evaluation Count:15
11-15
698 return submit();
executed: return submit();
Execution Count:11
11
699 -
700 return true;
executed: return true;
Execution Count:15
15
701} -
702bool QSqlTableModel::insertRows(int row, int count, const QModelIndex &parent) -
703{ -
704 QSqlTableModelPrivate * const d = d_func(); -
705 if (row < 0 || count <= 0 || row > rowCount() || parent.isValid())
partially evaluated: row < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:63
partially evaluated: count <= 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:63
partially evaluated: row > rowCount()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:63
partially evaluated: parent.isValid()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:63
0-63
706 return false;
never executed: return false;
0
707 -
708 if (d->strategy != OnManualSubmit)
evaluated: d->strategy != OnManualSubmit
TRUEFALSE
yes
Evaluation Count:26
yes
Evaluation Count:37
26-37
709 if (count != 1 || isDirty())
partially evaluated: count != 1
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:26
evaluated: isDirty()
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:23
0-26
710 return false;
executed: return false;
Execution Count:3
3
711 -
712 d->busyInsertingRows = true; -
713 beginInsertRows(parent, row, row + count - 1); -
714 -
715 if (d->strategy != OnManualSubmit)
evaluated: d->strategy != OnManualSubmit
TRUEFALSE
yes
Evaluation Count:23
yes
Evaluation Count:37
23-37
716 d->cache.empty();
executed: d->cache.empty();
Execution Count:23
23
717 -
718 if (!d->cache.isEmpty()) {
evaluated: !d->cache.isEmpty()
TRUEFALSE
yes
Evaluation Count:19
yes
Evaluation Count:41
19-41
719 QMap<int, QSqlTableModelPrivate::ModifiedRow>::Iterator it = d->cache.end(); -
720 while (it != d->cache.begin() && (--it).key() >= row) {
evaluated: it != d->cache.begin()
TRUEFALSE
yes
Evaluation Count:20
yes
Evaluation Count:2
evaluated: (--it).key() >= row
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:17
2-20
721 int oldKey = it.key(); -
722 const QSqlTableModelPrivate::ModifiedRow oldValue = it.value(); -
723 d->cache.erase(it); -
724 it = d->cache.insert(oldKey + count, oldValue); -
725 }
executed: }
Execution Count:3
3
726 }
executed: }
Execution Count:19
19
727 -
728 for (int i = 0; i < count; ++i) {
evaluated: i < count
TRUEFALSE
yes
Evaluation Count:77
yes
Evaluation Count:60
60-77
729 d->cache[row + i] = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Insert, -
730 d->rec); -
731 primeInsert(row + i, d->cache[row + i].recRef()); -
732 }
executed: }
Execution Count:77
77
733 -
734 endInsertRows(); -
735 d->busyInsertingRows = false; -
736 return true;
executed: return true;
Execution Count:60
60
737} -
738bool QSqlTableModel::insertRecord(int row, const QSqlRecord &record) -
739{ -
740 if (row < 0)
evaluated: row < 0
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:19
7-19
741 row = rowCount();
executed: row = rowCount();
Execution Count:7
7
742 if (!insertRow(row, QModelIndex()))
partially evaluated: !insertRow(row, QModelIndex())
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:26
0-26
743 return false;
never executed: return false;
0
744 if (!setRecord(row, record)) {
partially evaluated: !setRecord(row, record)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:26
0-26
745 revertRow(row); -
746 return false;
never executed: return false;
0
747 } -
748 return true;
executed: return true;
Execution Count:26
26
749} -
750 -
751 -
752 -
753int QSqlTableModel::rowCount(const QModelIndex &parent) const -
754{ -
755 const QSqlTableModelPrivate * const d = d_func(); -
756 -
757 if (parent.isValid())
evaluated: parent.isValid()
TRUEFALSE
yes
Evaluation Count:1028
yes
Evaluation Count:10597
1028-10597
758 return 0;
executed: return 0;
Execution Count:1028
1028
759 -
760 return QSqlQueryModel::rowCount() + d->insertCount();
executed: return QSqlQueryModel::rowCount() + d->insertCount();
Execution Count:10597
10597
761} -
762QModelIndex QSqlTableModel::indexInQuery(const QModelIndex &item) const -
763{ -
764 const QSqlTableModelPrivate * const d = d_func(); -
765 if (d->cache.value(item.row()).insert())
partially evaluated: d->cache.value(item.row()).insert()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2152
0-2152
766 return QModelIndex();
never executed: return QModelIndex();
0
767 -
768 const int rowOffset = d->insertCount(item.row()); -
769 return QSqlQueryModel::indexInQuery(createIndex(item.row() - rowOffset, item.column(), item.internalPointer()));
executed: return QSqlQueryModel::indexInQuery(createIndex(item.row() - rowOffset, item.column(), item.internalPointer()));
Execution Count:2152
2152
770} -
771 -
772 -
773 -
774 -
775 -
776 -
777QString QSqlTableModel::filter() const -
778{ -
779 const QSqlTableModelPrivate * const d = d_func(); -
780 return d->filter;
executed: return d->filter;
Execution Count:86
86
781} -
782void QSqlTableModel::setFilter(const QString &filter) -
783{ -
784 QSqlTableModelPrivate * const d = d_func(); -
785 d->filter = filter; -
786 if (d->query.isActive())
evaluated: d->query.isActive()
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:4
3-4
787 select();
executed: select();
Execution Count:3
3
788}
executed: }
Execution Count:7
7
789 -
790 -
791 -
792void QSqlTableModel::clear() -
793{ -
794 QSqlTableModelPrivate * const d = d_func(); -
795 d->clear(); -
796 QSqlQueryModel::clear(); -
797}
executed: }
Execution Count:183
183
798 -
799 -
800 -
801Qt::ItemFlags QSqlTableModel::flags(const QModelIndex &index) const -
802{ -
803 const QSqlTableModelPrivate * const d = d_func(); -
804 if (index.internalPointer() || index.column() < 0 || index.column() >= d->rec.count()
partially evaluated: index.internalPointer()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:247
evaluated: index.column() < 0
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:246
partially evaluated: index.column() >= d->rec.count()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:246
0-247
805 || index.row() < 0)
partially evaluated: index.row() < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:246
0-246
806 return 0;
executed: return 0;
Execution Count:1
1
807 -
808 bool editable = true; -
809 -
810 if (d->rec.field(index.column()).isReadOnly()) {
partially evaluated: d->rec.field(index.column()).isReadOnly()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:246
0-246
811 editable = false; -
812 }
never executed: }
0
813 else { -
814 const QSqlTableModelPrivate::ModifiedRow mrow = d->cache.value(index.row()); -
815 if (mrow.op() == QSqlTableModelPrivate::Delete) {
partially evaluated: mrow.op() == QSqlTableModelPrivate::Delete
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:246
0-246
816 editable = false; -
817 }
never executed: }
0
818 else if (d->strategy == OnFieldChange) {
evaluated: d->strategy == OnFieldChange
TRUEFALSE
yes
Evaluation Count:14
yes
Evaluation Count:232
14-232
819 if (mrow.op() != QSqlTableModelPrivate::Insert)
evaluated: mrow.op() != QSqlTableModelPrivate::Insert
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:5
5-9
820 if (!isDirty(index) && isDirty())
partially evaluated: !isDirty(index)
TRUEFALSE
yes
Evaluation Count:9
no
Evaluation Count:0
evaluated: isDirty()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:8
0-9
821 editable = false;
executed: editable = false;
Execution Count:1
1
822 }
executed: }
Execution Count:14
14
823 else if (d->strategy == OnRowChange) {
evaluated: d->strategy == OnRowChange
TRUEFALSE
yes
Evaluation Count:45
yes
Evaluation Count:187
45-187
824 if (mrow.submitted() && isDirty())
evaluated: mrow.submitted()
TRUEFALSE
yes
Evaluation Count:28
yes
Evaluation Count:17
evaluated: isDirty()
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:25
3-28
825 editable = false;
executed: editable = false;
Execution Count:3
3
826 }
executed: }
Execution Count:45
45
827 } -
828 -
829 if (!editable)
evaluated: !editable
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:242
4-242
830 return QSqlQueryModel::flags(index);
executed: return QSqlQueryModel::flags(index);
Execution Count:4
4
831 else -
832 return QSqlQueryModel::flags(index) | Qt::ItemIsEditable;
executed: return QSqlQueryModel::flags(index) | Qt::ItemIsEditable;
Execution Count:242
242
833} -
834 -
835QSqlRecord QSqlTableModel::record() const -
836{ -
837 return QSqlQueryModel::record();
executed: return QSqlQueryModel::record();
Execution Count:13
13
838} -
839QSqlRecord QSqlTableModel::record(int row) const -
840{ -
841 const QSqlTableModelPrivate * const d = d_func(); -
842 -
843 -
844 QSqlRecord rec = QSqlQueryModel::record(row); -
845 -
846 -
847 const QSqlTableModelPrivate::ModifiedRow mrow = d->cache.value(row); -
848 if (mrow.op() != QSqlTableModelPrivate::None) {
evaluated: mrow.op() != QSqlTableModelPrivate::None
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:160
3-160
849 const QSqlRecord crec = mrow.rec(); -
850 for (int i = 0, cnt = rec.count(); i < cnt; ++i)
evaluated: i < cnt
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:3
3-9
851 rec.setGenerated(i, crec.isGenerated(i));
executed: rec.setGenerated(i, crec.isGenerated(i));
Execution Count:9
9
852 }
executed: }
Execution Count:3
3
853 -
854 return rec;
executed: return rec;
Execution Count:163
163
855} -
856bool QSqlTableModel::setRecord(int row, const QSqlRecord &values) -
857{ -
858 QSqlTableModelPrivate * const d = d_func(); -
859 qt_noop(); -
860 if (d->busyInsertingRows)
partially evaluated: d->busyInsertingRows
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:47
0-47
861 return false;
never executed: return false;
0
862 -
863 if (row >= rowCount())
partially evaluated: row >= rowCount()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:47
0-47
864 return false;
never executed: return false;
0
865 -
866 if (d->cache.value(row).op() == QSqlTableModelPrivate::Delete)
partially evaluated: d->cache.value(row).op() == QSqlTableModelPrivate::Delete
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:47
0-47
867 return false;
never executed: return false;
0
868 -
869 if (d->strategy != OnManualSubmit && d->cache.value(row).submitted() && isDirty())
evaluated: d->strategy != OnManualSubmit
TRUEFALSE
yes
Evaluation Count:22
yes
Evaluation Count:25
evaluated: d->cache.value(row).submitted()
TRUEFALSE
yes
Evaluation Count:10
yes
Evaluation Count:12
evaluated: isDirty()
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:7
3-25
870 return false;
executed: return false;
Execution Count:3
3
871 -
872 -
873 typedef QMap<int, int> Map; -
874 Map map; -
875 for (int i = 0; i < values.count(); ++i) {
evaluated: i < values.count()
TRUEFALSE
yes
Evaluation Count:126
yes
Evaluation Count:44
44-126
876 int idx = d->nameToIndex(values.fieldName(i)); -
877 if (idx == -1)
partially evaluated: idx == -1
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:126
0-126
878 return false;
never executed: return false;
0
879 map[i] = idx; -
880 }
executed: }
Execution Count:126
126
881 -
882 QSqlTableModelPrivate::ModifiedRow &mrow = d->cache[row]; -
883 if (mrow.op() == QSqlTableModelPrivate::None)
evaluated: mrow.op() == QSqlTableModelPrivate::None
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:31
13-31
884 mrow = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Update, 13
885 QSqlQueryModel::record(row));
executed: mrow = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Update, QSqlQueryModel::record(row));
Execution Count:13
13
886 -
887 Map::const_iterator i = map.constBegin(); -
888 const Map::const_iterator e = map.constEnd(); -
889 for ( ; i != e; ++i) {
evaluated: i != e
TRUEFALSE
yes
Evaluation Count:126
yes
Evaluation Count:44
44-126
890 -
891 EditStrategy strategy = d->strategy; -
892 d->strategy = OnManualSubmit; -
893 QModelIndex cIndex = createIndex(row, i.value()); -
894 setData(cIndex, values.value(i.key())); -
895 d->strategy = strategy; -
896 -
897 if (!values.isGenerated(i.key()))
partially evaluated: !values.isGenerated(i.key())
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:126
0-126
898 mrow.recRef().setGenerated(i.value(), false);
never executed: mrow.recRef().setGenerated(i.value(), false);
0
899 }
executed: }
Execution Count:126
126
900 -
901 if (d->strategy != OnManualSubmit)
evaluated: d->strategy != OnManualSubmit
TRUEFALSE
yes
Evaluation Count:19
yes
Evaluation Count:25
19-25
902 return submit();
executed: return submit();
Execution Count:19
19
903 -
904 return true;
executed: return true;
Execution Count:25
25
905} -
906 -
907 -
908 -
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial