insilmaril@760: #include "mapitem.h" insilmaril@760: insilmaril@760: #include "linkablemapobj.h" insilmaril@760: #include "ornamentedobj.h" insilmaril@760: insilmaril@760: MapItem::MapItem() insilmaril@760: { insilmaril@776: init(); insilmaril@776: } insilmaril@776: insilmaril@779: MapItem::MapItem(const QList &data, TreeItem *parent):TreeItem (data,parent) insilmaril@779: { insilmaril@779: init(); insilmaril@779: } insilmaril@779: insilmaril@776: void MapItem::init() insilmaril@776: { insilmaril@760: lmo=NULL; insilmaril@760: posMode=Unused; insilmaril@779: hideLinkUnselected=false; insilmaril@779: } insilmaril@779: insilmaril@779: void MapItem::appendChild (TreeItem *item) insilmaril@779: { insilmaril@779: TreeItem::appendChild (item); insilmaril@779: insilmaril@779: // FIXME-4 maybe access parent in MapObjs directly via treeItem insilmaril@779: // and remove this here... insilmaril@779: insilmaril@779: // If lmo exists, also set parObj there insilmaril@779: if (lmo && (item->isBranchLikeType() || item->getType()==TreeItem::Image) ) insilmaril@779: { insilmaril@779: LinkableMapObj *itemLMO=((MapItem*)item)->lmo; insilmaril@779: if (itemLMO) insilmaril@779: itemLMO->setParObj (lmo); insilmaril@779: } insilmaril@760: } insilmaril@760: insilmaril@760: void MapItem::setRelPos (const QPointF &p) insilmaril@760: { insilmaril@760: posMode=Relative; insilmaril@760: pos=p; insilmaril@760: if (lmo) insilmaril@760: { insilmaril@760: ((OrnamentedObj*)lmo)->setUseRelPos (true); insilmaril@760: ((OrnamentedObj*)lmo)->move2RelPos(p); insilmaril@760: } insilmaril@760: } insilmaril@760: insilmaril@760: void MapItem::setAbsPos (const QPointF &p) insilmaril@760: { insilmaril@760: posMode=Absolute; insilmaril@760: pos=p; insilmaril@760: if (lmo) lmo->move (p); insilmaril@760: } insilmaril@760: insilmaril@775: void MapItem::setPositionMode (PositionMode mode) insilmaril@775: { insilmaril@775: posMode=mode; insilmaril@775: } insilmaril@775: insilmaril@779: void MapItem::setHideLinkUnselected (bool b) insilmaril@779: { insilmaril@779: hideLinkUnselected=b; insilmaril@779: if (lmo) lmo->setHideLinkUnselected(); insilmaril@779: } insilmaril@779: insilmaril@779: bool MapItem::getHideLinkUnselected() insilmaril@779: { insilmaril@779: return hideLinkUnselected; insilmaril@779: } insilmaril@779: insilmaril@779: QString MapItem::getMapAttr () insilmaril@779: { insilmaril@779: QString s; insilmaril@779: insilmaril@779: if (parentItem==rootItem) insilmaril@779: posMode=Absolute; insilmaril@779: else insilmaril@779: { insilmaril@779: if (type==TreeItem::Image ||depth()==1) insilmaril@779: posMode=Relative; insilmaril@779: else insilmaril@779: posMode=Unused; insilmaril@779: } insilmaril@779: switch (posMode) insilmaril@779: { insilmaril@779: case Relative: insilmaril@779: if (lmo) pos=lmo->getRelPos(); insilmaril@779: s= attribut("relPosX",QString().setNum(pos.x())) + insilmaril@779: attribut("relPosY",QString().setNum(pos.y())); insilmaril@779: break; insilmaril@779: case Absolute: insilmaril@779: if (lmo) pos=lmo->getAbsPos(); insilmaril@779: s=attribut("absPosX",QString().setNum(pos.x())) + insilmaril@779: attribut("absPosY",QString().setNum(pos.y())); insilmaril@779: break; insilmaril@779: default: break; insilmaril@779: } insilmaril@779: if (hideLinkUnselected) insilmaril@779: s+=attribut ("hideLink","true"); insilmaril@779: else insilmaril@779: s+=attribut ("hideLink","false"); insilmaril@779: return s; insilmaril@779: } insilmaril@779: insilmaril@760: LinkableMapObj* MapItem::getLMO() insilmaril@760: { insilmaril@760: return lmo; insilmaril@760: } insilmaril@760: insilmaril@760: void MapItem::setLMO(LinkableMapObj *l) insilmaril@760: { insilmaril@760: lmo=l; insilmaril@760: } insilmaril@760: insilmaril@760: void MapItem::initLMO() insilmaril@760: { insilmaril@760: if (!lmo) return; insilmaril@760: switch (posMode) insilmaril@760: { insilmaril@760: case Relative: insilmaril@760: lmo->setRelPos (pos); insilmaril@760: break; insilmaril@760: case Absolute: insilmaril@760: lmo->move (pos); insilmaril@760: break; insilmaril@760: default: insilmaril@760: break; insilmaril@760: } insilmaril@760: } insilmaril@760: