Motiv
Marvelous OTF2 Traces Interactive Visualizer
Loading...
Searching...
No Matches
GenericIndicator.hpp
1/*
2 * Marvelous OTF2 Traces Interactive Visualizer (MOTIV)
3 * Copyright (C) 2023 Florian Gallrein, Björn Gehrke
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18#ifndef MOTIV_GENERICINDICATOR_HPP
19#define MOTIV_GENERICINDICATOR_HPP
20
21
22#include <QGraphicsItem>
23
31template <class T, class G> requires std::is_base_of_v<QAbstractGraphicsShapeItem, G>
32class GenericIndicator : public G {
33public: // constructors
34 explicit GenericIndicator(T* element, QGraphicsItem *parent = nullptr);
35
36public: // methods
43 void setOnDoubleClick(const std::function<void(T *)>& fn);
44
51 void setOnSelected(const std::function<void(T *)>& fn);
52
53protected:
57 void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override;
61 void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override;
62
66 void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
67
71 void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;
72
82 virtual bool respondToEvent(QPointF) { return true; };
83
84private:
85 T* element_;
86
87private: // event handler
88 std::function<void(T*)> onDoubleClick_;
89 std::function<void(T *element)> onSelected_;
90};
91
92
93#endif //MOTIV_GENERICINDICATOR_HPP
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
virtual bool respondToEvent(QPointF)
Checks whether the indicator should react to an event at a given point.