From 48c68b05465e488020e241dd66290777b0eeeb3d Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Wed, 6 Jul 2011 09:49:45 +0200 Subject: ModifiedRow: use for all edit strategies Previously ModifiedRow was used only for OnManualSubmit and a seperate buffer and utility methods were used for OnFieldChange and OnRowChange. Also, initialization of the edit buffer is done by ModifiedRow instead of a helper function. Change-Id: I3316498e5bb10c416138ca14c3a7f8b143c8e544 Reviewed-by: Yunqiao Yin --- src/sql/models/qsqlrelationaltablemodel.cpp | 32 ++++++++--------------------- 1 file changed, 9 insertions(+), 23 deletions(-) (limited to 'src/sql/models/qsqlrelationaltablemodel.cpp') diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp index e9b9e719a5f..e12976ef245 100644 --- a/src/sql/models/qsqlrelationaltablemodel.cpp +++ b/src/sql/models/qsqlrelationaltablemodel.cpp @@ -265,7 +265,6 @@ public: mutable QVector relations; QSqlRecord baseRec; // the record without relations void clearChanges(); - void clearEditBuffer(); void clearCache(); void revertCachedRow(int row); @@ -311,12 +310,6 @@ int QSqlRelationalTableModelPrivate::nameToIndex(const QString &name) const return idx; } -void QSqlRelationalTableModelPrivate::clearEditBuffer() -{ - editBuffer = baseRec; - clearGenerated(editBuffer); -} - /*! \reimp */ @@ -445,23 +438,16 @@ QVariant QSqlRelationalTableModel::data(const QModelIndex &index, int role) cons //when the value at index has been changed or added. //At an unmodified index, the underlying model will //already have the correct display value. - QVariant v; - switch (d->strategy) { - case OnFieldChange: - break; - case OnRowChange: - if ((index.row() == d->editIndex || index.row() == d->insertIndex) - && d->editBuffer.isGenerated(index.column())) - v = d->editBuffer.value(index.column()); - break; - case OnManualSubmit: - const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row()); - if (row.op != QSqlTableModelPrivate::None && row.rec.isGenerated(index.column())) - v = row.rec.value(index.column()); - break; + if (d->strategy != OnFieldChange) { + const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row()); + if (row.op != QSqlTableModelPrivate::None && row.rec.isGenerated(index.column())) { + if (d->strategy == OnManualSubmit || row.op != QSqlTableModelPrivate::Delete) { + QVariant v = row.rec.value(index.column()); + if (v.isValid()) + return relation.dictionary[v.toString()]; + } + } } - if (v.isValid()) - return relation.dictionary[v.toString()]; } return QSqlTableModel::data(index, role); } -- cgit v1.2.3