mapcenterobj.cpp
author insilmaril
Thu, 30 Apr 2009 11:52:49 +0000
changeset 762 ffb95cd03156
parent 760 59614eaf5fbb
child 766 7a71a914afdb
permissions -rw-r--r--
further speedup during load. positions of branches are saved (again)
     1 #include <QDateTime>
     2 
     3 #include "floatimageobj.h"
     4 #include "geometry.h"
     5 #include "mapcenterobj.h"
     6 
     7 /////////////////////////////////////////////////////////////////
     8 // MapCenterObj
     9 /////////////////////////////////////////////////////////////////
    10 MapCenterObj::MapCenterObj() : BranchObj ()
    11 {
    12 //    cout << "Const MapCenterObj\n";
    13     init();
    14 }
    15 
    16 MapCenterObj::MapCenterObj(QGraphicsScene* s) : BranchObj (s)
    17 {
    18 //    cout << "Const MapCenterObj   canvas="<<s<<"\n";
    19     init();
    20 }
    21 
    22 MapCenterObj::MapCenterObj(QGraphicsScene* s,VymModel *m) : BranchObj (s)
    23 {
    24 //    cout << "Const MapCenterObj   canvas="<<s<<"\n";
    25 	model=m;
    26     init();
    27 }
    28 
    29 MapCenterObj::~MapCenterObj() 
    30 {
    31 //    cout << "Destr MapCenterObj\n";
    32 	clear();
    33 }	
    34 
    35 void MapCenterObj::clear() 
    36 {
    37 	BranchObj::clear();
    38 }
    39 
    40 void MapCenterObj::init () 
    41 {
    42 	BranchObj::init();
    43     orientation=LinkableMapObj::UndefinedOrientation;
    44 
    45 	// TODO this should be done in TextObj later...
    46 	//QFont font ("Sans Serif,16,-1,5,50,0,0,0,0,0");		
    47 	//heading->setFont(font);
    48 	//FIXME-2 no treeitem yet:  setDefAttr(MovedBranch);
    49 
    50 	frame->setFrameType (FrameObj::Rectangle);
    51 }
    52 
    53 void MapCenterObj::move (double x, double y)
    54 {
    55 	BranchObj::move(x,y);
    56 }
    57 
    58 void MapCenterObj::move (QPointF absPos)
    59 {
    60 	BranchObj::move(absPos);
    61 }
    62 
    63 void MapCenterObj::moveBy (double x, double y)
    64 {
    65 	BranchObj::moveBy(x,y);
    66 }
    67 
    68 void MapCenterObj::moveAll (double x, double y)
    69 {
    70 	// Get rel. position
    71 	double dx=x-absPos.x();
    72 	double dy=y-absPos.y();
    73 
    74 	// Move myself and branches
    75 	moveAllBy (dx,dy);
    76 }
    77 
    78 void MapCenterObj::moveAllBy (double dx, double dy)
    79 {
    80 	// Move myself and children
    81 	BranchObj::moveBy(dx,dy);
    82 }
    83 
    84 void MapCenterObj::updateLink()
    85 {
    86 	// set childPos to middle of MapCenterObj
    87 	childPos.setX( clickBox.topLeft().x() + (int)(clickBox.width())/2 );
    88 	childPos.setY( clickBox.topLeft().y() + (int)(clickBox.height())/2 );
    89 	parPos=childPos;		
    90 	for (int i=0; i<treeItem->branchCount(); ++i)
    91 		treeItem->getBranchObjNum(i)->updateLink();
    92 }
    93 
    94 void MapCenterObj::updateRelPositions()
    95 {
    96 	if (repositionRequest) unsetAllRepositionRequests();
    97 
    98 	// update relative Positions of branches and floats
    99 	for (int i=0; i<treeItem->branchCount(); ++i)
   100 	{
   101 		treeItem->getBranchObjNum(i)->setRelPos();
   102 		treeItem->getBranchObjNum(i)->setOrientation();
   103 	}
   104 	
   105 	for (int i=0; i<floatimage.size(); ++i)
   106 		floatimage.at(i)->setRelPos();
   107 
   108 	if (repositionRequest) reposition();
   109 }
   110 
   111 QString MapCenterObj::saveToDir (const QString &tmpdir,const QString &prefix, int verbose, const QPointF &offset)
   112 {
   113     QString s,a;
   114 
   115 	// save area, if not scrolled
   116 	QString areaAttr=
   117 		attribut("x1",QString().setNum(absPos.x()-offset.x())) +
   118 		attribut("y1",QString().setNum(absPos.y()-offset.y())) +
   119 		attribut("x2",QString().setNum(absPos.x()+width()-offset.x())) +
   120 		attribut("y2",QString().setNum(absPos.y()+height()-offset.y()));
   121 	
   122 	// Providing an ID for a branch makes export to XHTML easier
   123 	/* FIXME-3
   124 	QString idAttr;
   125 	if (treeItem->xlinkCount()>0)
   126 		idAttr=attribut ("id",mapEditor->getModel()->getSelectString(this)); //TODO directly access model
   127 
   128 	else
   129 		idAttr="";
   130 	*/	
   131 
   132 	QString linkAttr=getLinkAttr();
   133 
   134     s=beginElement ("mapcenter" 
   135 		+getOrnXMLAttr() 
   136 		+areaAttr 
   137 //		+idAttr 
   138 		+getIncludeImageAttr() );
   139     incIndent();
   140     if (heading->getColor()!=QColor("black"))
   141 		a=attribut ("textColor",QColor(heading->getColor()).name() );
   142     else	
   143 		a="";
   144     
   145 	// Save flags. If verbose is set (export to xml dir), also write
   146 	// the flags as picture
   147 	s+=standardFlags->saveToDir(tmpdir+"/flags", "/standardFlag-", verbose);
   148 
   149 	// Save heading
   150     s+=valueElement("heading", treeItem->getHeading(),a);
   151 
   152 	// Save frame
   153 	s+=frame->saveToDir ();
   154 
   155 	// Update of note is usually done while unselecting a branch
   156 	//if (isNoteInEditor) getNoteFromTextEditor();  FIXME-3
   157 
   158 	// save note
   159 	if (!treeItem->getNoteObj().isEmpty() )
   160 		s+=treeItem->getNoteObj().saveToDir();
   161 	
   162 	// Save branches
   163 	for (int i=0; i<treeItem->branchCount(); ++i)
   164 		s+=treeItem->getBranchObjNum(i)->saveToDir(tmpdir,prefix, offset);
   165 
   166 	// Save FloatImages
   167 	for (int i=0; i<floatimage.size(); ++i)
   168 		s+=floatimage.at(i)->saveToDir (tmpdir,prefix);
   169 
   170 	// Save XLinks
   171 	for (int i=0;i<xlink.size(); ++i)
   172 		s+=xlink.at(i)->saveToDir();
   173 
   174     decIndent();
   175     s+=endElement   ("mapcenter");
   176     return s;
   177 }
   178 
   179 void MapCenterObj::setVersion (const QString &s)
   180 {
   181 	version=s;
   182 }
   183 
   184 void MapCenterObj::setAuthor (const QString &s)
   185 {
   186 	author=s;
   187 }
   188 
   189 QString MapCenterObj::getAuthor()
   190 {
   191 	return author;
   192 }
   193 
   194 void MapCenterObj::setComment (const QString &s)
   195 {
   196 	comment=s;
   197 }
   198 
   199 QString MapCenterObj::getComment ()
   200 {
   201 	return comment;
   202 }
   203 
   204 QString MapCenterObj::getDate ()
   205 {
   206 	return QDate::currentDate().toString ("yyyy-MM-dd");
   207 }
   208