From 7c91160f49613e2a52bede7dac3e7a16f3ecc22f Mon Sep 17 00:00:00 2001 From: Marco Bubke <marco.bubke@nokia.com> Date: Tue, 9 Feb 2010 14:42:32 +0100 Subject: [PATCH] Polish feedback in the form editor a little bit more --- .../formeditor/formeditorgraphicsview.cpp | 74 ++++++++++++------- .../components/formeditor/formeditorview.cpp | 25 ++++++- .../components/formeditor/formeditorview.h | 3 +- 3 files changed, 70 insertions(+), 32 deletions(-) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp index c7e38ac4b08..6a227b99017 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorgraphicsview.cpp @@ -116,95 +116,115 @@ void FormEditorGraphicsView::drawForeground(QPainter *painter, const QRectF &/*r return; painter->save(); + + painter->translate(mapToScene(QPoint(3, 3))); + + QColor changeColor(QColor(Qt::green).lighter(170)); + QFont font; font.setPixelSize(12); painter->setFont(font); + painter->save(); + painter->setOpacity(0.7); + + QLinearGradient gradient(QPoint(0, 0), QPoint(100, 0)); + gradient.setColorAt(0.0, Qt::darkGray); + gradient.setColorAt(1.0, Qt::gray); + painter->setBrush(gradient); + + painter->setPen(Qt::black); + int height = 40; + if (m_feedbackNode.instanceHasAnchors()) + height += 24; + painter->drawRoundedRect(QRect(-1, -1, 100, height), 5, 5); + painter->restore(); + if (m_beginX != m_feedbackNode.instanceValue("x")) - painter->setPen(Qt::green); + painter->setPen(changeColor); else painter->setPen(Qt::black); - painter->drawText(mapToScene(QPoint(2.0, 12.0)), QString("x:")); - painter->drawText(mapToScene(QPoint(14.0, 12.0)), m_feedbackNode.instanceValue("x").toString()); + painter->drawText(QPoint(2.0, 12.0), QString("x:")); + painter->drawText(QPoint(14.0, 12.0), m_feedbackNode.instanceValue("x").toString()); if (m_beginY != m_feedbackNode.instanceValue("y")) - painter->setPen(Qt::green); + painter->setPen(changeColor); else painter->setPen(Qt::black); - painter->drawText(mapToScene(QPoint(50.0, 12.0)), QString("y:")); - painter->drawText(mapToScene(QPoint(60.0, 12.0)), m_feedbackNode.instanceValue("y").toString()); + painter->drawText(QPoint(50.0, 12.0), QString("y:")); + painter->drawText(QPoint(60.0, 12.0), m_feedbackNode.instanceValue("y").toString()); if (m_beginWidth != m_feedbackNode.instanceValue("width")) - painter->setPen(Qt::green); + painter->setPen(changeColor); else painter->setPen(Qt::black); - painter->drawText(mapToScene(QPoint(2.0, 24.0)), QString("w:")); - painter->drawText(mapToScene(QPoint(14.0, 24.0)), m_feedbackNode.instanceValue("width").toString()); + painter->drawText(QPoint(2.0, 24.0), QString("w:")); + painter->drawText(QPoint(14.0, 24.0), m_feedbackNode.instanceValue("width").toString()); if (m_beginHeight != m_feedbackNode.instanceValue("height")) - painter->setPen(Qt::green); + painter->setPen(changeColor); else painter->setPen(Qt::black); - painter->drawText(mapToScene(QPoint(50.0, 24.0)), QString("h:")); - painter->drawText(mapToScene(QPoint(60.0, 24.0)),m_feedbackNode.instanceValue("height").toString()); + painter->drawText(QPoint(50.0, 24.0), QString("h:")); + painter->drawText(QPoint(60.0, 24.0),m_feedbackNode.instanceValue("height").toString()); if (m_parentNode == m_feedbackNode.instanceParent()) { if (!m_feedbackNode.canReparent()) { painter->setPen(Qt::red); - painter->drawText(mapToScene(QPoint(2.0, 36.0)), QString("Cannot reparent.")); + painter->drawText(QPoint(2.0, 36.0), QString("Cannot reparent.")); } } else { painter->setPen(Qt::yellow); if (m_feedbackNode.instanceParent().id().isEmpty()) - painter->drawText(mapToScene(QPoint(2.0, 36.0)), QString("Parent has changed.")); + painter->drawText(QPoint(2.0, 36.0), QString("Parent has changed.")); else - painter->drawText(mapToScene(QPoint(2.0, 36.0)), QString("Parent has changed to %1.").arg(m_feedbackNode.instanceParent().id())); + painter->drawText(QPoint(2.0, 36.0), QString("Parent has changed to %1.").arg(m_feedbackNode.instanceParent().id())); } if (m_feedbackNode.instanceHasAnchors()) { if (m_beginTopMargin != m_feedbackNode.instanceValue("anchors.leftMargin")) - painter->setPen(Qt::green); + painter->setPen(changeColor); else painter->setPen(Qt::black); - painter->drawText(mapToScene(QPoint(2.0, 48.0)), QString("l:")); - painter->drawText(mapToScene(QPoint(14.0, 48.0)), m_feedbackNode.instanceValue("anchors.leftMargin").toString()); + painter->drawText(QPoint(2.0, 48.0), QString("l:")); + painter->drawText(QPoint(14.0, 48.0), m_feedbackNode.instanceValue("anchors.leftMargin").toString()); if (m_beginRightMargin != m_feedbackNode.instanceValue("anchors.rightMargin")) - painter->setPen(Qt::green); + painter->setPen(changeColor); else painter->setPen(Qt::black); - painter->drawText(mapToScene(QPoint(50.0, 48.0)), QString("r:")); - painter->drawText(mapToScene(QPoint(60.0, 48.0)), m_feedbackNode.instanceValue("anchors.rightMargin").toString()); + painter->drawText(QPoint(50.0, 48.0), QString("r:")); + painter->drawText(QPoint(60.0, 48.0), m_feedbackNode.instanceValue("anchors.rightMargin").toString()); if (m_beginTopMargin != m_feedbackNode.instanceValue("anchors.topMargin")) - painter->setPen(Qt::green); + painter->setPen(changeColor); else painter->setPen(Qt::black); - painter->drawText(mapToScene(QPoint(2.0, 60.0)), QString("t:")); - painter->drawText(mapToScene(QPoint(14.0, 60.0)), m_feedbackNode.instanceValue("anchors.topMargin").toString()); + painter->drawText(QPoint(2.0, 60.0), QString("t:")); + painter->drawText(QPoint(14.0, 60.0), m_feedbackNode.instanceValue("anchors.topMargin").toString()); if (m_beginBottomMargin != m_feedbackNode.instanceValue("anchors.bottomMargin")) - painter->setPen(Qt::green); + painter->setPen(changeColor); else painter->setPen(Qt::black); - painter->drawText(mapToScene(QPoint(50.0, 60.0)), QString("b:")); - painter->drawText(mapToScene(QPoint(60.0, 60.0)), m_feedbackNode.instanceValue("anchors.bottomMargin").toString()); + painter->drawText(QPoint(50.0, 60.0), QString("b:")); + painter->drawText(QPoint(60.0, 60.0), m_feedbackNode.instanceValue("anchors.bottomMargin").toString()); } painter->restore(); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index b012e6f3200..297f32f86a6 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -64,7 +64,8 @@ FormEditorView::FormEditorView(QObject *parent) m_anchorTool(new AnchorTool(this)), m_dragTool(new DragTool(this)), m_itemCreatorTool(new ItemCreatorTool(this)), - m_currentTool(m_selectionTool) + m_currentTool(m_selectionTool), + m_transactionCounter(0) { connect(widget()->zoomAction(), SIGNAL(zoomLevelChanged(double)), SLOT(updateGraphicsIndicators())); connect(widget()->showBoundingRectAction(), SIGNAL(toggled(bool)), scene(), SLOT(setShowBoundingRects(bool))); @@ -251,9 +252,7 @@ void FormEditorView::selectedNodesChanged(const QList<ModelNode> &selectedNodeLi item->update(); } - if (selectedNodeList.count() == 1) - m_formEditorWidget->setFeedbackNode(QmlItemNode(selectedNodeList.first())); - else + if (selectedNodeList.count() != 1) m_formEditorWidget->setFeedbackNode(QmlItemNode()); m_scene->update(); @@ -426,6 +425,24 @@ void FormEditorView::auxiliaryDataChanged(const ModelNode &node, const QString & } } +void FormEditorView::customNotification(const AbstractView */*view*/, const QString &identifier, const QList<ModelNode> &/*nodeList*/, const QList<QVariant> &/*data*/) +{ + if (identifier == "__start rewriter transaction__") { + m_transactionCounter++; + if (m_transactionCounter == 1 + && selectedModelNodes().count() == 1) + m_formEditorWidget->setFeedbackNode(QmlItemNode(selectedModelNodes().first())); + } + + if (identifier == "__end rewriter transaction__") { + m_transactionCounter--; + if (m_transactionCounter == 0) + m_formEditorWidget->setFeedbackNode(QmlItemNode()); + } + +} + + double FormEditorView::margins() const { return m_formEditorWidget->margins(); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.h b/src/plugins/qmldesigner/components/formeditor/formeditorview.h index 6230ca36f40..bb39e4b1b18 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.h +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.h @@ -95,6 +95,7 @@ public: void nodeSlidedToIndex(const NodeListProperty &listProperty, int newIndex, int oldIndex); void auxiliaryDataChanged(const ModelNode &node, const QString &name, const QVariant &data); + void customNotification(const AbstractView *view, const QString &identifier, const QList<ModelNode> &nodeList, const QList<QVariant> &data); double margins() const; double spacing() const; @@ -132,7 +133,7 @@ private: //variables DragTool *m_dragTool; ItemCreatorTool *m_itemCreatorTool; AbstractFormEditorTool *m_currentTool; - + int m_transactionCounter; }; } -- GitLab