132 lines
2.0 KiB
C++
Executable File
132 lines
2.0 KiB
C++
Executable File
|
|
|
|
|
|
#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<NGLTreeItem *>(this));
|
|
return 0;
|
|
}
|
|
|
|
|
|
void NGLTreeItem::setData(const QVariant &data)
|
|
{
|
|
if (m_data != data)
|
|
{
|
|
m_data = data;
|
|
setModified(true);
|
|
}
|
|
}
|