insilmaril@650: #ifndef VYMMODEL_H insilmaril@650: #define VYMMODEL_H insilmaril@650: insilmaril@650: #include insilmaril@650: insilmaril@650: #include "mapcenterobj.h" insilmaril@650: #include "mapeditor.h" insilmaril@650: insilmaril@650: insilmaril@650: /*! \brief This will later be divided into Model/View insilmaril@650: */ insilmaril@650: insilmaril@696: class VymModel : public QObject{ insilmaril@696: Q_OBJECT insilmaril@696: insilmaril@650: public: insilmaril@650: VymModel(); insilmaril@650: ~VymModel (); insilmaril@650: void clear(); insilmaril@650: void init(); insilmaril@650: void setMapEditor(MapEditor *me); // FIXME should not be necessary in Model/View insilmaril@650: MapEditor* getMapEditor(); insilmaril@650: void setVersion(const QString &); insilmaril@650: void setAuthor (const QString &); insilmaril@650: QString getAuthor (); insilmaril@650: void setComment (const QString &); insilmaril@650: QString getComment (); insilmaril@650: QString getDate(); insilmaril@650: void setScene(QGraphicsScene *s); insilmaril@650: QGraphicsScene *getScene(); insilmaril@650: MapCenterObj* addMapCenter(); insilmaril@684: MapCenterObj* addMapCenter(QPointF absPos); insilmaril@650: MapCenterObj* removeMapCenter(MapCenterObj *mco); insilmaril@652: insilmaril@650: BranchObj* first(); // FIXME replaced by ModelIndex later insilmaril@650: BranchObj* next(BranchObj *bo); // FIXME replaced by ModelIndex later insilmaril@650: insilmaril@652: LinkableMapObj* findMapObj(QPointF,LinkableMapObj*); // find MapObj insilmaril@652: LinkableMapObj* findObjBySelect (const QString &s); // find MapObj by select string insilmaril@652: LinkableMapObj* findID (const QString &s); // find MapObj by previously set ID insilmaril@652: QString saveToDir (const QString&,const QString&,int, const QPointF&);// Save data recursivly to tempdir insilmaril@652: insilmaril@652: insilmaril@652: ////////////////////////////////////////// View related insilmaril@652: // void updateLink(); FIXME needed? insilmaril@650: void updateRelPositions(); insilmaril@650: insilmaril@650: QRectF getTotalBBox(); insilmaril@650: void reposition(); //!< Call reposition for all MCOs insilmaril@650: void setHideTmp (HideTmpMode mode); insilmaril@665: QPolygonF shape(BranchObj *bo); //!< Returns arbitrary shape of subtree insilmaril@665: void moveAway (LinkableMapObj *lmo);//!< Autolayout: Move all out of the way insilmaril@652: insilmaril@696: // Animation **experimental** insilmaril@696: private slots: insilmaril@696: void animate(); //!< Called by timer to animate stuff insilmaril@696: public: insilmaril@696: void startAnimation(const QPointF &start, const QPointF &dest); insilmaril@696: private: insilmaril@696: QTimer *animationTimer; insilmaril@696: bool animationUse; insilmaril@696: uint animationTicks; insilmaril@696: uint animationInterval; insilmaril@696: int timerId; // animation timer insilmaril@696: QList animObjList;// list with animated objects insilmaril@696: insilmaril@652: ////////////////////////////////////////// Selection related insilmaril@696: public: insilmaril@652: LinkableMapObj* getSelection(); insilmaril@652: BranchObj* getSelectedBranch(); insilmaril@652: bool select (const QString &s); insilmaril@652: QString getSelectString (LinkableMapObj *lmo); insilmaril@652: insilmaril@650: private: insilmaril@650: QGraphicsScene *mapScene; insilmaril@650: MapEditor *mapEditor; insilmaril@650: QList mapCenters; insilmaril@650: QString version; //!< version string saved in vym file insilmaril@650: QString author; insilmaril@650: QString comment; insilmaril@650: QDate date; insilmaril@650: }; insilmaril@650: insilmaril@650: insilmaril@650: #endif