return true;
}
+bool AbstractTreeItem::newChilds(const QList<AbstractTreeItem *> &items) {
+ if(items.isEmpty())
+ return false;
+
+ QList<AbstractTreeItem *>::const_iterator itemIter = items.constBegin();
+ AbstractTreeItem *item;
+ while(itemIter != items.constEnd()) {
+ item = *itemIter;
+ if(childById(item->id()) != 0) {
+ qWarning() << "AbstractTreeItem::newChilds(): received child that is already attached" << item << item->id();
+ return false;
+ }
+ itemIter++;
+ }
+
+ int nextRow = childCount();
+ int lastRow = nextRow + items.count() - 1;
+
+ emit beginAppendChilds(nextRow, lastRow);
+ itemIter = items.constBegin();
+ while(itemIter != items.constEnd()) {
+ _childItems.append(*itemIter);
+ itemIter++;
+ }
+ emit endAppendChilds();
+
+ return true;
+}
+
bool AbstractTreeItem::removeChild(int row) {
if(childCount() <= row)
return false;
+ child(row)->removeAllChilds();
emit beginRemoveChilds(row, row);
AbstractTreeItem *treeitem = _childItems.takeAt(row);
treeitem->deleteLater();
AbstractTreeItem *child;
+ QList<AbstractTreeItem *>::iterator childIter;
+
+ childIter = _childItems.begin();
+ while(childIter != _childItems.end()) {
+ child = *childIter;
+ child->removeAllChilds();
+ childIter++;
+ }
+
emit beginRemoveChilds(0, numChilds - 1);
- QList<AbstractTreeItem *>::iterator childIter = _childItems.begin();
+ childIter = _childItems.begin();
while(childIter != _childItems.end()) {
child = *childIter;
childIter = _childItems.erase(childIter);
}
void TreeModel::debug_rowsAboutToBeInserted(const QModelIndex &parent, int start, int end) {
- // qDebug() << "debug_rowsAboutToBeInserted" << parent << parent.internalPointer() << parent.data().toString() << rowCount(parent) << start << 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) {
}
void TreeModel::debug_rowsRemoved(const QModelIndex &parent, int start, int end) {
- // qDebug() << "debug_rowsRemoved" << parent << parent.internalPointer() << parent.data().toString() << rowCount(parent) << start << end;
+ qDebug() << "debug_rowsRemoved" << parent << parent.internalPointer() << parent.data().toString() << rowCount(parent) << start << end;
}