+bool AbstractTreeItem::removeChild(int row) {
+ return removeChild(defaultColumn(), row);
+}
+
+bool AbstractTreeItem::removeChildById(int column, const quint64 &id) {
+ if(!_childItems.contains(column))
+ return false;
+
+ for(int i = 0; i < _childItems[column].count(); i++) {
+ if(_childItems[column][i]->id() == id)
+ return removeChild(column, i);
+ }
+ return false;
+}
+
+bool AbstractTreeItem::removeChildById(const quint64 &id) {
+ return removeChildById(defaultColumn(), id);
+}
+
+void AbstractTreeItem::removeAllChilds() {
+ AbstractTreeItem *child;
+
+ QHash<int, QList<AbstractTreeItem *> >::iterator columnIter = _childItems.begin();
+ while(columnIter != _childItems.end()) {
+ if(columnIter->count() > 0) {
+ emit beginRemoveChilds(columnIter.key(), 0, columnIter->count() - 1);
+ QList<AbstractTreeItem *>::iterator childIter = columnIter->begin();
+ while(childIter != columnIter->end()) {
+ child = *childIter;
+ // child->removeAllChilds();
+ childIter = columnIter->erase(childIter);
+ child->deleteLater();
+ }
+ emit endRemoveChilds();
+ }
+ columnIter++;
+ }