#include "ngltreeitem.h" NGLTreeItem::~NGLTreeItem() { qDeleteAll(m_childItems); } NGLTreeItem::NGLTreeItem(const NGLTreeItem &orig) { set(orig); } NGLTreeItem &NGLTreeItem::operator=(const NGLTreeItem &orig) { set(orig); return *this; } void NGLTreeItem::set(const NGLTreeItem &orig) { m_parentItem = orig.m_parentItem; m_modified = orig.m_modified; m_data = orig.m_data; m_icon = orig.m_icon; const auto origChildren = orig.children(); for (NGLTreeItem *origChild : origChildren) appendChild(new NGLTreeItem(*origChild)); } bool NGLTreeItem::insertChild(int row, NGLTreeItem *item) { if ((row >= 0) && (row <= childCount())) { item->m_parentItem = this; m_childItems.insert(row, item); return true; } return false; } void NGLTreeItem::appendChild(NGLTreeItem *item) { item->m_parentItem = this; m_childItems.push_back(item); } NGLTreeItem *NGLTreeItem::takeChild(int row) { return validRow(row) ? m_childItems.takeAt(row) : nullptr; } bool NGLTreeItem::removeChild(int row) { if (!validRow(row)) return false; delete m_childItems.takeAt(row); return true; } bool NGLTreeItem::removeChild(const NGLTreeItem *child) { for (int row = 0; row < m_childItems.size(); ++row) { if (m_childItems.at(row) == child) { removeChild(row); return true; } } return false; } bool NGLTreeItem::removeChildren(int row, int count) { int lastRow = row + count - 1; if (validRow(row) && (lastRow >= 0) && (lastRow < childCount())) { while (lastRow >= row) { delete m_childItems.takeAt(row); --lastRow; } return true; } return false; } bool NGLTreeItem::removeAllChildren() { qDeleteAll(m_childItems); m_childItems.clear(); return true; } int NGLTreeItem::row() const { if (m_parentItem) return m_parentItem->m_childItems.indexOf(const_cast(this)); return 0; } void NGLTreeItem::setData(const QVariant &data) { if (m_data != data) { m_data = data; setModified(true); } }