merge private and public QSqlTableModel::setRecord()
authorMark Brand <mabrand@mabrand.nl>
Wed, 6 Jul 2011 18:52:06 +0000 (20:52 +0200)
committerQt by Nokia <qt-info@nokia.com>
Sun, 5 Feb 2012 16:50:26 +0000 (17:50 +0100)
Change-Id: I409bd32f85224db64363688d63fc372d1beaa0d3
Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
src/sql/models/qsqltablemodel.cpp
src/sql/models/qsqltablemodel_p.h

index 19c9ba7..8f63ee3 100644 (file)
@@ -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)
index b69f534..56fd839 100644 (file)
@@ -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();