insilmaril@40: #include insilmaril@40: #include insilmaril@40: insilmaril@40: #include "geometry.h" // for addBBox insilmaril@40: #include "vymmodel.h" insilmaril@40: insilmaril@40: insilmaril@40: extern Settings settings; insilmaril@40: insilmaril@40: VymModel::VymModel() insilmaril@40: { insilmaril@40: // cout << "Const VymModel\n"; insilmaril@40: } insilmaril@40: insilmaril@40: insilmaril@40: VymModel::~VymModel() insilmaril@40: { insilmaril@40: // cout << "Destr VymModel\n"; insilmaril@40: } insilmaril@40: insilmaril@40: void VymModel::clear() insilmaril@40: { insilmaril@40: while (!mapCenters.isEmpty()) insilmaril@40: delete mapCenters.takeFirst(); insilmaril@40: } insilmaril@40: insilmaril@40: void VymModel::init () insilmaril@40: { insilmaril@40: addMapCenter(); insilmaril@40: insilmaril@40: // animations insilmaril@40: animationUse=settings.readBoolEntry("/animation/use",false); insilmaril@40: animationTicks=settings.readNumEntry("/animation/ticks",10); insilmaril@40: animationInterval=settings.readNumEntry("/animation/interval",50); insilmaril@40: animObjList.clear(); insilmaril@40: animationTimer=new QTimer (this); insilmaril@40: connect(animationTimer, SIGNAL(timeout()), this, SLOT(animate())); insilmaril@40: insilmaril@40: } insilmaril@40: insilmaril@40: void VymModel::setMapEditor(MapEditor *me) insilmaril@40: { insilmaril@40: mapEditor=me; insilmaril@40: for (int i=0; isetMapEditor(mapEditor); insilmaril@40: } insilmaril@40: insilmaril@40: MapEditor* VymModel::getMapEditor() insilmaril@40: { insilmaril@40: return mapEditor; insilmaril@40: } insilmaril@40: insilmaril@40: void VymModel::setVersion (const QString &s) insilmaril@40: { insilmaril@40: version=s; insilmaril@40: } insilmaril@40: insilmaril@40: void VymModel::setAuthor (const QString &s) insilmaril@40: { insilmaril@40: author=s; insilmaril@40: } insilmaril@40: insilmaril@40: QString VymModel::getAuthor() insilmaril@40: { insilmaril@40: return author; insilmaril@40: } insilmaril@40: insilmaril@40: void VymModel::setComment (const QString &s) insilmaril@40: { insilmaril@40: comment=s; insilmaril@40: } insilmaril@40: insilmaril@40: QString VymModel::getComment () insilmaril@40: { insilmaril@40: return comment; insilmaril@40: } insilmaril@40: insilmaril@40: QString VymModel::getDate () insilmaril@40: { insilmaril@40: return QDate::currentDate().toString ("yyyy-MM-dd"); insilmaril@40: } insilmaril@40: insilmaril@40: void VymModel::setScene (QGraphicsScene *s) insilmaril@40: { insilmaril@40: mapScene=s; insilmaril@40: init(); // Here we have a mapScene set, insilmaril@40: // which is (still) needed to create MapCenters insilmaril@40: } insilmaril@40: insilmaril@40: QGraphicsScene* VymModel::getScene () insilmaril@40: { insilmaril@40: return mapScene; insilmaril@40: } insilmaril@40: insilmaril@40: MapCenterObj* VymModel::addMapCenter() insilmaril@40: { insilmaril@40: return addMapCenter (QPointF(0,0)); insilmaril@40: } insilmaril@40: insilmaril@40: MapCenterObj* VymModel::addMapCenter(QPointF absPos) insilmaril@40: { insilmaril@40: MapCenterObj *mapCenter = new MapCenterObj(mapScene); insilmaril@40: mapCenter->move (absPos); insilmaril@40: mapCenter->setVisibility (true); insilmaril@40: mapCenter->setHeading (QApplication::translate("Heading of mapcenter in new map", "New map")); insilmaril@40: mapCenter->setMapEditor(mapEditor); //FIXME needed to get defLinkStyle, mapLinkColorHint ... for later added objects insilmaril@40: mapCenters.append(mapCenter); insilmaril@40: return mapCenter; insilmaril@40: } insilmaril@40: insilmaril@40: MapCenterObj *VymModel::removeMapCenter(MapCenterObj* mco) insilmaril@40: { insilmaril@40: int i=mapCenters.indexOf (mco); insilmaril@40: if (i>=0) insilmaril@40: { insilmaril@40: mapCenters.removeAt (i); insilmaril@40: delete (mco); insilmaril@40: if (i>0) return mapCenters.at(i-1); // Return previous MCO insilmaril@40: } insilmaril@40: return NULL; insilmaril@40: } insilmaril@40: insilmaril@57: MapCenterObj *VymModel::getMapCenterNum (int i) insilmaril@57: { insilmaril@57: cout << "MCO i="<=0 && num.toInt() findObjBySelect(s); insilmaril@40: if (lmo) return lmo; insilmaril@40: } insilmaril@40: return NULL; insilmaril@40: } insilmaril@40: insilmaril@40: LinkableMapObj* VymModel::findID (const QString &s) insilmaril@40: { insilmaril@40: LinkableMapObj *lmo; insilmaril@40: for (int i=0; ifindID (s); insilmaril@40: if (lmo) return lmo; insilmaril@40: } insilmaril@40: return NULL; insilmaril@40: } insilmaril@40: insilmaril@40: QString VymModel::saveToDir (const QString &tmpdir,const QString &prefix, int verbose, const QPointF &offset) insilmaril@40: { insilmaril@40: QString s; insilmaril@40: insilmaril@40: for (int i=0; isaveToDir (tmpdir,prefix,verbose,offset); insilmaril@40: return s; insilmaril@40: } insilmaril@40: insilmaril@40: insilmaril@40: ////////////////////////////////////////////// insilmaril@40: // View related insilmaril@40: ////////////////////////////////////////////// insilmaril@40: insilmaril@40: void VymModel::updateRelPositions() insilmaril@40: { insilmaril@40: for (int i=0; iupdateRelPositions(); insilmaril@40: } insilmaril@40: insilmaril@40: void VymModel::reposition() insilmaril@40: { insilmaril@40: for (int i=0;ireposition(); // for positioning heading insilmaril@40: } insilmaril@40: insilmaril@40: QPolygonF VymModel::shape(BranchObj *bo) insilmaril@40: { insilmaril@40: // Creating (arbitrary) shapes insilmaril@40: insilmaril@40: QPolygonF p; insilmaril@40: QRectF rb=bo->getBBox(); insilmaril@40: if (bo->getDepth()==0) insilmaril@40: { insilmaril@40: // Just take BBox of this mapCenter insilmaril@40: p<getTotalBBox(); insilmaril@40: if (bo->getOrientation()==LinkableMapObj::LeftOfCenter) insilmaril@40: p <" insilmaril@40: <<"="<getHeading() )<<")" insilmaril@40: <<" with ("<< qPrintable (boB->getHeading() ) insilmaril@40: <<") willIntersect" insilmaril@40: <getNum()); insilmaril@40: else insilmaril@40: // Branch, call myself recursively insilmaril@40: s= getSelectString(par) + ",bo:" + QString("%1").arg(((BranchObj*)lmo)->getNum()); insilmaril@40: } else insilmaril@40: { insilmaril@40: // MapCenter insilmaril@40: int i=mapCenters.indexOf ((MapCenterObj*)lmo); insilmaril@40: if (i>=0) s=QString("mc:%1").arg(i); insilmaril@40: } insilmaril@40: } insilmaril@40: return s; insilmaril@40: insilmaril@40: } insilmaril@40: insilmaril@40: insilmaril@40: void VymModel::setHideTmp (HideTmpMode mode) insilmaril@40: { insilmaril@40: for (int i=0;isetHideTmp (mode); insilmaril@40: } insilmaril@40: insilmaril@40: QRectF VymModel::getTotalBBox() insilmaril@40: { insilmaril@40: QRectF r; insilmaril@40: for (int i=0;igetTotalBBox(), r); insilmaril@40: return r; insilmaril@40: } insilmaril@40: