diff options
author | Mark Brand <mabrand@mabrand.nl> | 2011-07-06 10:58:56 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-27 22:48:12 +0100 |
commit | 2eaccc08d34bf8205bfecefb197d48c0a8434a1b (patch) | |
tree | 8886d09f52418ef8d2470f6b1d5d71e2d388cbe7 /src/sql/models | |
parent | 7785227214cdabfb07ff7e425e1f41aa86fb5faf (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.cpp | 26 | ||||
-rw-r--r-- | src/sql/models/qsqltablemodel_p.h | 9 |
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; |