5 #include "flagrowobj.h"
9 /////////////////////////////////////////////////////////////////
11 /////////////////////////////////////////////////////////////////
12 FlagRowObj::FlagRowObj()
14 // qDebug() << "Const FlagRowObj ()";
17 FlagRowObj::FlagRowObj(QGraphicsItem *parent) : MapObj(parent)
19 // qDebug() << "Const FlagRowObj (p)";
22 FlagRowObj::~FlagRowObj()
24 // qDebug() << "Destr FlagRowObj";
25 while (!flagobjs.isEmpty())
26 delete (flagobjs.takeFirst());
29 void FlagRowObj::move(double x, double y)
33 for (int i = 0; i < flagobjs.size(); ++i) {
34 flagobjs.at(i)->move(x + dx, y);
35 dx += QSizeF(flagobjs.at(i)->getSize()).width();
39 void FlagRowObj::moveBy(double x, double y)
41 move(x + absPos.x(), y + absPos.y());
44 void FlagRowObj::setZValue(double z)
46 QGraphicsItem::setZValue(z);
47 for (int i = 0; i < flagobjs.size(); ++i)
48 flagobjs.at(i)->setZValue(z);
51 void FlagRowObj::setVisibility(bool v)
53 MapObj::setVisibility(v);
54 for (int i = 0; i < flagobjs.size(); ++i)
55 flagobjs.at(i)->setVisibility(v);
58 void FlagRowObj::updateActiveFlagObjs(const QList<QUuid> activeFlagUids,
59 FlagRowMaster *masterRowMain,
60 FlagRowMaster *masterRowOptional)
64 // Add missing active flags
65 for (int i = 0; i <= activeFlagUids.size() - 1; i++) {
66 if (!isFlagActive(activeFlagUids.at(i))) {
67 Flag *f = masterRowMain->findFlagByUid(activeFlagUids.at(i));
72 if (masterRowOptional) {
73 f = masterRowOptional->findFlagByUid(activeFlagUids.at(i));
82 // Remove flags no longer active in TreeItem
83 foreach (FlagObj *fo, flagobjs)
84 if (!activeFlagUids.contains(fo->getUuid())) {
85 flagobjs.removeAll(fo);
96 void FlagRowObj::positionBBox()
98 bbox.moveTopLeft(absPos);
99 clickPoly = QPolygonF(bbox);
102 void FlagRowObj::calcBBoxSize()
105 QSizeF boxsize(0, 0);
106 for (int i = 0; i < flagobjs.size(); ++i) {
107 size = flagobjs.at(i)->getSize();
109 boxsize.setWidth(boxsize.width() + size.width());
111 if (size.height() > boxsize.height())
112 boxsize.setHeight(size.height());
114 bbox.setSize(boxsize);
115 clickPoly = QPolygonF(bbox);
118 bool FlagRowObj::isFlagActive(const QUuid &uid)
120 FlagObj *fo = findFlagObjByUid(uid);
127 void FlagRowObj::activateFlag(Flag *flag)
130 FlagObj *fo = new FlagObj(this);
132 // Loading an imageObj will *copy* it
133 // and thus read the flag from cache
134 fo->loadImage(flag->getImageObj());
136 fo->setUuid(flag->getUuid());
137 fo->setZValue(QGraphicsItem::zValue());
138 fo->move(absPos.x() + bbox.width(), absPos.y());
139 fo->setVisibility(visible);
146 FlagObj *FlagRowObj::findFlagObjByUid(const QUuid &uid)
148 for (int i = 0; i < flagobjs.size(); ++i)
149 if (flagobjs.at(i)->getUuid() == uid)
150 return flagobjs.at(i);
154 QUuid FlagRowObj::findFlagUidByPos(const QPointF &p)
156 if (!isInBox(p, clickPoly.boundingRect()))
158 for (int i = 0; i < flagobjs.size(); ++i)
159 if (isInBox(p, flagobjs.at(i)->getClickPoly().boundingRect()))
160 return flagobjs.at(i)->getUuid();