SCXMLEditor: Apply theming to the all items

Task-number: QTCREATORBUG-29701
Change-Id: Ia6a0c75e0f4249ea9f17e6274f047c40df34ef56
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Artem Sokolovskii
2024-09-16 15:34:46 +02:00
parent b895c599fe
commit 1e410e2c4d
15 changed files with 69 additions and 55 deletions

View File

@@ -31,9 +31,7 @@ ConnectableItem::ConnectableItem(const QPointF &p, BaseItem *parent)
setAcceptDrops(true);
m_selectedPen.setStyle(Qt::DotLine);
m_selectedPen.setColor(QColor(0x44, 0x44, 0xed));
m_selectedPen.setCosmetic(true);
m_releasedFromParentBrush = QBrush(QColor(0x98, 0x98, 0x98));
setPos(p);
connect(this, &ConnectableItem::geometryChanged, this, &ConnectableItem::updateCornerPositions);
@@ -530,7 +528,7 @@ void ConnectableItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *o
if (m_releasedFromParent) {
painter->setPen(Qt::NoPen);
painter->setBrush(m_releasedFromParentBrush);
painter->setBrush(scene()->palette().brush(QPalette::ColorGroup::Current, QPalette::Window));
painter->setClipping(true);
painter->setClipPath(m_shadowClipPath);
//Since the form is already cliped just draw a rectangle
@@ -539,6 +537,7 @@ void ConnectableItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *o
}
if (isSelected()) {
m_selectedPen.setColor(painter->pen().color());
painter->setPen(m_selectedPen);
painter->setBrush(Qt::NoBrush);
painter->drawRect(boundingRect());

View File

@@ -108,7 +108,6 @@ private:
HighlightItem *m_highlighItem = nullptr;
TransitionItem *m_newTransition = nullptr;
QPen m_selectedPen;
QBrush m_releasedFromParentBrush;
int m_minimumWidth = 120;
int m_minimumHeight = 100;
bool m_releasedFromParent = false;

View File

@@ -4,6 +4,7 @@
#include "cornergrabberitem.h"
#include <QCursor>
#include <QGraphicsScene>
#include <QGraphicsSceneMouseEvent>
#include <QPainter>
@@ -60,7 +61,8 @@ void CornerGrabberItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
painter->save();
painter->setRenderHint(QPainter::Antialiasing, true);
painter->setPen(Qt::NoPen);
painter->setBrush(isEnabled() ? QColor(0x62, 0x62, 0xf9) : QColor(0x12, 0x12, 0x12));
QPalette::ColorGroup group = isEnabled() ? QPalette::Inactive : QPalette::Disabled;
painter->setBrush(scene()->palette().brush(group, QPalette::Highlight));
if (m_grabberType == Square)
painter->drawRect(m_drawingRect);

View File

@@ -22,7 +22,8 @@ EventItem::EventItem(const QPointF &pos, BaseItem *parent)
m_eventNameItem->setFont(serifFont);
QString color = editorInfo("fontColor");
m_eventNameItem->setDefaultTextColor(color.isEmpty() ? QColor(Qt::black) : QColor(color));
if (!color.isEmpty())
m_eventNameItem->setDefaultTextColor(QColor(color));
setPos(pos);
m_eventNameItem->setTextInteractionFlags(Qt::NoTextInteraction);
@@ -51,7 +52,6 @@ OnEntryExitItem::OnEntryExitItem(BaseItem *parent)
m_eventNameItem->setParentItem(this);
QFont serifFont("Times", 10, QFont::Normal);
m_eventNameItem->setFont(serifFont);
m_eventNameItem->setDefaultTextColor(Qt::black);
m_eventNameItem->setTextInteractionFlags(Qt::NoTextInteraction);
}

View File

@@ -2,6 +2,8 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "finalstateitem.h"
#include <QGraphicsScene>
#include <QPainter>
using namespace ScxmlEditor::PluginInterface;
@@ -39,13 +41,13 @@ void FinalStateItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *op
painter->setRenderHint(QPainter::Antialiasing, true);
painter->setOpacity(getOpacity());
painter->setBrush(QColor(0xff, 0xff, 0xff));
m_pen.setColor(overlapping() ? qRgb(0xff, 0x00, 0x60) : qRgb(0x45, 0x45, 0x45));
QPalette::ColorGroup group = overlapping() ? QPalette::Active : QPalette::Inactive;
m_pen.setColor(scene()->palette().color(group, QPalette::WindowText));
painter->setPen(m_pen);
painter->drawEllipse(boundingRect().center(), m_size, m_size);
painter->setPen(Qt::NoPen);
painter->setBrush(QColor(0x4d, 0x4d, 0x4d));
painter->setBrush(scene()->palette().color(QPalette::WindowText));
painter->drawEllipse(boundingRect().center(), m_size * 0.8, m_size * 0.8);
painter->restore();

View File

@@ -21,6 +21,7 @@
#include <utils/qtcassert.h>
#include <utils/stringutils.h>
#include <utils/theme/theme.h>
#include <QAction>
#include <QGuiApplication>
@@ -36,6 +37,8 @@ GraphicsScene::GraphicsScene(QObject *parent)
{
//setMinimumRenderSize(5);
setItemIndexMethod(QGraphicsScene::NoIndex);
setPalette(Utils::creatorTheme()->palette());
}
GraphicsScene::~GraphicsScene()

View File

@@ -10,11 +10,6 @@ HighlightItem::HighlightItem(BaseItem *baseItem)
: QGraphicsObject(nullptr)
, m_baseItem(baseItem)
{
m_pen = QPen(QColor(0xff, 0x00, 0x60));
m_pen.setWidth(2);
m_pen.setStyle(Qt::DashLine);
m_pen.setCosmetic(true);
setZValue(1000);
}
@@ -47,12 +42,17 @@ void HighlightItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
QRectF br = m_baseItem->polygonShape().boundingRect();
QPen pen = painter->pen();
pen.setWidth(2);
pen.setStyle(Qt::DashLine);
pen.setCosmetic(true);
painter->setPen(pen);
painter->setBrush(Qt::NoBrush);
switch (m_baseItem->type()) {
case StateType:
case ParallelType: {
painter->setOpacity(1.0);
painter->setPen(m_pen);
painter->setBrush(Qt::NoBrush);
painter->drawRoundedRect(br, 10, 10);
break;
}
@@ -60,8 +60,6 @@ void HighlightItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
case HistoryType:
case FinalStateType: {
painter->setOpacity(1.0);
painter->setPen(m_pen);
painter->setBrush(Qt::NoBrush);
painter->drawEllipse(br);
break;
}

View File

@@ -31,8 +31,6 @@ public:
private:
QPointer<BaseItem> m_baseItem;
QRectF m_boundingRect;
QBrush m_brush;
QPen m_pen;
};
} // namespace PluginInterface

View File

@@ -2,6 +2,8 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "historyitem.h"
#include <QGraphicsScene>
#include <QPainter>
using namespace ScxmlEditor::PluginInterface;
@@ -39,8 +41,8 @@ void HistoryItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio
painter->setRenderHint(QPainter::Antialiasing, true);
painter->setOpacity(getOpacity());
painter->setBrush(QColor(0xff, 0xff, 0xff));
m_pen.setColor(overlapping() ? qRgb(0xff, 0x00, 0x60) : qRgb(0x45, 0x45, 0x45));
QPalette::ColorGroup group = overlapping() ? QPalette::Active : QPalette::Inactive;
m_pen.setColor(scene()->palette().color(group, QPalette::WindowText));
painter->setPen(m_pen);
painter->drawEllipse(boundingRect().center(), m_size, m_size);

View File

@@ -9,6 +9,7 @@
#include <QByteArray>
#include <QDataStream>
#include <QGraphicsScene>
#include <QPainter>
using namespace ScxmlEditor::PluginInterface;
@@ -77,9 +78,9 @@ void InitialStateItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *
painter->setRenderHint(QPainter::Antialiasing, true);
painter->setOpacity(getOpacity());
m_pen.setColor(overlapping() ? qRgb(0xff, 0x00, 0x60) : qRgb(0x45, 0x45, 0x45));
QPalette::ColorGroup group = overlapping() ? QPalette::Active : QPalette::Inactive;
m_pen.setColor(scene()->palette().color(group, QPalette::WindowText));
painter->setPen(m_pen);
painter->setBrush(QColor(0x4d, 0x4d, 0x4d));
painter->drawEllipse(boundingRect().center(), m_size, m_size);
painter->restore();

View File

@@ -4,6 +4,7 @@
#include "quicktransitionitem.h"
#include "scxmleditortr.h"
#include <QGraphicsScene>
#include <QGraphicsSceneMouseEvent>
#include <QPainter>
@@ -24,9 +25,8 @@ QuickTransitionItem::QuickTransitionItem(int index, ItemType connectionType, QGr
m_drawingRect = m_rect.adjusted(4, 4, -4, -4);
m_stateRect = m_rect.adjusted(3, 4, -3, -4);
m_brush.setStyle(Qt::SolidPattern);
m_brush.setColor(QColor(0xe8, 0xe8, 0xe8));
m_brush.setColor(scene()->palette().color(QPalette::Window));
m_pen.setColor(QColor(0x12, 0x12, 0x12));
m_pen.setCapStyle(Qt::RoundCap);
setAcceptHoverEvents(true);
}
@@ -39,14 +39,14 @@ void QuickTransitionItem::setConnectionType(ItemType connectionType)
void QuickTransitionItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *e)
{
Q_UNUSED(e)
m_brush.setColor(QColor(0xe8, 0xe8, 0xe8));
m_brush.setColor(scene()->palette().color(QPalette::Inactive, QPalette::Window));
update();
}
void QuickTransitionItem::hoverEnterEvent(QGraphicsSceneHoverEvent *e)
{
Q_UNUSED(e)
m_brush.setColor(QColor(0xff, 0xc4, 0xff));
m_brush.setColor(scene()->palette().color(QPalette::Active, QPalette::Window));
update();
}
@@ -58,6 +58,7 @@ void QuickTransitionItem::paint(QPainter *painter, const QStyleOptionGraphicsIte
painter->save();
painter->setRenderHint(QPainter::Antialiasing, true);
m_pen.setColor(painter->pen().color());
painter->setPen(m_pen);
painter->setBrush(m_brush);
painter->drawRect(m_rect);
@@ -71,13 +72,13 @@ void QuickTransitionItem::paint(QPainter *painter, const QStyleOptionGraphicsIte
switch (m_connectionType) {
case StateType:
painter->setPen(m_pen);
painter->setBrush(Qt::white);
painter->setBrush(scene()->palette().brush(QPalette::Window));
painter->drawRoundedRect(m_stateRect, 2, 2);
break;
case ParallelType:
painter->setPen(m_pen);
painter->setBrush(Qt::white);
painter->setBrush(scene()->palette().brush(QPalette::Window));
painter->drawRoundedRect(m_stateRect, 2, 2);
painter->setPen(m_pen);
@@ -89,18 +90,18 @@ void QuickTransitionItem::paint(QPainter *painter, const QStyleOptionGraphicsIte
case FinalStateType:
painter->setPen(m_pen);
painter->setBrush(Qt::white);
painter->setBrush(scene()->palette().brush(QPalette::Window));
painter->drawEllipse(m_stateRect.center(), 7, 7);
painter->setPen(Qt::NoPen);
painter->setBrush(Qt::black);
painter->setBrush(painter->pen().color());
painter->drawEllipse(m_stateRect.center(), 5, 5);
break;
case HistoryType:
painter->setFont(QFont("Arial", 6));
painter->setPen(m_pen);
painter->setBrush(Qt::white);
painter->setBrush(scene()->palette().brush(QPalette::Window));
painter->drawEllipse(m_stateRect.center(), 7, 7);
painter->drawText(m_stateRect, Qt::AlignCenter, Tr::tr("H"));
break;

View File

@@ -2,6 +2,9 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "snapline.h"
#include "utils/theme/theme.h"
#include <QPen>
using namespace ScxmlEditor::PluginInterface;
@@ -10,7 +13,7 @@ SnapLine::SnapLine(QGraphicsItem *parent)
: QGraphicsLineItem(parent)
{
QPen pen;
pen.setBrush(QColor(0x22, 0xcc, 0x22));
pen.setBrush(Utils::creatorColor(Utils::Theme::Token_Accent_Default));
pen.setStyle(Qt::DashLine);
setPen(pen);
setZValue(502);

View File

@@ -16,6 +16,8 @@
#include "statewarningitem.h"
#include "textitem.h"
#include "transitionitem.h"
#include "utils/stylehelper.h"
#include "utils/theme/theme.h"
#include "utilsprovider.h"
#include <utils/stringutils.h>
@@ -49,8 +51,6 @@ StateItem::StateItem(const QPointF &pos, BaseItem *parent)
connect(m_stateNameItem, &TextItem::textChanged, this, &StateItem::updateTextPositions);
connect(m_stateNameItem, &TextItem::textReady, this, &StateItem::titleHasChanged);
m_pen = QPen(QColor(0x45, 0x45, 0x45));
updateColors();
updatePolygon();
}
@@ -127,7 +127,8 @@ void StateItem::updateEditorInfo(bool allChildren)
ConnectableItem::updateEditorInfo(allChildren);
QString color = editorInfo(Constants::C_SCXML_EDITORINFO_FONTCOLOR);
m_stateNameItem->setDefaultTextColor(color.isEmpty() ? QColor(Qt::black) : QColor(color));
if (!color.isEmpty())
m_stateNameItem->setDefaultTextColor(QColor(color));
// Update child too if necessary
if (allChildren) {
@@ -467,17 +468,18 @@ void StateItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
// Set opacity and color
painter->setOpacity(getOpacity());
m_pen.setColor(overlapping() ? qRgb(0xff, 0x00, 0x60) : qRgb(0x45, 0x45, 0x45));
QPalette::ColorGroup group = overlapping() ? QPalette::Active : QPalette::Inactive;
m_pen.setColor(scene()->palette().color(group, QPalette::WindowText));
painter->setPen(m_pen);
QColor stateColor(editorInfo(Constants::C_SCXML_EDITORINFO_STATECOLOR));
if (!stateColor.isValid())
stateColor = tag() ? tag()->document()->getColor(depth()) : QColor(0x12, 0x34, 0x56);
stateColor = scene()->palette().color(QPalette::Window);
// Draw basic frame
QRectF r = boundingRect();
QLinearGradient grad(r.topLeft(), r.bottomLeft());
grad.setColorAt(0, stateColor.lighter(115));
grad.setColorAt(1, stateColor);
grad.setColorAt(0, stateColor);
grad.setColorAt(1, Utils::StyleHelper::mergedColors(painter->pen().color(), stateColor, 8));
painter->setBrush(QBrush(grad));
painter->drawRoundedRect(m_drawingRect, STATE_RADIUS, STATE_RADIUS);
@@ -511,7 +513,7 @@ void StateItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
if (m_initial) {
double size = m_titleRect.height() * 0.3;
painter->setBrush(QColor(0x4d, 0x4d, 0x4d));
painter->setBrush(scene()->palette().brush(QPalette::Window));
painter->drawEllipse(QPointF(m_titleRect.left() + 2 * size, m_titleRect.center().y()), size, size);
}
}

View File

@@ -57,11 +57,6 @@ TransitionItem::TransitionItem(BaseItem *parent)
{
setFlag(ItemIsSelectable, true);
m_highlightPen = QPen(QColor(0xff, 0x00, 0x60));
m_highlightPen.setWidth(8);
m_highlightPen.setJoinStyle(Qt::MiterJoin);
m_pen = QPen(QColor(0x12, 0x12, 0x12));
m_pen.setWidth(2);
m_arrow << QPointF(0, 0)
@@ -953,10 +948,16 @@ void TransitionItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *op
Q_UNUSED(widget)
painter->save();
painter->setRenderHint(QPainter::Antialiasing, true);
m_pen.setColor(painter->pen().color());
painter->setPen(m_pen);
QPen highlightPen;
highlightPen.setWidth(8);
highlightPen.setJoinStyle(Qt::MiterJoin);
highlightPen.setColor(scene()->palette().color(QPalette::HighlightedText));
if (m_cornerPoints.count() >= 2) {
if (m_targetType == InternalSameTarget) {
QRectF rect(m_cornerPoints[0].x(), m_cornerPoints[0].y() - SELECTION_DISTANCE,
@@ -965,7 +966,7 @@ void TransitionItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *op
painter->drawArc(rect, 0, 180 * 16);
} else {
if (highlight()) {
painter->setPen(m_highlightPen);
painter->setPen(highlightPen);
painter->drawPolyline(m_cornerPoints);
}
painter->setPen(m_pen);
@@ -977,7 +978,7 @@ void TransitionItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *op
painter->drawEllipse(m_cornerPoints[i], 2, 2);
if (highlight()) {
painter->setPen(m_highlightPen);
painter->setPen(highlightPen);
painter->drawPolyline(m_arrow);
}
@@ -992,11 +993,15 @@ void TransitionItem::updateEditorInfo(bool allChilds)
BaseItem::updateEditorInfo(allChilds);
const QColor fontColor = editorInfo(Constants::C_SCXML_EDITORINFO_FONTCOLOR);
m_eventTagItem->setDefaultTextColor(fontColor.isValid() ? fontColor : Qt::black);
m_condTagItem->setDefaultTextColor(fontColor.isValid() ? fontColor : Qt::black);
if (fontColor.isValid()) {
m_eventTagItem->setDefaultTextColor(fontColor);
m_condTagItem->setDefaultTextColor(fontColor);
}
const QColor stateColor = editorInfo(Constants::C_SCXML_EDITORINFO_STATECOLOR);
m_pen.setColor(stateColor.isValid() ? stateColor : qRgb(0x12, 0x12, 0x12));
if (stateColor.isValid())
m_pen.setColor(stateColor);
}
void TransitionItem::updateTarget(bool fixValue)

View File

@@ -139,7 +139,6 @@ private:
qreal m_arrowSize = 10;
qreal m_arrowAngle;
QPen m_pen;
QPen m_highlightPen;
bool m_lineSelected = false;
TagTextItem *m_eventTagItem;