improvements to ModifiedRow
-remove unnecessary explicit copy constructor -explicitly inline constructor -more convenient initialization Change-Id: I78b275ef9d5413f95278a044345e42303dc35624 Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>bb10
parent
7785227214
commit
2eaccc08d3
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue