/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #include #include #include "smtreeitem.h" SmTreeItem::SmTreeItem(const QList &data, SmTreeItem *parent) : mData(data), mParent(parent) {} SmTreeItem::SmTreeItem(int rows, SmTreeItem *parent) : mParent(parent){ for(int i = 0; i < rows; ++i){ mData << QVariant(); } } SmTreeItem::SmTreeItem(const SmTreeItem &other){ mParent = 0; mData = other.mData; } SmTreeItem::~SmTreeItem(){ qDeleteAll(mChildren); } void SmTreeItem::appendChild(SmTreeItem *child){ mChildren.append(child); } SmTreeItem *SmTreeItem::child(int row) const{ if(row > -1 && row < mChildren.count()){ return mChildren.at(row); } return 0; } SmTreeItem *SmTreeItem::next() const{ int pos = row(); if(parent() == 0){ return 0; } if(pos + 1 < parent()->childCount()){ return parent()->child(pos + 1); } return parent()->next(); } int SmTreeItem::childCount() const{ return mChildren.count(); } int SmTreeItem::columnCount() const{ return mData.count(); } int SmTreeItem::row() const{ if(mParent){ return mParent->mChildren.indexOf(const_cast(this)); } return 0; } SmTreeItem *SmTreeItem::parent() const{ return mParent; } void SmTreeItem::setParent(SmTreeItem *parent){ mParent = parent; } QVariant SmTreeItem::data(int column) const{ return mData.at(column); } void SmTreeItem::setData(int column, const QVariant &data){ mData[column] = data; } bool SmTreeItem::insertChild(int where, SmTreeItem *child){ if((where < 0) || (where > mChildren.count())){ return false; } mChildren.insert(where, child); return true; } bool SmTreeItem::removeChild(int where, bool deleteChild){ if((where < 0) || (where >= mChildren.count())){ return false; } SmTreeItem *child = mChildren.takeAt(where); if(deleteChild){ delete child; } return true; }