diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2021-06-02 11:27:24 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2021-07-28 19:31:25 -0400 |
| commit | c08ddcab02433cb5078b6cfea11bf972e47b3169 (patch) | |
| tree | 02f05276ac497521a76e1591f3776e4f1cfe31d9 /ui/clickablelabel.h | |
| parent | 8c0fa1737552e548909a435ddcc2b661a71b5da9 (diff) | |
Add sidebar and move some dock widgets to it
Diffstat (limited to 'ui/clickablelabel.h')
| -rw-r--r-- | ui/clickablelabel.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/ui/clickablelabel.h b/ui/clickablelabel.h index 4025d7c3..606ec369 100644 --- a/ui/clickablelabel.h +++ b/ui/clickablelabel.h @@ -1,8 +1,21 @@ #pragma once +#include <QtCore/QTimer> #include <QtGui/QColor> #include <QtGui/QPainter> +#include <QtGui/QPaintEvent> #include <QtWidgets/QLabel> +#include "uicontext.h" + + +struct BINARYNINJAUIAPI IconImage +{ + QImage original; + QImage active, activeHover; + QImage inactive, inactiveHover; + + static IconImage generate(const QImage& src); +}; class BINARYNINJAUIAPI ClickableLabel: public QLabel @@ -20,6 +33,39 @@ protected: }; +class BINARYNINJAUIAPI ClickableIcon: public QWidget +{ + Q_OBJECT + + IconImage m_image; + bool m_canToggle = false; + bool m_active = true; + bool m_hover = false; + QTimer* m_timer; + +public: + ClickableIcon(const QImage& icon, const QSize& desiredPointSize); + + void setAllowToggle(bool canToggle); + void setActive(bool state); + bool active() const { return m_active; } + +Q_SIGNALS: + void clicked(); + void toggle(bool newState); + +private Q_SLOTS: + void underMouseTimerEvent(); + void handleToggle(); + +protected: + void enterEvent(QEnterEvent* event) override; + void leaveEvent(QEvent* event) override; + void paintEvent(QPaintEvent* event) override; + void mouseReleaseEvent(QMouseEvent* event) override { if (event->button() == Qt::LeftButton) Q_EMIT clicked(); } +}; + + class BINARYNINJAUIAPI ClickableStateLabel: public ClickableLabel { Q_OBJECT |
