insilmaril@0: #include insilmaril@0: insilmaril@0: #include "mapcenterobj.h" insilmaril@0: #include "floatimageobj.h" insilmaril@0: #include "mapeditor.h" insilmaril@0: insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: // MapCenterObj insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: MapCenterObj::MapCenterObj() : BranchObj () insilmaril@0: { insilmaril@0: // cout << "Const MapCenterObj\n"; insilmaril@0: init(); insilmaril@0: } insilmaril@0: insilmaril@0: MapCenterObj::MapCenterObj(QCanvas* c) : BranchObj (c) insilmaril@0: { insilmaril@0: // cout << "Const MapCenterObj canvas="<width()/2, canvas->height()/2); insilmaril@0: insilmaril@0: // FIXME this should be done in TextObj later... insilmaril@0: QFont font ("Sans Serif,16,-1,5,50,0,0,0,0,0"); insilmaril@0: heading->setFont(font); insilmaril@0: insilmaril@0: depth=0; insilmaril@0: insilmaril@0: frame->setFrameType (Rectangle); insilmaril@91: move (absPos.x(), absPos.y() ); insilmaril@0: } insilmaril@0: insilmaril@0: void MapCenterObj::move (double x, double y) insilmaril@0: { insilmaril@0: BranchObj::move(x,y); insilmaril@0: positionBBox(); insilmaril@0: } insilmaril@0: insilmaril@0: void MapCenterObj::moveBy (double x, double y) insilmaril@0: { insilmaril@0: BranchObj::moveBy(x,y); insilmaril@0: positionBBox(); insilmaril@0: } insilmaril@0: insilmaril@0: void MapCenterObj::moveAll (double x, double y) insilmaril@0: { insilmaril@0: // Get rel. position insilmaril@0: double dx=x-absPos.x(); insilmaril@0: double dy=y-absPos.y(); insilmaril@0: insilmaril@0: // Move myself and branches insilmaril@0: moveAllBy (dx,dy); insilmaril@0: } insilmaril@0: insilmaril@0: void MapCenterObj::moveAllBy (double dx, double dy) insilmaril@0: { insilmaril@0: // Move myself insilmaril@0: moveBy(dx,dy); insilmaril@0: insilmaril@0: positionBBox(); insilmaril@0: } insilmaril@0: insilmaril@0: void MapCenterObj::updateLink() insilmaril@0: { insilmaril@0: // set childPos to middle of MapCenterObj insilmaril@0: childPos=QPoint( insilmaril@0: absPos.x() + QSize(getSize() ).width()/2, insilmaril@0: absPos.y() + QSize(getSize() ).height()/2); insilmaril@0: parPos=childPos; insilmaril@0: BranchObj *b; insilmaril@0: for (b=branch.first(); b; b=branch.next() ) insilmaril@0: b->updateLink(); insilmaril@0: } insilmaril@0: insilmaril@0: LinkableMapObj* MapCenterObj::findMapObj(QPoint p, LinkableMapObj *excludeLMO) insilmaril@0: { insilmaril@0: BranchObj *bo; insilmaril@0: LinkableMapObj *lmo; insilmaril@0: insilmaril@0: // Search through child branches insilmaril@0: for (bo=branch.first(); bo; bo=branch.next() ) insilmaril@0: { insilmaril@0: lmo = bo->findMapObj(p, excludeLMO); insilmaril@0: insilmaril@0: if (lmo!= NULL) insilmaril@0: { insilmaril@0: return lmo; insilmaril@0: } insilmaril@0: } insilmaril@0: // is p in MapCenter? insilmaril@0: if (inBBox (p) && (this != excludeLMO) ) return this; insilmaril@0: insilmaril@0: // Search float images insilmaril@0: FloatImageObj *foi; insilmaril@0: for (foi=floatimage.first(); foi; foi=floatimage.next() ) insilmaril@0: if (foi->inBBox(p) && (foi != excludeLMO) && foi->getParObj()!= excludeLMO) return foi; insilmaril@0: insilmaril@0: // nothing found insilmaril@0: return NULL; insilmaril@0: } insilmaril@0: insilmaril@0: QString MapCenterObj::saveToDir (const QString &tmpdir,const QString &prefix, int verbose, const QPoint &offset) insilmaril@0: { insilmaril@0: QString s,a; insilmaril@0: insilmaril@0: // save area, if not scrolled insilmaril@0: QString areaAttr= insilmaril@0: attribut("x1",QString().setNum(absPos.x()-offset.x(),10)) + insilmaril@0: attribut("y1",QString().setNum(absPos.y()-offset.y(),10)) + insilmaril@0: attribut("x2",QString().setNum(absPos.x()+width()-offset.x(),10)) + insilmaril@0: attribut("y2",QString().setNum(absPos.y()+height()-offset.y(),10)); insilmaril@0: insilmaril@0: s=beginElement ("mapcenter" insilmaril@0: +attribut("absPosX",QString().setNum(absPos.x(),10)) insilmaril@0: +attribut("absPosY",QString().setNum(absPos.y(),10)) insilmaril@0: +attribut("frameType",frame->getFrameTypeName()) insilmaril@0: +areaAttr insilmaril@0: ); insilmaril@0: insilmaril@0: incIndent(); insilmaril@0: if (heading->getColor()!=QColor("black")) insilmaril@0: a=attribut ("textColor",QColor(heading->getColor()).name() ); insilmaril@0: else insilmaril@0: a=""; insilmaril@0: insilmaril@0: // Save flags. If verbose is set (export to xml dir), also write insilmaril@0: // the flags as picture insilmaril@0: s+=standardFlags->saveToDir(tmpdir+"/flags", "/standardFlag-", verbose); insilmaril@0: s=s+valueElement("heading", getHeading(),a); insilmaril@0: insilmaril@0: // Reset the counters before saving insilmaril@0: FloatImageObj (canvas).resetSaveCounter(); insilmaril@0: insilmaril@0: // add link to file in s insilmaril@0: if (!note.isEmpty() ) insilmaril@0: s+=note.saveToDir(); insilmaril@0: insilmaril@0: // Save FloatImages insilmaril@0: FloatImageObj *fio; insilmaril@0: for (fio=floatimage.first(); fio; fio=floatimage.next() ) insilmaril@0: s+=fio->saveToDir (tmpdir,prefix); insilmaril@0: insilmaril@0: // Save branches insilmaril@0: BranchObj *bo; insilmaril@0: for (bo=branch.first(); bo; bo=branch.next() ) insilmaril@0: s+=bo->saveToDir(tmpdir,prefix, offset); insilmaril@0: insilmaril@0: decIndent(); insilmaril@0: s+=endElement ("mapcenter"); insilmaril@0: return s; insilmaril@0: } insilmaril@0: insilmaril@0: void MapCenterObj::setVersion (const QString &s) insilmaril@0: { insilmaril@0: version=s; insilmaril@0: } insilmaril@0: insilmaril@0: bool MapCenterObj::checkVersion () insilmaril@0: { insilmaril@0: // returns true, if vym is able to read file regarding insilmaril@0: // the version set with setVersion insilmaril@0: QString s1=version.section (".",0,0); insilmaril@0: QString s2=version.section (".",1,1); insilmaril@0: QString s3=version.section (".",2,2); insilmaril@0: bool ok; insilmaril@0: int vv1 =QString(__VYM_VERSION__).section (".",0,0).toInt(&ok,10); insilmaril@0: int vv2 =QString(__VYM_VERSION__).section (".",1,1).toInt(&ok,10); insilmaril@0: int vv3 =QString(__VYM_VERSION__).section (".",2,2).toInt(&ok,10); insilmaril@0: int mv1=0; insilmaril@0: int mv2=0; insilmaril@0: int mv3=0; insilmaril@0: if (!s1.isEmpty() ) mv1=s1.toInt(&ok,10); insilmaril@0: if (!s2.isEmpty() ) mv2=s2.toInt(&ok,10); insilmaril@0: if (!s3.isEmpty() ) mv3=s3.toInt(&ok,10); insilmaril@0: insilmaril@0: if (vv1 > mv1) insilmaril@0: return true; insilmaril@0: if (vv1 < mv1) insilmaril@0: return false; insilmaril@0: if (vv2 > mv2) insilmaril@0: return true; insilmaril@0: if (vv2 < mv2) insilmaril@0: return false; insilmaril@0: if (vv3 > mv3) insilmaril@0: return true; insilmaril@0: if (vv3 < mv3) insilmaril@0: return false; insilmaril@0: return true; insilmaril@0: } insilmaril@0: insilmaril@0: void MapCenterObj::setAuthor (const QString &s) insilmaril@0: { insilmaril@0: author=s; insilmaril@0: } insilmaril@0: insilmaril@0: QString MapCenterObj::getAuthor() insilmaril@0: { insilmaril@0: return author; insilmaril@0: } insilmaril@0: insilmaril@0: void MapCenterObj::setComment (const QString &s) insilmaril@0: { insilmaril@0: comment=s; insilmaril@0: } insilmaril@0: insilmaril@0: QString MapCenterObj::getComment () insilmaril@0: { insilmaril@0: return comment; insilmaril@0: } insilmaril@0: insilmaril@0: QString MapCenterObj::getDate () insilmaril@0: { insilmaril@0: return QDate::currentDate().toString ("yyyy-MM-dd"); insilmaril@0: } insilmaril@83: