5 #include "flagrowobj.h"
9 /////////////////////////////////////////////////////////////////
11 /////////////////////////////////////////////////////////////////
12 FlagRowObj::FlagRowObj()
14 // qDebug() << "Const FlagRowObj ()";
18 FlagRowObj::FlagRowObj(QGraphicsItem *parent):MapObj(parent)
20 // qDebug() << "Const FlagRowObj (p)";
24 FlagRowObj::~FlagRowObj()
26 //qDebug() << "Destr FlagRowObj";
27 while (!flag.isEmpty())
28 delete (flag.takeFirst() );
31 void FlagRowObj::init ()
36 void FlagRowObj::copy (FlagRowObj* other)
40 for (int i=0; i<flag.size(); ++i)
44 void FlagRowObj::move(double x, double y)
48 for (int i=0; i<flag.size(); ++i)
50 flag.at(i)->move(x+dx,y);
51 dx+=QSizeF(flag.at(i)->getSize() ).width();
55 void FlagRowObj::moveBy(double x, double y)
57 move (x+absPos.x(),y+absPos.y() );
60 void FlagRowObj::setZValue (double z)
62 for (int i=0; i<flag.size(); ++i)
63 flag.at(i)->setZValue (z);
66 void FlagRowObj::setVisibility (bool v)
68 MapObj::setVisibility(v);
69 for (int i=0; i<flag.size(); ++i)
70 flag.at(i)->setVisibility (v);
73 FlagObj* FlagRowObj::addFlag (FlagObj *fo)
75 FlagObj *newfo=new FlagObj (parentItem() );
76 newfo->copy (fo); // create a deep copy of fo
77 newfo->move (absPos.x() + bbox.width(), absPos.y() );
84 QStringList FlagRowObj::activeFlagNames()
87 for (int i=0; i<flag.size(); ++i)
88 list.append (flag.at(i)->getName());
92 void FlagRowObj::positionBBox()
94 bbox.moveTopLeft(absPos );
95 clickPoly=QPolygonF (bbox);
98 void FlagRowObj::calcBBoxSize()
102 for (int i=0; i<flag.size(); ++i)
104 size=flag.at(i)->getSize();
106 boxsize.setWidth(boxsize.width() + size.width() );
108 if (size.height() > boxsize.height() )
109 boxsize.setHeight(size.height() );
111 bbox.setSize (boxsize);
112 clickPoly=QPolygonF (bbox);
115 QString FlagRowObj::getFlagName (const QPointF &p)
117 if (!isInBox (p,clickPoly.boundingRect() )) return "";
118 for (int i=0; i<flag.size(); ++i)
119 if (isInBox (p,flag.at(i)->getClickPoly().boundingRect() )) return flag.at(i)->getName();
123 bool FlagRowObj::isActive (const QString &foname)
125 FlagObj *fo=findFlag (foname);
132 void FlagRowObj::activate (Flag *flag)
136 FlagObj *fo=addFlag (new FlagObj (this));
137 fo->load (flag->getPixmap() );
138 fo->setName (flag->getName() );
140 if (showFlags) // necessary? only called from FIO::init
141 fo->setVisibility (visible);
143 fo->setVisibility (false);
148 void FlagRowObj::deactivate (const QString &foname)
150 FlagObj *fo=findFlag (foname);
160 void FlagRowObj::setShowFlags (bool b)
165 FlagObj* FlagRowObj::findFlag (const QString &name)
167 for (int i=0; i<flag.size(); ++i)
168 if (flag.at(i)->getName()==name) return flag.at(i);