54
53
m_qmlItemNode(qmlItemNode),
55
54
m_borderWidth(1.0),
56
55
m_highlightBoundingRect(false),
57
57
m_isContentVisible(true),
58
58
m_isFormEditorVisible(true)
92
92
m_boundingRect = qmlItemNode().instanceBoundingRect().adjusted(0, 0, 1., 1.);
93
93
m_paintedBoundingRect = qmlItemNode().instancePaintedBoundingRect().united(m_boundingRect);
94
94
setTransform(qmlItemNode().instanceTransformWithContentTransform());
95
setTransform(m_attentionTransform, true);
96
95
//the property for zValue is called z in QGraphicsObject
97
96
if (qmlItemNode().instanceValue("z").isValid())
98
97
setZValue(qmlItemNode().instanceValue("z").toDouble());
104
103
// setOpacity(nodeInstance().opacity());
107
void FormEditorItem::showAttention()
109
if (m_attentionTimeLine.isNull()) {
110
m_attentionTimeLine = new QTimeLine(500, this);
111
m_attentionTimeLine->setCurveShape(QTimeLine::SineCurve);
112
connect(m_attentionTimeLine.data(), SIGNAL(valueChanged(qreal)), SLOT(changeAttention(qreal)));
113
connect(m_attentionTimeLine.data(), SIGNAL(finished()), m_attentionTimeLine.data(), SLOT(deleteLater()));
115
m_attentionTimeLine->start();
119
void FormEditorItem::changeAttention(qreal value)
121
if (QGraphicsItem::parentItem() == scene()->formLayerItem()) {
122
setAttentionHighlight(value);
124
setAttentionHighlight(value);
125
setAttentionScale(value);
129
107
FormEditorView *FormEditorItem::formEditorView() const
131
109
return scene()->editorView();
134
void FormEditorItem::setAttentionScale(double sinusScale)
136
if (!qFuzzyIsNull(sinusScale)) {
137
double scale = std::sqrt(sinusScale);
138
m_attentionTransform.reset();
139
QPointF centerPoint(qmlItemNode().instanceBoundingRect().center());
140
m_attentionTransform.translate(centerPoint.x(), centerPoint.y());
141
m_attentionTransform.scale(scale * 0.15 + 1.0, scale * 0.15 + 1.0);
142
m_attentionTransform.translate(-centerPoint.x(), -centerPoint.y());
143
m_inverseAttentionTransform = m_attentionTransform.inverted();
144
prepareGeometryChange();
145
setTransform(qmlItemNode().instanceTransformWithContentTransform());
146
setTransform(m_attentionTransform, true);
148
m_attentionTransform.reset();
149
prepareGeometryChange();
150
setTransform(qmlItemNode().instanceTransform());
154
void FormEditorItem::setAttentionHighlight(double value)
156
if (QGraphicsItem::parentItem() == scene()->formLayerItem())
157
m_borderWidth = value * 4;
159
m_borderWidth = 1. + value * 3;
164
112
void FormEditorItem::setHighlightBoundingRect(bool highlight)
166
114
if (m_highlightBoundingRect != highlight) {
120
void FormEditorItem::blurContent(bool blurContent)
122
if (m_blurContent != blurContent) {
123
m_blurContent = blurContent;
172
128
void FormEditorItem::setContentVisible(bool visible)
174
130
if (visible == m_isContentVisible)
237
193
pen.setJoinStyle(Qt::MiterJoin);
238
pen.setStyle(Qt::DotLine);
240
195
QColor frameColor("#AAAAAA");
242
197
if (scene()->showBoundingRects()) {
243
if (m_highlightBoundingRect)
198
if (m_highlightBoundingRect) {
244
199
pen.setColor(frameColor);
246
201
pen.setColor(frameColor.darker(150));
202
pen.setStyle(Qt::DotLine);
248
if (m_highlightBoundingRect)
205
if (m_highlightBoundingRect) {
249
206
pen.setColor(frameColor);
251
208
pen.setColor(Qt::transparent);
209
pen.setStyle(Qt::DotLine);
254
213
painter->setPen(pen);
270
void FormEditorItem::paintComponentContentVisualisation(QPainter *painter, const QRectF &clippinRectangle) const
272
painter->setBrush(QColor(0, 0, 0, 150));
273
painter->fillRect(clippinRectangle, Qt::BDiagPattern);
312
276
void FormEditorItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
323
287
if (scene()->showBoundingRects() && m_boundingRect.width() > 15 && m_boundingRect.height() > 15)
324
288
paintPlaceHolderForInvisbleItem(painter);
326
qmlItemNode().paintInstance(painter);
291
painter->drawPixmap(boundingRect().topLeft(), qmlItemNode().instanceBlurredRenderPixmap());
293
painter->drawPixmap(boundingRect().topLeft(), qmlItemNode().instanceRenderPixmap());
329
296
if (!qmlItemNode().isRootModelNode())
330
297
paintBoundingRect(painter);
299
// if (qmlItemNode().modelNode().metaInfo().isSubclassOf("QtQuick.Loader", -1, -1))
300
// paintComponentContentVisualisation(painter, boundingRect());
332
302
painter->restore();