mapcenterobj.cpp
author insilmaril
Mon, 20 Nov 2006 12:12:02 +0000
changeset 404 53efc2562a7d
parent 395 7ced3733ba60
child 406 1c8ff1928b97
permissions -rw-r--r--
historywindow moved to mainwindow. Started to get rid of Q3PtrList finally
insilmaril@0
     1
#include <qdatetime.h>
insilmaril@0
     2
insilmaril@0
     3
#include "mapcenterobj.h"
insilmaril@0
     4
#include "floatimageobj.h"
insilmaril@0
     5
insilmaril@0
     6
/////////////////////////////////////////////////////////////////
insilmaril@0
     7
// MapCenterObj
insilmaril@0
     8
/////////////////////////////////////////////////////////////////
insilmaril@0
     9
MapCenterObj::MapCenterObj() : BranchObj ()
insilmaril@0
    10
{
insilmaril@0
    11
//    cout << "Const MapCenterObj\n";
insilmaril@0
    12
    init();
insilmaril@0
    13
}
insilmaril@0
    14
insilmaril@364
    15
MapCenterObj::MapCenterObj(Q3Canvas* c) : BranchObj (c)
insilmaril@0
    16
{
insilmaril@0
    17
//    cout << "Const MapCenterObj   canvas="<<c<<"\n";
insilmaril@0
    18
    init();
insilmaril@0
    19
}
insilmaril@0
    20
insilmaril@0
    21
MapCenterObj::~MapCenterObj() 
insilmaril@0
    22
{
insilmaril@0
    23
//    cout << "Destr MapCenterObj\n";
insilmaril@0
    24
}	
insilmaril@0
    25
insilmaril@0
    26
void MapCenterObj::clear() 
insilmaril@0
    27
{
insilmaril@0
    28
	BranchObj::clear();
insilmaril@0
    29
}
insilmaril@0
    30
insilmaril@0
    31
void MapCenterObj::init () 
insilmaril@0
    32
{
insilmaril@83
    33
	BranchObj::init();
insilmaril@0
    34
    orientation=OrientUndef;
insilmaril@0
    35
insilmaril@0
    36
	// FIXME this should be done in TextObj later...
insilmaril@164
    37
	//QFont font ("Sans Serif,16,-1,5,50,0,0,0,0,0");		
insilmaril@164
    38
	//heading->setFont(font);
insilmaril@164
    39
	depth=0;
insilmaril@164
    40
	setDefAttr(MovedBranch);
insilmaril@0
    41
insilmaril@0
    42
	frame->setFrameType (Rectangle);
insilmaril@0
    43
}
insilmaril@0
    44
insilmaril@0
    45
void MapCenterObj::move (double x, double y)
insilmaril@0
    46
{
insilmaril@0
    47
	BranchObj::move(x,y);
insilmaril@0
    48
}
insilmaril@0
    49
insilmaril@0
    50
void MapCenterObj::moveBy (double x, double y)
insilmaril@0
    51
{
insilmaril@169
    52
	BranchObj::moveBy(x,y);
insilmaril@0
    53
}
insilmaril@0
    54
insilmaril@0
    55
void MapCenterObj::moveAll (double x, double y)
insilmaril@0
    56
{
insilmaril@0
    57
	// Get rel. position
insilmaril@0
    58
	double dx=x-absPos.x();
insilmaril@0
    59
	double dy=y-absPos.y();
insilmaril@0
    60
insilmaril@0
    61
	// Move myself and branches
insilmaril@0
    62
	moveAllBy (dx,dy);
insilmaril@0
    63
}
insilmaril@0
    64
insilmaril@0
    65
void MapCenterObj::moveAllBy (double dx, double dy)
insilmaril@0
    66
{
insilmaril@388
    67
	// Move myself and childs
insilmaril@388
    68
	BranchObj::moveBy(dx,dy);
insilmaril@0
    69
}
insilmaril@0
    70
insilmaril@0
    71
void MapCenterObj::updateLink()
insilmaril@0
    72
{
insilmaril@0
    73
	// set childPos to middle of MapCenterObj
insilmaril@169
    74
	childPos.setX( clickBox.topLeft().x() + (int)(clickBox.width())/2 );
insilmaril@169
    75
	childPos.setY( clickBox.topLeft().y() + (int)(clickBox.height())/2 );
insilmaril@0
    76
	parPos=childPos;		
insilmaril@0
    77
	BranchObj *b;
insilmaril@0
    78
	for (b=branch.first(); b; b=branch.next() )
insilmaril@0
    79
		b->updateLink();
insilmaril@0
    80
}
insilmaril@0
    81
insilmaril@388
    82
void MapCenterObj::updateRelPositions()
insilmaril@388
    83
{
insilmaril@388
    84
	if (repositionRequest) unsetAllRepositionRequests();
insilmaril@388
    85
insilmaril@388
    86
	// update relative Positions of branches and floats
insilmaril@388
    87
	BranchObj *b;
insilmaril@388
    88
	for (b=branch.first(); b; b=branch.next() ) 
insilmaril@388
    89
	{
insilmaril@388
    90
		b->setRelPos();
insilmaril@388
    91
		b->setOrientation();
insilmaril@388
    92
	}
insilmaril@388
    93
	
insilmaril@404
    94
	for (int i=0; i<floatimage.size(); ++i)
insilmaril@404
    95
		floatimage.at(i)->setRelPos();
insilmaril@388
    96
insilmaril@388
    97
	if (repositionRequest) reposition();
insilmaril@388
    98
}
insilmaril@388
    99
insilmaril@0
   100
LinkableMapObj* MapCenterObj::findMapObj(QPoint p, LinkableMapObj *excludeLMO)
insilmaril@0
   101
	{
insilmaril@0
   102
	BranchObj *bo;
insilmaril@0
   103
	LinkableMapObj *lmo;
insilmaril@0
   104
insilmaril@0
   105
	// Search through child branches
insilmaril@0
   106
	for (bo=branch.first(); bo; bo=branch.next() )
insilmaril@0
   107
	{	
insilmaril@0
   108
		lmo = bo->findMapObj(p, excludeLMO);
insilmaril@169
   109
		if (lmo!= NULL) return lmo;
insilmaril@0
   110
	}
insilmaril@0
   111
	// is p in MapCenter?
insilmaril@169
   112
	if (inBox (p) && (this != excludeLMO) ) return this;
insilmaril@0
   113
insilmaril@0
   114
	// Search float images
insilmaril@404
   115
	for (int i=0; i<floatimage.size(); ++i)
insilmaril@404
   116
		if (floatimage.at(i)->inBox(p) && (floatimage.at(i) != excludeLMO) && floatimage.at(i)->getParObj()!= excludeLMO) return floatimage.at(i);
insilmaril@0
   117
insilmaril@0
   118
	// nothing found
insilmaril@0
   119
	return NULL;
insilmaril@0
   120
}
insilmaril@0
   121
insilmaril@0
   122
QString MapCenterObj::saveToDir (const QString &tmpdir,const QString &prefix, int verbose, const QPoint &offset)
insilmaril@0
   123
{
insilmaril@0
   124
    QString s,a;
insilmaril@0
   125
insilmaril@0
   126
	// save area, if not scrolled
insilmaril@0
   127
	QString areaAttr=
insilmaril@0
   128
		attribut("x1",QString().setNum(absPos.x()-offset.x(),10)) +
insilmaril@0
   129
		attribut("y1",QString().setNum(absPos.y()-offset.y(),10)) +
insilmaril@0
   130
		attribut("x2",QString().setNum(absPos.x()+width()-offset.x(),10)) +
insilmaril@0
   131
		attribut("y2",QString().setNum(absPos.y()+height()-offset.y(),10));
insilmaril@0
   132
	
insilmaril@169
   133
	// Providing an ID for a branch makes export to XHTML easier
insilmaril@169
   134
	QString idAttr;
insilmaril@169
   135
	if (countXLinks()>0)
insilmaril@169
   136
		idAttr=attribut ("id",getSelectString());
insilmaril@169
   137
	else
insilmaril@169
   138
		idAttr="";
insilmaril@169
   139
insilmaril@169
   140
	QString linkAttr=getLinkAttr();
insilmaril@169
   141
insilmaril@0
   142
    s=beginElement ("mapcenter" 
insilmaril@239
   143
		+getOrnAttr() 
insilmaril@0
   144
		+attribut("frameType",frame->getFrameTypeName()) 
insilmaril@0
   145
		+areaAttr 
insilmaril@239
   146
		+idAttr 
insilmaril@239
   147
		+getIncludeImageAttr() );
insilmaril@0
   148
    incIndent();
insilmaril@0
   149
    if (heading->getColor()!=QColor("black"))
insilmaril@0
   150
		a=attribut ("textColor",QColor(heading->getColor()).name() );
insilmaril@0
   151
    else	
insilmaril@0
   152
		a="";
insilmaril@0
   153
    
insilmaril@0
   154
	// Save flags. If verbose is set (export to xml dir), also write
insilmaril@0
   155
	// the flags as picture
insilmaril@0
   156
	s+=standardFlags->saveToDir(tmpdir+"/flags", "/standardFlag-", verbose);
insilmaril@0
   157
    s=s+valueElement("heading", getHeading(),a);
insilmaril@0
   158
insilmaril@0
   159
	// add link to file in s
insilmaril@0
   160
	if (!note.isEmpty() )
insilmaril@0
   161
		s+=note.saveToDir();
insilmaril@0
   162
	
insilmaril@95
   163
	// Save branches
insilmaril@95
   164
    BranchObj *bo;
insilmaril@95
   165
    for (bo=branch.first(); bo; bo=branch.next() )
insilmaril@95
   166
		s+=bo->saveToDir(tmpdir,prefix, offset);
insilmaril@95
   167
insilmaril@0
   168
	// Save FloatImages
insilmaril@404
   169
	for (int i=0; i<floatimage.size(); ++i)
insilmaril@404
   170
		s+=floatimage.at(i)->saveToDir (tmpdir,prefix);
insilmaril@0
   171
insilmaril@95
   172
	// Save XLinks
insilmaril@95
   173
	XLinkObj *xlo;
insilmaril@95
   174
    for (xlo=xlink.first(); xlo; xlo=xlink.next() )
insilmaril@95
   175
		s+=xlo->saveToDir();
insilmaril@0
   176
insilmaril@0
   177
    decIndent();
insilmaril@0
   178
    s+=endElement   ("mapcenter");
insilmaril@0
   179
    return s;
insilmaril@0
   180
}
insilmaril@0
   181
insilmaril@0
   182
void MapCenterObj::setVersion (const QString &s)
insilmaril@0
   183
{
insilmaril@0
   184
	version=s;
insilmaril@0
   185
}
insilmaril@0
   186
insilmaril@0
   187
void MapCenterObj::setAuthor (const QString &s)
insilmaril@0
   188
{
insilmaril@0
   189
	author=s;
insilmaril@0
   190
}
insilmaril@0
   191
insilmaril@0
   192
QString MapCenterObj::getAuthor()
insilmaril@0
   193
{
insilmaril@0
   194
	return author;
insilmaril@0
   195
}
insilmaril@0
   196
insilmaril@0
   197
void MapCenterObj::setComment (const QString &s)
insilmaril@0
   198
{
insilmaril@0
   199
	comment=s;
insilmaril@0
   200
}
insilmaril@0
   201
insilmaril@0
   202
QString MapCenterObj::getComment ()
insilmaril@0
   203
{
insilmaril@0
   204
	return comment;
insilmaril@0
   205
}
insilmaril@0
   206
insilmaril@0
   207
QString MapCenterObj::getDate ()
insilmaril@0
   208
{
insilmaril@0
   209
	return QDate::currentDate().toString ("yyyy-MM-dd");
insilmaril@0
   210
}
insilmaril@83
   211