summaryrefslogtreecommitdiffstats
path: root/src/sql/models
diff options
context:
space:
mode:
authorMark Brand <mabrand@mabrand.nl>2011-07-06 20:52:06 +0200
committerQt by Nokia <qt-info@nokia.com>2012-02-05 17:50:26 +0100
commitccaa6734f124e9afc86c29e93b77b38ffc54254b (patch)
treec3199ab71177f426368904bc6b4a4d7c4c8049a1 /src/sql/models
parent48c68b05465e488020e241dd66290777b0eeeb3d (diff)
merge private and public QSqlTableModel::setRecord()
Change-Id: I409bd32f85224db64363688d63fc372d1beaa0d3 Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
Diffstat (limited to 'src/sql/models')
-rw-r--r--src/sql/models/qsqltablemodel.cpp54
-rw-r--r--src/sql/models/qsqltablemodel_p.h1
2 files changed, 22 insertions, 33 deletions
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index 19c9ba7b9b..8f63ee3910 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -66,36 +66,6 @@ QSqlRecord QSqlTableModelPrivate::record(const QVector<QVariant> &values) const
return r;
}
-/*! \internal
- Set a record for OnFieldChange and OnRowChange.
-*/
-bool QSqlTableModelPrivate::setRecord(int row, const QSqlRecord &record)
-{
- Q_Q(QSqlTableModel);
- bool isOk = true;
-
- QSqlTableModel::EditStrategy oldStrategy = strategy;
-
- // FieldChange strategy makes no sense when setting an entire row
- if (strategy == QSqlTableModel::OnFieldChange)
- strategy = QSqlTableModel::OnRowChange;
- for (int i = 0; i < record.count(); ++i) {
- int idx = nameToIndex(record.fieldName(i));
- if (idx == -1)
- continue;
- QModelIndex cIndex = q->createIndex(row, idx);
- QVariant value = record.value(i);
- QVariant oldValue = q->data(cIndex);
- if (oldValue.isNull() || oldValue != value)
- isOk &= q->setData(cIndex, value, Qt::EditRole);
- }
- if (isOk && oldStrategy == QSqlTableModel::OnFieldChange)
- q->submitAll();
- strategy = oldStrategy;
-
- return isOk;
-}
-
int QSqlTableModelPrivate::nameToIndex(const QString &name) const
{
QString fieldname = name;
@@ -1236,8 +1206,28 @@ bool QSqlTableModel::setRecord(int row, const QSqlRecord &record)
bool isOk = true;
switch (d->strategy) {
case OnFieldChange:
- case OnRowChange:
- return d->setRecord(row, record);
+ case OnRowChange: {
+ EditStrategy oldStrategy = d->strategy;
+
+ // FieldChange strategy makes no sense when setting an entire row
+ if (d->strategy == OnFieldChange)
+ d->strategy = OnRowChange;
+ for (int i = 0; i < record.count(); ++i) {
+ int idx = d->nameToIndex(record.fieldName(i));
+ if (idx == -1)
+ continue;
+ QModelIndex cIndex = createIndex(row, idx);
+ QVariant value = record.value(i);
+ QVariant oldValue = data(cIndex);
+ if (oldValue.isNull() || oldValue != value)
+ isOk &= setData(cIndex, value, Qt::EditRole);
+ }
+ if (isOk && oldStrategy == OnFieldChange)
+ submitAll();
+ d->strategy = oldStrategy;
+
+ return isOk;
+ }
case OnManualSubmit: {
QSqlTableModelPrivate::ModifiedRow &mrow = d->cache[row];
if (mrow.op == QSqlTableModelPrivate::None)
diff --git a/src/sql/models/qsqltablemodel_p.h b/src/sql/models/qsqltablemodel_p.h
index b69f53473c..56fd839a0c 100644
--- a/src/sql/models/qsqltablemodel_p.h
+++ b/src/sql/models/qsqltablemodel_p.h
@@ -76,7 +76,6 @@ public:
bool exec(const QString &stmt, bool prepStatement,
const QSqlRecord &rec, const QSqlRecord &whereValues);
virtual void revertCachedRow(int row);
- bool setRecord(int row, const QSqlRecord &record);
virtual int nameToIndex(const QString &name) const;
void initRecordAndPrimaryIndex();