summaryrefslogtreecommitdiffstats
path: root/src/sql/models
diff options
context:
space:
mode:
authorMark Brand <mabrand@mabrand.nl>2012-02-15 02:07:59 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-06 06:34:36 +0100
commitea6d1fde1b5ce53691cc9b9154bd992a16be035f (patch)
tree7510d1f6ead6055d9179d3f762e61b3671f47af8 /src/sql/models
parente999ca25c66dfb9d056a1a83b93043ece5733d93 (diff)
QSqlTableModel::data(): use cached values when available
Simplify logic. If the record is in the cache, even untouched values should be there. This is also necessary for getting the most up-to-date values between submitting and the next select. Change-Id: I8578d96229797ce9fb0d07fe456301358f2be071 Reviewed-by: Honglei Zhang <honglei.zhang@nokia.com>
Diffstat (limited to 'src/sql/models')
-rw-r--r--src/sql/models/qsqltablemodel.cpp26
1 files changed, 3 insertions, 23 deletions
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index a2999b30c4..24668dd946 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -402,29 +402,9 @@ QVariant QSqlTableModel::data(const QModelIndex &index, int role) const
if (!index.isValid() || (role != Qt::DisplayRole && role != Qt::EditRole))
return QVariant();
- if (d->cache.contains(index.row())) {
- const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row());
-
- switch (d->strategy) {
- case OnFieldChange:
- case OnRowChange:
- if (row.op() == QSqlTableModelPrivate::Insert) {
- if (index.column() < 0 || index.column() >= row.rec().count())
- return QVariant();
- return row.rec().value(index.column());
- } else if (row.op() == QSqlTableModelPrivate::Update) {
- if (row.rec().isGenerated(index.column()))
- return row.rec().value(index.column());
- }
- break;
- case OnManualSubmit:
- if (row.op() == QSqlTableModelPrivate::Insert
- || (row.op() != QSqlTableModelPrivate::None
- && row.rec().isGenerated(index.column())))
- return row.rec().value(index.column());
- break;
- }
- }
+ const QSqlTableModelPrivate::ModifiedRow mrow = d->cache.value(index.row());
+ if (mrow.op() != QSqlTableModelPrivate::None)
+ return mrow.rec().value(index.column());
return QSqlQueryModel::data(index, role);
}