summaryrefslogtreecommitdiffstats
path: root/src/sql/models
diff options
context:
space:
mode:
authorMark Brand <mabrand@mabrand.nl>2012-08-29 10:14:08 +0200
committerQt by Nokia <qt-info@nokia.com>2012-08-30 13:51:22 +0200
commita3963d8bbcf7b4916c0e7c983cf32f95bf727e8c (patch)
tree4e63a8197653dc343305a4d14f3e2c70ac038185 /src/sql/models
parentc194b7f3454f470d24be729ef660c5cfe7a9b841 (diff)
QSqlQueryModel: suppress insert and remove signals while resetting
There is no need to emit signals for inserting and removing rows and columns while resetting the model. Suppress these signals in such a way that subclasses can benefit without worrying about it. Change-Id: I04447c87173be54a7323b97608cdd40ae245b80b Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'src/sql/models')
-rw-r--r--src/sql/models/qsqlquerymodel.cpp78
-rw-r--r--src/sql/models/qsqlquerymodel.h12
2 files changed, 86 insertions, 4 deletions
diff --git a/src/sql/models/qsqlquerymodel.cpp b/src/sql/models/qsqlquerymodel.cpp
index ea3bc7f20b..9d0447c981 100644
--- a/src/sql/models/qsqlquerymodel.cpp
+++ b/src/sql/models/qsqlquerymodel.cpp
@@ -78,11 +78,9 @@ void QSqlQueryModelPrivate::prefetch(int limit)
atEnd = true; // this is the end.
}
if (newBottom.row() >= 0 && newBottom.row() > bottom.row()) {
- if (!nestedResetLevel)
- q->beginInsertRows(QModelIndex(), bottom.row() + 1, newBottom.row());
+ q->beginInsertRows(QModelIndex(), bottom.row() + 1, newBottom.row());
bottom = newBottom;
- if (!nestedResetLevel)
- q->endInsertRows();
+ q->endInsertRows();
} else {
bottom = newBottom;
}
@@ -212,6 +210,78 @@ bool QSqlQueryModel::canFetchMore(const QModelIndex &parent) const
/*! \internal
*/
+void QSqlQueryModel::beginInsertRows(const QModelIndex &parent, int first, int last)
+{
+ Q_D(QSqlQueryModel);
+ if (!d->nestedResetLevel)
+ QAbstractTableModel::beginInsertRows(parent, first, last);
+}
+
+/*! \internal
+ */
+void QSqlQueryModel::endInsertRows()
+{
+ Q_D(QSqlQueryModel);
+ if (!d->nestedResetLevel)
+ QAbstractTableModel::endInsertRows();
+}
+
+/*! \internal
+ */
+void QSqlQueryModel::beginRemoveRows(const QModelIndex &parent, int first, int last)
+{
+ Q_D(QSqlQueryModel);
+ if (!d->nestedResetLevel)
+ QAbstractTableModel::beginRemoveRows(parent, first, last);
+}
+
+/*! \internal
+ */
+void QSqlQueryModel::endRemoveRows()
+{
+ Q_D(QSqlQueryModel);
+ if (!d->nestedResetLevel)
+ QAbstractTableModel::endRemoveRows();
+}
+
+/*! \internal
+ */
+void QSqlQueryModel::beginInsertColumns(const QModelIndex &parent, int first, int last)
+{
+ Q_D(QSqlQueryModel);
+ if (!d->nestedResetLevel)
+ QAbstractTableModel::beginInsertColumns(parent, first, last);
+}
+
+/*! \internal
+ */
+void QSqlQueryModel::endInsertColumns()
+{
+ Q_D(QSqlQueryModel);
+ if (!d->nestedResetLevel)
+ QAbstractTableModel::endInsertColumns();
+}
+
+/*! \internal
+ */
+void QSqlQueryModel::beginRemoveColumns(const QModelIndex &parent, int first, int last)
+{
+ Q_D(QSqlQueryModel);
+ if (!d->nestedResetLevel)
+ QAbstractTableModel::beginRemoveColumns(parent, first, last);
+}
+
+/*! \internal
+ */
+void QSqlQueryModel::endRemoveColumns()
+{
+ Q_D(QSqlQueryModel);
+ if (!d->nestedResetLevel)
+ QAbstractTableModel::endRemoveColumns();
+}
+
+/*! \internal
+ */
void QSqlQueryModel::beginResetModel()
{
Q_D(QSqlQueryModel);
diff --git a/src/sql/models/qsqlquerymodel.h b/src/sql/models/qsqlquerymodel.h
index 89b72c8222..fd9ec53155 100644
--- a/src/sql/models/qsqlquerymodel.h
+++ b/src/sql/models/qsqlquerymodel.h
@@ -90,6 +90,18 @@ public:
bool canFetchMore(const QModelIndex &parent = QModelIndex()) const;
protected:
+ void beginInsertRows(const QModelIndex &parent, int first, int last);
+ void endInsertRows();
+
+ void beginRemoveRows(const QModelIndex &parent, int first, int last);
+ void endRemoveRows();
+
+ void beginInsertColumns(const QModelIndex &parent, int first, int last);
+ void endInsertColumns();
+
+ void beginRemoveColumns(const QModelIndex &parent, int first, int last);
+ void endRemoveColumns();
+
void beginResetModel();
void endResetModel();
virtual void queryChange();