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