From cc1976ff6db89626b96fee5d73272ab31536897b Mon Sep 17 00:00:00 2001 From: parker Date: Sat, 21 Jun 2025 23:02:00 +0100 Subject: [PATCH] refactor: abstract highlight edge --- src/gui/network/Network.cpp | 34 ++++++++++++++++++++++++---------- src/gui/network/Network.h | 3 +++ 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/gui/network/Network.cpp b/src/gui/network/Network.cpp index ed3787a..5929075 100644 --- a/src/gui/network/Network.cpp +++ b/src/gui/network/Network.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include Network::Network(QWidget* parent) @@ -140,9 +141,7 @@ void Network::mouseMoved(QMouseEvent *event) // set node edge color if(ctrlMod && isType(hoverItem)) { - static_cast(hoverItem)->setColor(QColor("red")); - hoverItem->update(); - prevHoverItem_=hoverItem; + highlightEdge(hoverItem, true); } // reset node edge color if( @@ -150,8 +149,7 @@ void Network::mouseMoved(QMouseEvent *event) isType(prevHoverItem) ) { - static_cast(prevHoverItem)->useDefaultColor(); - prevHoverItem->update(); + highlightEdge(prevHoverItem, false); } } @@ -169,14 +167,13 @@ void Network::keyPressEvent(QKeyEvent *event) QGraphicsItem* hoverItem = view_->itemAt(widgetPos); + // edge detection if( event->key() == Qt::Key_Control && isType(hoverItem) ) { - static_cast(hoverItem)->setColor(QColor("red")); - hoverItem->update(); - prevHoverItem_=hoverItem; + highlightEdge(hoverItem, true); } if(event->key() == Qt::Key_Escape) @@ -185,19 +182,36 @@ void Network::keyPressEvent(QKeyEvent *event) } } +void Network::highlightEdge(QGraphicsItem* edge, bool state) +{ + if(state) + { + static_cast(edge)->setColor(QColor("red")); + edge->update(); + prevHoverItem_=edge; + } + else + { + static_cast(edge)->useDefaultColor(); + edge->update(); + } + +} + + void Network::keyReleaseEvent(QKeyEvent *event) { // modifiers Qt::KeyboardModifiers mods = event->modifiers(); bool ctrlMod = mods & Qt::ControlModifier; + // edge detection if( prevHoverItem_ && event->key() == Qt::Key_Control && isType(prevHoverItem_) ) { - static_cast(prevHoverItem_)->useDefaultColor(); - prevHoverItem_->update(); + highlightEdge(prevHoverItem_, false); } } diff --git a/src/gui/network/Network.h b/src/gui/network/Network.h index bf1d105..41f94ad 100644 --- a/src/gui/network/Network.h +++ b/src/gui/network/Network.h @@ -3,6 +3,7 @@ #include #include #include "gui/network/NetworkGraphicsView.h" +#include "gui/network/NodeEdgeGraphic.h" #include "gui/network/NetworkGraphicsScene.h" #include "gui/network/SocketGraphic.h" #include "gui/network/FloatingEdgeGraphic.h" @@ -29,6 +30,8 @@ private: void keyReleaseEvent(QKeyEvent *event) override; void destroyFloatingEdge(); + void highlightEdge(QGraphicsItem* edge, bool state); + template bool isType(QGraphicsItem* item) {