insilmaril@725: #include insilmaril@725: insilmaril@725: #include "treeitem.h" insilmaril@725: insilmaril@725: TreeItem::TreeItem(const QList &data, TreeItem *parent) insilmaril@725: { insilmaril@725: parentItem = parent; insilmaril@725: itemData = data; insilmaril@726: lmo=NULL; insilmaril@738: insilmaril@738: branchOffset=0; insilmaril@738: branchCount=0; insilmaril@738: lastSelectedBranchNum=-1; insilmaril@725: } insilmaril@725: insilmaril@725: TreeItem::~TreeItem() insilmaril@725: { insilmaril@725: qDeleteAll(childItems); insilmaril@725: } insilmaril@725: insilmaril@725: void TreeItem::appendChild(TreeItem *item) insilmaril@725: { insilmaril@725: childItems.append(item); insilmaril@738: if (item->type == Branch) insilmaril@738: { insilmaril@738: if (branchCount==0) insilmaril@738: branchOffset=childItems.count()-1; insilmaril@738: branchCount++; insilmaril@738: } insilmaril@725: } insilmaril@725: insilmaril@727: void TreeItem::removeChild(int row) insilmaril@727: { insilmaril@727: if (row>=0) insilmaril@727: { insilmaril@727: delete (childItems.at(row) ); insilmaril@727: childItems.removeAt (row); insilmaril@727: } else insilmaril@727: qWarning ("TreeItem::removeChild tried to remove non existing item?!\n"); insilmaril@727: } insilmaril@727: insilmaril@725: TreeItem *TreeItem::child(int row) insilmaril@725: { insilmaril@725: return childItems.value(row); insilmaril@725: } insilmaril@725: insilmaril@725: int TreeItem::childCount() const insilmaril@725: { insilmaril@725: return childItems.count(); insilmaril@725: } insilmaril@725: insilmaril@725: int TreeItem::columnCount() const insilmaril@725: { insilmaril@725: return itemData.count(); insilmaril@725: } insilmaril@727: int TreeItem::row() const insilmaril@727: { insilmaril@727: if (parentItem) insilmaril@727: return parentItem->childItems.indexOf(const_cast(this)); insilmaril@727: insilmaril@727: return 0; insilmaril@727: } insilmaril@727: insilmaril@727: int TreeItem::column() const insilmaril@727: { insilmaril@727: return 0; insilmaril@727: } insilmaril@727: insilmaril@727: TreeItem *TreeItem::parent() insilmaril@727: { insilmaril@727: return parentItem; insilmaril@727: } insilmaril@727: insilmaril@725: insilmaril@725: QVariant TreeItem::data(int column) const insilmaril@725: { insilmaril@725: return itemData.value(column); insilmaril@725: } insilmaril@725: insilmaril@726: void TreeItem::setHeading (const QString s) insilmaril@725: { insilmaril@726: itemData[0]=s; insilmaril@726: } insilmaril@726: insilmaril@726: QString TreeItem::getHeading () insilmaril@726: { insilmaril@726: return itemData[0].toString(); insilmaril@726: } insilmaril@726: insilmaril@726: void TreeItem::setType(const Type t) insilmaril@726: { insilmaril@726: type=t; insilmaril@726: itemData[1]=getTypeName(); insilmaril@726: } insilmaril@726: insilmaril@726: TreeItem::Type TreeItem::getType() insilmaril@726: { insilmaril@726: return type; insilmaril@726: } insilmaril@726: insilmaril@726: QString TreeItem::getTypeName() insilmaril@726: { insilmaril@726: switch (type) insilmaril@726: { insilmaril@726: case Undefined: return QString ("Undefined"); insilmaril@726: case MapCenter: return QString ("MapCenter"); insilmaril@726: case Branch: return QString ("Branch"); insilmaril@739: case Image: return QString ("Image"); insilmaril@726: default: return QString ("TreeItem::getTypeName no typename defined?!"); insilmaril@726: } insilmaril@725: } insilmaril@725: insilmaril@738: TreeItem* TreeItem::getChildNum(const int &n) insilmaril@738: { insilmaril@738: if (n>=0 && n0) insilmaril@738: return getBranchNum (branchOffset); insilmaril@738: else insilmaril@738: return NULL; insilmaril@738: } insilmaril@738: insilmaril@738: TreeItem* TreeItem::getLastBranch() insilmaril@738: { insilmaril@738: if (branchCount>0) insilmaril@738: return getBranchNum (branchOffset + branchCount-1); insilmaril@738: else insilmaril@738: return NULL; insilmaril@738: } insilmaril@738: insilmaril@738: insilmaril@738: TreeItem* TreeItem::getBranchNum(const int &n) insilmaril@738: { insilmaril@738: if (branchCount>0) insilmaril@738: return getChildNum (branchOffset + n); insilmaril@738: else insilmaril@738: return NULL; insilmaril@738: } insilmaril@738: insilmaril@738: void TreeItem::setLastSelectedBranch() insilmaril@738: { insilmaril@738: if (parentItem) insilmaril@738: parentItem->lastSelectedBranchNum=parentItem->childItems.indexOf(this); insilmaril@738: } insilmaril@738: insilmaril@738: TreeItem* TreeItem::getLastSelectedBranch() insilmaril@738: { insilmaril@738: return getBranchNum (lastSelectedBranchNum); insilmaril@738: } insilmaril@738: insilmaril@727: LinkableMapObj* TreeItem::getLMO() // FIXME VM should be unnecessary in the end insilmaril@726: { insilmaril@726: return lmo; insilmaril@726: } insilmaril@726: insilmaril@726: void TreeItem::setLMO(LinkableMapObj *l) insilmaril@726: { insilmaril@726: lmo=l; insilmaril@726: } insilmaril@726: