improvements to ModifiedRow
authorMark Brand <mabrand@mabrand.nl>
Wed, 6 Jul 2011 08:58:56 +0000 (10:58 +0200)
committerQt by Nokia <qt-info@nokia.com>
Fri, 27 Jan 2012 21:48:12 +0000 (22:48 +0100)
-remove unnecessary explicit copy constructor
-explicitly inline constructor
-more convenient initialization

Change-Id: I78b275ef9d5413f95278a044345e42303dc35624
Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
src/sql/models/qsqltablemodel.cpp
src/sql/models/qsqltablemodel_p.h

index 226f2c7..4308359 100644 (file)
@@ -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));
             }
         }
 
index b11c6a1..9793bab 100644 (file)
@@ -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;