18#include "GenericIndicator.hpp"
21#include <QGraphicsSceneMouseEvent>
23#include "src/models/communication/Communication.hpp"
24#include "src/models/Slot.hpp"
25#include "src/ui/Constants.hpp"
26#include "src/models/communication/CollectiveCommunicationEvent.hpp"
28template <
class T,
class G>
requires std::is_base_of_v<QAbstractGraphicsShapeItem, G>
30 : G(), element_(element) {
31 this->setAcceptHoverEvents(
true);
32 this->setAcceptedMouseButtons(Qt::LeftButton);
35template <
class T,
class G>
requires std::is_base_of_v<QAbstractGraphicsShapeItem, G>
40template <
class T,
class G>
requires std::is_base_of_v<QAbstractGraphicsShapeItem, G>
45template <
class T,
class G>
requires std::is_base_of_v<QAbstractGraphicsShapeItem, G>
47 if (onDoubleClick_ && respondToEvent(event->pos())) {
48 onDoubleClick_(element_);
51 G::mouseDoubleClickEvent(event);
55template <
class T,
class G>
requires std::is_base_of_v<QAbstractGraphicsShapeItem, G>
57 if (onSelected_ && respondToEvent(event->pos())) {
58 onSelected_(element_);
61 G::mousePressEvent(event);
65template <
class T,
class G>
requires std::is_base_of_v<QAbstractGraphicsShapeItem, G>
68 p.setWidth(p.width() * 2);
71 G::setZValue(G::zValue() + layers::Z_LAYER_HIGHLIGHTED_OFFSET);
73 QGraphicsItem::hoverEnterEvent(event);
76template <
class T,
class G>
requires std::is_base_of_v<QAbstractGraphicsShapeItem, G>
79 p.setWidth(p.width() / 2);
82 G::setZValue(G::zValue() - layers::Z_LAYER_HIGHLIGHTED_OFFSET);
84 QGraphicsItem::hoverLeaveEvent(event);
A generic indicator bundling common interaction behaviours.
void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override
void setOnSelected(const std::function< void(T *)> &fn)
Registers a select handler.
void setOnDoubleClick(const std::function< void(T *)> &fn)
Registers a double click handler.
void mousePressEvent(QGraphicsSceneMouseEvent *event) override