insilmaril@747: #include "branchitem.h" insilmaril@747: #include "branchobj.h" insilmaril@747: insilmaril@747: #include insilmaril@747: using namespace std; insilmaril@747: insilmaril@747: BranchItem::BranchItem(const QList &data, TreeItem *parent):TreeItem (data,parent) insilmaril@747: { insilmaril@749: //cout << "Constr. BranchItem\n"; insilmaril@749: insilmaril@749: scrolled=false; insilmaril@749: tmpUnscrolled=false; insilmaril@747: } insilmaril@747: insilmaril@747: BranchItem::~BranchItem() insilmaril@747: { insilmaril@747: cout << "Destr. BranchItem\n"; insilmaril@747: qDeleteAll(childItems); insilmaril@747: } insilmaril@747: insilmaril@749: void BranchItem::copy (BranchItem *other) insilmaril@749: { insilmaril@749: scrolled=other->scrolled; insilmaril@749: tmpUnscrolled=other->tmpUnscrolled; insilmaril@749: } insilmaril@749: insilmaril@747: QString BranchItem::saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset) insilmaril@747: { insilmaril@747: // Cloudy stuff can be hidden during exports insilmaril@748: if (hidden) return QString(); insilmaril@747: insilmaril@747: QString s,a; insilmaril@747: BranchObj *bo=(BranchObj*)lmo; insilmaril@747: insilmaril@747: /* FIXME-1 insilmaril@747: // Update of note is usually done while unselecting a branch insilmaril@747: if (isNoteInEditor) getNoteFromTextEditor(); insilmaril@747: insilmaril@747: QString scrolledAttr; insilmaril@747: if (scrolled) insilmaril@747: scrolledAttr=attribut ("scrolled","yes"); insilmaril@747: else insilmaril@747: scrolledAttr=""; insilmaril@747: insilmaril@747: // save area, if not scrolled insilmaril@747: QString areaAttr; insilmaril@747: if (!((BranchObj*)(parObj))->isScrolled() ) insilmaril@747: { insilmaril@747: areaAttr= insilmaril@747: attribut("x1",QString().setNum(absPos.x()-offset.x())) + insilmaril@747: attribut("y1",QString().setNum(absPos.y()-offset.y())) + insilmaril@747: attribut("x2",QString().setNum(absPos.x()+width()-offset.x())) + insilmaril@747: attribut("y2",QString().setNum(absPos.y()+height()-offset.y())); insilmaril@747: insilmaril@747: } else insilmaril@747: areaAttr=""; insilmaril@747: insilmaril@747: // Providing an ID for a branch makes export to XHTML easier insilmaril@747: QString idAttr; insilmaril@747: if (countXLinks()>0) insilmaril@747: idAttr=attribut ("id",model->getSelectString(this)); //TODO directly access model insilmaril@747: else insilmaril@747: idAttr=""; insilmaril@747: insilmaril@747: */ insilmaril@747: s=beginElement ("branch" insilmaril@747: // +getOrnXMLAttr() insilmaril@747: // +scrolledAttr insilmaril@747: // +areaAttr insilmaril@747: // +idAttr insilmaril@747: // +getIncludeImageAttr() insilmaril@747: ); insilmaril@747: incIndent(); insilmaril@747: insilmaril@747: // save heading insilmaril@747: s+=valueElement("heading", getHeading(), insilmaril@747: attribut ("textColor",QColor( bo->getColor()).name())); insilmaril@747: insilmaril@747: /* insilmaril@747: // Save frame insilmaril@747: if (frame->getFrameType()!=FrameObj::NoFrame) insilmaril@747: s+=frame->saveToDir (); insilmaril@747: insilmaril@747: // save names of flags set insilmaril@747: s+=standardFlags->saveToDir(tmpdir,prefix,0); insilmaril@747: insilmaril@747: // Save FloatImages insilmaril@747: for (int i=0; isaveToDir (tmpdir,prefix); insilmaril@747: */ insilmaril@747: insilmaril@747: // save note insilmaril@747: if (!note.isEmpty() ) insilmaril@747: s+=note.saveToDir(); insilmaril@747: insilmaril@747: // Save branches insilmaril@747: TreeItem *ti=getFirstBranch(); insilmaril@747: TreeItem *last=getLastBranch(); insilmaril@747: while (ti && ti!=last) insilmaril@747: s+=ti->saveToDir(tmpdir,prefix,offset); insilmaril@747: insilmaril@747: /* insilmaril@747: // Save XLinks insilmaril@747: QString ol; // old link insilmaril@747: QString cl; // current link insilmaril@747: for (int i=0; isaveToDir(); insilmaril@747: if (cl!=ol) insilmaril@747: { insilmaril@747: s+=cl; insilmaril@747: ol=cl; insilmaril@747: } else insilmaril@747: { insilmaril@747: qWarning (QString("Ignoring of duplicate xLink in %1").arg(getHeading())); insilmaril@747: } insilmaril@747: } insilmaril@747: */ insilmaril@747: insilmaril@747: decIndent(); insilmaril@747: s+=endElement ("branch"); insilmaril@747: return s; insilmaril@747: } insilmaril@747: insilmaril@749: void BranchItem::unScroll() insilmaril@749: { insilmaril@749: if (tmpUnscrolled) resetTmpUnscroll(); insilmaril@749: if (scrolled) toggleScroll(); insilmaril@749: } insilmaril@747: insilmaril@749: void BranchItem::toggleScroll() insilmaril@749: { insilmaril@749: if (scrolled) insilmaril@749: { insilmaril@749: scrolled=false; insilmaril@749: //FIXME-1 systemFlags->deactivate("scrolledright"); insilmaril@749: /* insilmaril@749: for (int i=0; isetVisibility(true); insilmaril@749: */ insilmaril@749: } else insilmaril@749: { insilmaril@749: scrolled=true; insilmaril@749: /* insilmaril@749: //FIXME-1 systemFlags->activate("scrolledright"); insilmaril@749: for (int i=0; isetVisibility(false); insilmaril@749: */ insilmaril@749: } insilmaril@749: /* insilmaril@749: calcBBoxSize(); insilmaril@749: positionBBox(); insilmaril@749: move (absPos.x(), absPos.y() ); insilmaril@749: forceReposition(); insilmaril@749: */ insilmaril@749: } insilmaril@749: insilmaril@749: bool BranchItem::isScrolled() insilmaril@749: { insilmaril@749: return scrolled; insilmaril@749: } insilmaril@749: insilmaril@749: bool BranchItem::hasScrolledParent(BranchItem *start) insilmaril@749: { insilmaril@749: // Calls parents recursivly to insilmaril@749: // find out, if we are scrolled at all. insilmaril@749: // But ignore myself, just look at parents. insilmaril@749: insilmaril@749: if (this !=start && scrolled) return true; insilmaril@749: insilmaril@749: BranchItem* bi=(BranchItem*)parentItem; insilmaril@749: if (bi) insilmaril@749: return bi->hasScrolledParent(start); insilmaril@749: else insilmaril@749: return false; insilmaril@749: } insilmaril@749: insilmaril@749: void BranchItem::tmpUnscroll() insilmaril@749: { insilmaril@749: // Unscroll parent (recursivly) insilmaril@749: BranchItem * bi=(BranchItem*)parentItem; insilmaril@749: if (bi) bi->tmpUnscroll(); insilmaril@749: insilmaril@749: // Unscroll myself insilmaril@749: if (scrolled) insilmaril@749: { insilmaril@749: tmpUnscrolled=true; insilmaril@749: // FIXME-1 systemFlags->activate("tmpUnscrolledright"); insilmaril@749: toggleScroll(); insilmaril@749: } insilmaril@749: } insilmaril@749: insilmaril@749: void BranchItem::resetTmpUnscroll() insilmaril@749: { insilmaril@749: // Unscroll parent (recursivly) insilmaril@749: BranchItem * bi=(BranchItem*)parentItem; insilmaril@749: if (bi) bi->resetTmpUnscroll(); insilmaril@749: insilmaril@749: // Unscroll myself insilmaril@749: if (tmpUnscrolled) insilmaril@749: { insilmaril@749: tmpUnscrolled=false; insilmaril@749: // FIXME-1 systemFlags->deactivate("tmpUnscrolledright"); insilmaril@749: toggleScroll(); insilmaril@749: } insilmaril@749: } insilmaril@749: insilmaril@749: