summaryrefslogtreecommitdiffstats
path: root/src/sql/models
diff options
context:
space:
mode:
authorMark Brand <mabrand@mabrand.nl>2011-07-06 10:58:56 +0200
committerQt by Nokia <qt-info@nokia.com>2012-01-27 22:48:12 +0100
commit2eaccc08d34bf8205bfecefb197d48c0a8434a1b (patch)
tree8886d09f52418ef8d2470f6b1d5d71e2d388cbe7 /src/sql/models
parent7785227214cdabfb07ff7e425e1f41aa86fb5faf (diff)
improvements to ModifiedRow
-remove unnecessary explicit copy constructor -explicitly inline constructor -more convenient initialization Change-Id: I78b275ef9d5413f95278a044345e42303dc35624 Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
Diffstat (limited to 'src/sql/models')
-rw-r--r--src/sql/models/qsqltablemodel.cpp26
-rw-r--r--src/sql/models/qsqltablemodel_p.h9
2 files changed, 19 insertions, 16 deletions
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index 226f2c7286..4308359ba6 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -574,12 +574,11 @@ bool QSqlTableModel::setData(const QModelIndex &index, const QVariant &value, in
case OnManualSubmit: {
QSqlTableModelPrivate::ModifiedRow &row = d->cache[index.row()];
if (row.op == QSqlTableModelPrivate::None) {
- row.op = QSqlTableModelPrivate::Update;
- row.rec = d->rec;
- QSqlTableModelPrivate::clearGenerated(row.rec);
- row.primaryValues = d->primaryValues(indexInQuery(index).row());
+ row = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Update,
+ d->rec,
+ d->primaryValues(indexInQuery(index).row()));
}
- QSqlTableModelPrivate::setGeneratedValue(row.rec, index.column(), value);
+ row.setValue(index.column(), value);
emit dataChanged(index, index);
break; }
}
@@ -1120,8 +1119,9 @@ bool QSqlTableModel::removeRows(int row, int count, const QModelIndex &parent)
// so fake this by adjusting row
--row;
} else {
- d->cache[idx].op = QSqlTableModelPrivate::Delete;
- d->cache[idx].primaryValues = d->primaryValues(indexInQuery(createIndex(idx, 0)).row());
+ d->cache[idx] = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Delete,
+ QSqlRecord(),
+ d->primaryValues(indexInQuery(createIndex(idx, 0)).row()));
emit headerDataChanged(Qt::Vertical, idx, idx);
}
}
@@ -1338,18 +1338,16 @@ bool QSqlTableModel::setRecord(int row, const QSqlRecord &record)
return d->setRecord(row, record);
case OnManualSubmit: {
QSqlTableModelPrivate::ModifiedRow &mrow = d->cache[row];
- if (mrow.op == QSqlTableModelPrivate::None) {
- mrow.op = QSqlTableModelPrivate::Update;
- mrow.rec = d->rec;
- QSqlTableModelPrivate::clearGenerated(mrow.rec);
- mrow.primaryValues = d->primaryValues(indexInQuery(createIndex(row, 0)).row());
- }
+ if (mrow.op == QSqlTableModelPrivate::None)
+ mrow = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Update,
+ d->rec,
+ d->primaryValues(indexInQuery(createIndex(row, 0)).row()));
for (int i = 0; i < record.count(); ++i) {
int idx = d->nameToIndex(record.fieldName(i));
if (idx == -1) {
isOk = false;
} else {
- QSqlTableModelPrivate::setGeneratedValue(mrow.rec, idx, record.value(i));
+ mrow.setValue(idx, record.value(i));
}
}
diff --git a/src/sql/models/qsqltablemodel_p.h b/src/sql/models/qsqltablemodel_p.h
index b11c6a1c5c..9793babdc3 100644
--- a/src/sql/models/qsqltablemodel_p.h
+++ b/src/sql/models/qsqltablemodel_p.h
@@ -102,8 +102,13 @@ public:
struct ModifiedRow
{
- ModifiedRow(Op o = None, const QSqlRecord &r = QSqlRecord()): op(o), rec(r) { clearGenerated(rec);}
- ModifiedRow(const ModifiedRow &other): op(other.op), rec(other.rec), primaryValues(other.primaryValues) {}
+ inline ModifiedRow(Op o = None, const QSqlRecord &r = QSqlRecord(), const QSqlRecord &pVals = QSqlRecord())
+ : op(o), rec(r), primaryValues(pVals) { clearGenerated(rec); }
+ inline void setValue(int c, const QVariant &v)
+ {
+ rec.setValue(c, v);
+ rec.setGenerated(c, true);
+ }
Op op;
QSqlRecord rec;
QSqlRecord primaryValues;