3 #include "branchitem.h"
4 #include "linkablemapobj.h"
5 #include "ornamentedobj.h"
10 /////////////////////////////////////////////////////////////////
12 /////////////////////////////////////////////////////////////////
14 OrnamentedObj::OrnamentedObj(QGraphicsItem *parent, TreeItem *ti)
15 : LinkableMapObj(parent, ti)
17 // qDebug()<< "Const OrnamentedObj (s,ti) ti="<<ti;
22 OrnamentedObj::~OrnamentedObj()
25 delete systemFlagRowObj;
26 delete standardFlagRowObj;
30 void OrnamentedObj::init()
32 heading = new HeadingObj(this);
33 heading->setTreeItem(treeItem);
34 heading->move(absPos.x(), absPos.y());
36 systemFlagRowObj = new FlagRowObj(this);
37 standardFlagRowObj = new FlagRowObj(this);
39 frame = new FrameObj(this);
40 frame->setTreeItem(treeItem);
45 void OrnamentedObj::copy(OrnamentedObj *other)
47 LinkableMapObj::copy(other);
48 heading->copy(other->heading);
49 setColor(other->heading->getColor());
51 systemFlagRowObj->copy(other->systemFlagRowObj);
52 standardFlagRowObj->copy(other->standardFlagRowObj);
54 ornamentsBBox = other->ornamentsBBox;
57 void OrnamentedObj::setColor(QColor col)
59 heading->setColor(col);
63 QColor OrnamentedObj::getColor() { return heading->getColor(); }
65 QRectF OrnamentedObj::getBBoxHeading() { return heading->getBBox(); }
67 void OrnamentedObj::setRotation(const qreal &a)
69 MapObj::setRotation(a);
70 heading->setRotation(a); // FIXME-4 duplicated code...
73 FrameObj *OrnamentedObj::getFrame() { return frame; }
75 FrameObj::FrameType OrnamentedObj::getFrameType()
77 return frame->getFrameType();
80 QString OrnamentedObj::getFrameTypeName() { return frame->getFrameTypeName(); }
82 void OrnamentedObj::setFrameType(const FrameObj::FrameType &t)
84 frame->setFrameType(t);
85 if (t == FrameObj::NoFrame) {
86 linkpos = LinkableMapObj::Bottom;
90 linkpos = LinkableMapObj::Middle;
91 useBottomline = false;
93 updateVisibility(); // Update bottomline
99 void OrnamentedObj::setFrameType(const QString &s)
101 setFrameType(frame->getFrameType(s));
104 void OrnamentedObj::setFramePadding(const int &i)
106 frame->setPadding(i);
112 int OrnamentedObj::getFramePadding() { return frame->getPadding(); }
114 void OrnamentedObj::setFrameBorderWidth(const int &i)
116 frame->setBorderWidth(i);
122 int OrnamentedObj::getFrameBorderWidth() { return frame->getBorderWidth(); }
124 void OrnamentedObj::setFramePenColor(QColor col) { frame->setPenColor(col); }
126 QColor OrnamentedObj::getFramePenColor() { return frame->getPenColor(); }
128 void OrnamentedObj::setFrameBrushColor(QColor col)
130 frame->setBrushColor(col);
133 QColor OrnamentedObj::getFrameBrushColor() { return frame->getBrushColor(); }
135 void OrnamentedObj::setFrameIncludeChildren(bool b)
137 calcBBoxSizeWithChildren();
138 frame->setFrameIncludeChildren(b);
142 bool OrnamentedObj::getFrameIncludeChildren()
144 return frame->getFrameIncludeChildren();
147 QRectF OrnamentedObj::getOrnamentsBBox() { return ornamentsBBox; }
149 void OrnamentedObj::positionContents()
151 double x = absPos.x();
152 double y = absPos.y();
153 double dp = frame->getTotalPadding();
155 double ox = leftPad + dp;
156 double oy = topPad + dp;
158 // vertical align heading to bottom
159 heading->setZValue(dZ_TEXT);
160 heading->setTransformOriginPoint(
161 QPointF(ox + systemFlagRowObj->getBBox().width(),
162 oy + ornamentsBBox.height() - heading->getHeight()));
163 heading->move(ox + x + systemFlagRowObj->getBBox().width(),
164 oy + y + ornamentsBBox.height() - heading->getHeight());
166 systemFlagRowObj->move(ox + x, oy + y);
167 systemFlagRowObj->setZValue(dZ_ICON);
168 standardFlagRowObj->move(ox + x + heading->getWidth() +
169 systemFlagRowObj->getBBox().width(),
171 standardFlagRowObj->setZValue(dZ_ICON);
173 ornamentsBBox.moveTopLeft(QPointF(ox + x, oy + y));
174 clickPoly = QPolygonF(ornamentsBBox);
176 // Update bboxTotal coordinate (size set already)
177 if (orientation == LinkableMapObj::LeftOfCenter)
178 bboxTotal.setRect(bbox.x() + (bbox.width() - bboxTotal.width()),
179 bbox.y() + bbox.height() / 2 - bboxTotal.height() / 2,
180 bboxTotal.width(), bboxTotal.height());
182 bboxTotal.setRect(bbox.x(),
183 bbox.y() + bbox.height() / 2 - bboxTotal.height() / 2,
184 bboxTotal.width(), bboxTotal.height());
187 dp = frame->getXPadding();
189 frame->setZValue(dZ_FRAME_LOW);
190 if (treeItem && treeItem->isBranchLikeType() &&
191 ((BranchItem *)treeItem)->getFrameIncludeChildren())
192 frame->setRect(QRectF(bboxTotal.x() + dp2, bboxTotal.y() + dp2,
193 bboxTotal.width() - dp, bboxTotal.height() - dp));
195 frame->setRect(QRectF(bbox.x() + dp, bbox.y() + dp,
196 bbox.width() - 2 * dp, bbox.height() - 2 * dp));
199 void OrnamentedObj::move(double x, double y)
205 void OrnamentedObj::move(QPointF p) { move(p.x(), p.y()); }
207 void OrnamentedObj::moveBy(double x, double y)
209 MapObj::moveBy(x, y);
211 systemFlagRowObj->moveBy(x, y);
212 standardFlagRowObj->moveBy(x, y);
213 heading->moveBy(x, y);
214 updateLinkGeometry();
218 void OrnamentedObj::moveBy(QPointF p) { moveBy(p.x(), p.y()); }
220 void OrnamentedObj::move2RelPos(double x, double y)
222 setRelPos(QPointF(x, y));
224 QPointF p = parObj->getChildRefPos();
225 move(p.x() + x, p.y() + y);
229 void OrnamentedObj::move2RelPos(QPointF p) { move2RelPos(p.x(), p.y()); }
231 QUuid OrnamentedObj::findSystemFlagUidByPos(const QPointF &p)
233 return systemFlagRowObj->findFlagUidByPos(p);
236 QRectF OrnamentedObj::getBBoxSystemFlagByUid(const QUuid &u)
238 FlagObj *fo = systemFlagRowObj->findFlagObjByUid(u);
240 return fo->getBBox();