equal
deleted
inserted
replaced
312 { |
312 { |
313 Q_D(QSqlQueryModel); |
313 Q_D(QSqlQueryModel); |
314 QSqlRecord newRec = query.record(); |
314 QSqlRecord newRec = query.record(); |
315 bool columnsChanged = (newRec != d->rec); |
315 bool columnsChanged = (newRec != d->rec); |
316 bool hasQuerySize = query.driver()->hasFeature(QSqlDriver::QuerySize); |
316 bool hasQuerySize = query.driver()->hasFeature(QSqlDriver::QuerySize); |
|
317 bool hasNewData = (newRec != QSqlRecord()) || !query.lastError().isValid(); |
317 |
318 |
318 if (d->colOffsets.size() != newRec.count() || columnsChanged) |
319 if (d->colOffsets.size() != newRec.count() || columnsChanged) |
319 d->initColOffsets(newRec.count()); |
320 d->initColOffsets(newRec.count()); |
320 |
321 |
321 bool mustClearModel = d->bottom.isValid(); |
322 bool mustClearModel = d->bottom.isValid(); |
326 } |
327 } |
327 |
328 |
328 d->error = QSqlError(); |
329 d->error = QSqlError(); |
329 d->query = query; |
330 d->query = query; |
330 d->rec = newRec; |
331 d->rec = newRec; |
331 |
332 |
332 if (mustClearModel) |
333 if (mustClearModel) |
333 endRemoveRows(); |
334 endRemoveRows(); |
334 |
335 |
335 d->atEnd = false; |
336 d->atEnd = false; |
336 |
337 |
337 if (columnsChanged) |
338 if (columnsChanged && hasNewData) |
338 reset(); |
339 reset(); |
339 |
340 |
340 if (!query.isActive() || query.isForwardOnly()) { |
341 if (!query.isActive() || query.isForwardOnly()) { |
341 d->atEnd = true; |
342 d->atEnd = true; |
342 d->bottom = QModelIndex(); |
343 d->bottom = QModelIndex(); |
415 */ |
416 */ |
416 bool QSqlQueryModel::setHeaderData(int section, Qt::Orientation orientation, |
417 bool QSqlQueryModel::setHeaderData(int section, Qt::Orientation orientation, |
417 const QVariant &value, int role) |
418 const QVariant &value, int role) |
418 { |
419 { |
419 Q_D(QSqlQueryModel); |
420 Q_D(QSqlQueryModel); |
420 if (orientation != Qt::Horizontal || section < 0) |
421 if (orientation != Qt::Horizontal || section < 0 || columnCount() <= section) |
421 return false; |
422 return false; |
422 |
423 |
423 if (d->headers.size() <= section) |
424 if (d->headers.size() <= section) |
424 d->headers.resize(qMax(section + 1, 16)); |
425 d->headers.resize(qMax(section + 1, 16)); |
425 d->headers[section][role] = value; |
426 d->headers[section][role] = value; |