From 2eaccc08d34bf8205bfecefb197d48c0a8434a1b Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Wed, 6 Jul 2011 10:58:56 +0200 Subject: improvements to ModifiedRow -remove unnecessary explicit copy constructor -explicitly inline constructor -more convenient initialization Change-Id: I78b275ef9d5413f95278a044345e42303dc35624 Reviewed-by: Yunqiao Yin --- src/sql/models/qsqltablemodel.cpp | 26 ++++++++++++-------------- src/sql/models/qsqltablemodel_p.h | 9 +++++++-- 2 files changed, 19 insertions(+), 16 deletions(-) (limited to 'src') 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; -- cgit v1.2.3