- for(int i = firstRow; i <= lastRow; i++) {
- disconnect(parentItem->child(i), 0, this, 0);
- }
-
- // consitency checks
- QModelIndex parent = indexByItem(parentItem);
- Q_ASSERT(firstRow <= lastRow);
- Q_ASSERT(parentItem->childCount() > lastRow);
- Q_ASSERT(!_aboutToRemoveOrInsert);
- _aboutToRemoveOrInsert = true;
- _childStatus = ChildStatus(parent, rowCount(parent), firstRow, lastRow);
-
- beginRemoveRows(parent, firstRow, lastRow);
-}
-
-void TreeModel::endRemoveChilds() {
- AbstractTreeItem *parentItem = qobject_cast<AbstractTreeItem *>(sender());
- if(!parentItem) {
- qWarning() << "TreeModel::endRemoveChilds(): cannot remove Childs from unknown parent";
- return;
- }
-
- // concistency checks
- Q_ASSERT(_aboutToRemoveOrInsert);
- ChildStatus cs = _childStatus;
- QModelIndex parent = indexByItem(parentItem);
- Q_ASSERT(cs.parent == parent);
- Q_ASSERT(rowCount(parent) == cs.childCount - cs.end + cs.start - 1);
- _aboutToRemoveOrInsert = false;
-
- endRemoveRows();
-}
-
-void TreeModel::clear() {
- rootItem->removeAllChilds();
-}
-
-void TreeModel::debug_rowsAboutToBeInserted(const QModelIndex &parent, int start, int end) {
- qDebug() << "debug_rowsAboutToBeInserted" << parent << parent.internalPointer() << parent.data().toString() << rowCount(parent) << start << end;
-}
-
-void TreeModel::debug_rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) {
- AbstractTreeItem *parentItem;
- parentItem = static_cast<AbstractTreeItem *>(parent.internalPointer());
- if(!parentItem)
- parentItem = rootItem;
- qDebug() << "debug_rowsAboutToBeRemoved" << parent << parentItem << parent.data().toString() << rowCount(parent) << start << end;
-
- QModelIndex child;
- AbstractTreeItem *childItem;
- for(int i = end; i >= start; i--) {
- child = parent.child(i, 0);
- childItem = parentItem->child(i);
- Q_ASSERT(childItem);
- qDebug() << ">>>" << i << child << child.data().toString();
- }
-}
-
-void TreeModel::debug_rowsInserted(const QModelIndex &parent, int start, int end) {
- AbstractTreeItem *parentItem;
- parentItem = static_cast<AbstractTreeItem *>(parent.internalPointer());
- if(!parentItem)
- parentItem = rootItem;
- qDebug() << "debug_rowsInserted:" << parent << parentItem << parent.data().toString() << rowCount(parent) << start << end;
-
- QModelIndex child;
- AbstractTreeItem *childItem;
- for(int i = start; i <= end; i++) {
- child = parent.child(i, 0);
- childItem = parentItem->child(i);
- Q_ASSERT(childItem);
- qDebug() << "<<<" << i << child << child.data().toString();
- }
-}
-
-void TreeModel::debug_rowsRemoved(const QModelIndex &parent, int start, int end) {
- qDebug() << "debug_rowsRemoved" << parent << parent.internalPointer() << parent.data().toString() << rowCount(parent) << start << end;
-}
-
-void TreeModel::debug_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) {
- qDebug() << "debug_dataChanged" << topLeft << bottomRight;
- QStringList displayData;
- for(int row = topLeft.row(); row <= bottomRight.row(); row++) {
- displayData = QStringList();
- for(int column = topLeft.column(); column <= bottomRight.column(); column++) {
- displayData << data(topLeft.sibling(row, column), Qt::DisplayRole).toString();