refactor: abstract type check
This commit is contained in:
@@ -71,8 +71,7 @@ void Network::resizeEvent(QResizeEvent *event)
|
|||||||
void Network::leftMousePress(QMouseEvent *event)
|
void Network::leftMousePress(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
QGraphicsItem* itemClicked = view_->itemAt(event->pos());
|
QGraphicsItem* itemClicked = view_->itemAt(event->pos());
|
||||||
bool isSocket = itemClicked && typeid(*itemClicked)==typeid(SocketGraphic);
|
if(isType<SocketGraphic>(itemClicked))
|
||||||
if(isSocket)
|
|
||||||
{
|
{
|
||||||
std::cout << "SOCKET!\n";
|
std::cout << "SOCKET!\n";
|
||||||
socketClicked(static_cast<SocketGraphic*>(itemClicked), event);
|
socketClicked(static_cast<SocketGraphic*>(itemClicked), event);
|
||||||
@@ -85,6 +84,8 @@ void Network::leftMousePress(QMouseEvent *event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void Network::socketClicked(SocketGraphic* socket, QMouseEvent *event)
|
void Network::socketClicked(SocketGraphic* socket, QMouseEvent *event)
|
||||||
{
|
{
|
||||||
std::cout << "socket clicked\n";
|
std::cout << "socket clicked\n";
|
||||||
@@ -135,24 +136,20 @@ void Network::mouseMoved(QMouseEvent *event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
QGraphicsItem* hoverItem = view_->itemAt(event->pos());
|
QGraphicsItem* hoverItem = view_->itemAt(event->pos());
|
||||||
bool isEdge = hoverItem && typeid(*hoverItem)==typeid(NodeEdgeGraphic);
|
|
||||||
|
|
||||||
// set
|
// set node edge color
|
||||||
if(ctrlMod && isEdge)
|
if(ctrlMod && isType<NodeEdgeGraphic>(hoverItem))
|
||||||
{
|
{
|
||||||
std::cout << "EDGE\n";
|
|
||||||
static_cast<NodeEdgeGraphic*>(hoverItem)->setColor(QColor("red"));
|
static_cast<NodeEdgeGraphic*>(hoverItem)->setColor(QColor("red"));
|
||||||
hoverItem->update();
|
hoverItem->update();
|
||||||
prevHoverItem_=hoverItem;
|
prevHoverItem_=hoverItem;
|
||||||
}
|
}
|
||||||
// reset node edge color
|
// reset node edge color
|
||||||
if(
|
if(
|
||||||
prevHoverItem &&
|
|
||||||
(!ctrlMod || hoverItem!=prevHoverItem) &&
|
(!ctrlMod || hoverItem!=prevHoverItem) &&
|
||||||
typeid(*prevHoverItem)==typeid(NodeEdgeGraphic)
|
isType<NodeEdgeGraphic>(prevHoverItem)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::cout << " reset\n";
|
|
||||||
static_cast<NodeEdgeGraphic*>(prevHoverItem)->useDefaultColor();
|
static_cast<NodeEdgeGraphic*>(prevHoverItem)->useDefaultColor();
|
||||||
prevHoverItem->update();
|
prevHoverItem->update();
|
||||||
}
|
}
|
||||||
@@ -174,7 +171,7 @@ void Network::keyPressEvent(QKeyEvent *event)
|
|||||||
|
|
||||||
if(
|
if(
|
||||||
event->key() == Qt::Key_Control &&
|
event->key() == Qt::Key_Control &&
|
||||||
hoverItem && typeid(*hoverItem)==typeid(NodeEdgeGraphic)
|
isType<NodeEdgeGraphic>(hoverItem)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
static_cast<NodeEdgeGraphic*>(hoverItem)->setColor(QColor("red"));
|
static_cast<NodeEdgeGraphic*>(hoverItem)->setColor(QColor("red"));
|
||||||
@@ -197,7 +194,7 @@ void Network::keyReleaseEvent(QKeyEvent *event)
|
|||||||
if(
|
if(
|
||||||
prevHoverItem_ &&
|
prevHoverItem_ &&
|
||||||
event->key() == Qt::Key_Control &&
|
event->key() == Qt::Key_Control &&
|
||||||
typeid(*prevHoverItem_)==typeid(NodeEdgeGraphic)
|
isType<NodeEdgeGraphic>(prevHoverItem_)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
static_cast<NodeEdgeGraphic*>(prevHoverItem_)->useDefaultColor();
|
static_cast<NodeEdgeGraphic*>(prevHoverItem_)->useDefaultColor();
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <qgraphicsitem.h>
|
||||||
|
#include <typeinfo>
|
||||||
#include "gui/network/NetworkGraphicsView.h"
|
#include "gui/network/NetworkGraphicsView.h"
|
||||||
#include "gui/network/NetworkGraphicsScene.h"
|
#include "gui/network/NetworkGraphicsScene.h"
|
||||||
#include "gui/network/SocketGraphic.h"
|
#include "gui/network/SocketGraphic.h"
|
||||||
@@ -27,6 +29,12 @@ private:
|
|||||||
void keyReleaseEvent(QKeyEvent *event) override;
|
void keyReleaseEvent(QKeyEvent *event) override;
|
||||||
void destroyFloatingEdge();
|
void destroyFloatingEdge();
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
bool isType(QGraphicsItem* item)
|
||||||
|
{
|
||||||
|
return item && typeid(*item)==typeid(T);
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void resizeEvent(QResizeEvent *event) override;
|
void resizeEvent(QResizeEvent *event) override;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user