diff --git a/src/gui/network/Network.cpp b/src/gui/network/Network.cpp index 7eec12e..ed3787a 100644 --- a/src/gui/network/Network.cpp +++ b/src/gui/network/Network.cpp @@ -71,8 +71,7 @@ void Network::resizeEvent(QResizeEvent *event) void Network::leftMousePress(QMouseEvent *event) { QGraphicsItem* itemClicked = view_->itemAt(event->pos()); - bool isSocket = itemClicked && typeid(*itemClicked)==typeid(SocketGraphic); - if(isSocket) + if(isType(itemClicked)) { std::cout << "SOCKET!\n"; socketClicked(static_cast(itemClicked), event); @@ -85,6 +84,8 @@ void Network::leftMousePress(QMouseEvent *event) } + + void Network::socketClicked(SocketGraphic* socket, QMouseEvent *event) { std::cout << "socket clicked\n"; @@ -135,24 +136,20 @@ void Network::mouseMoved(QMouseEvent *event) } QGraphicsItem* hoverItem = view_->itemAt(event->pos()); - bool isEdge = hoverItem && typeid(*hoverItem)==typeid(NodeEdgeGraphic); - // set - if(ctrlMod && isEdge) + // set node edge color + if(ctrlMod && isType(hoverItem)) { - std::cout << "EDGE\n"; static_cast(hoverItem)->setColor(QColor("red")); hoverItem->update(); prevHoverItem_=hoverItem; } // reset node edge color if( - prevHoverItem && (!ctrlMod || hoverItem!=prevHoverItem) && - typeid(*prevHoverItem)==typeid(NodeEdgeGraphic) + isType(prevHoverItem) ) { - std::cout << " reset\n"; static_cast(prevHoverItem)->useDefaultColor(); prevHoverItem->update(); } @@ -174,7 +171,7 @@ void Network::keyPressEvent(QKeyEvent *event) if( event->key() == Qt::Key_Control && - hoverItem && typeid(*hoverItem)==typeid(NodeEdgeGraphic) + isType(hoverItem) ) { static_cast(hoverItem)->setColor(QColor("red")); @@ -197,7 +194,7 @@ void Network::keyReleaseEvent(QKeyEvent *event) if( prevHoverItem_ && event->key() == Qt::Key_Control && - typeid(*prevHoverItem_)==typeid(NodeEdgeGraphic) + isType(prevHoverItem_) ) { static_cast(prevHoverItem_)->useDefaultColor(); diff --git a/src/gui/network/Network.h b/src/gui/network/Network.h index 8a85578..bf1d105 100644 --- a/src/gui/network/Network.h +++ b/src/gui/network/Network.h @@ -1,5 +1,7 @@ #pragma once #include +#include +#include #include "gui/network/NetworkGraphicsView.h" #include "gui/network/NetworkGraphicsScene.h" #include "gui/network/SocketGraphic.h" @@ -27,6 +29,12 @@ private: void keyReleaseEvent(QKeyEvent *event) override; void destroyFloatingEdge(); + template + bool isType(QGraphicsItem* item) + { + return item && typeid(*item)==typeid(T); + } + protected: void resizeEvent(QResizeEvent *event) override; };