Wavelength
Privacy-focused, cross-platform, and open-source communication application
Loading...
Searching...
No Matches
cyber_push_button.h
Go to the documentation of this file.
1#ifndef CYBER_PUSH_BUTTON_H
2#define CYBER_PUSH_BUTTON_H
3
4#include <QPushButton>
5#include <QTimer>
6
15class CyberPushButton final : public QPushButton {
16 Q_OBJECT
18 Q_PROPERTY(double glowIntensity READ GetGlowIntensity WRITE SetGlowIntensity)
19
20public:
28 explicit CyberPushButton(const QString &text, QWidget *parent = nullptr);
29
33 ~CyberPushButton() override {
34 if (pulse_timer_) {
35 pulse_timer_->stop();
36 }
37 }
38
43 double GetGlowIntensity() const { return glow_intensity_; }
44
50 void SetGlowIntensity(const double intensity) {
51 glow_intensity_ = intensity;
52 update();
53 }
54
55protected:
61 void paintEvent(QPaintEvent *event) override;
62
67 void enterEvent(QEvent *event) override {
69 QPushButton::enterEvent(event);
70 }
71
76 void leaveEvent(QEvent *event) override {
78 QPushButton::leaveEvent(event);
79 }
80
85 void mousePressEvent(QMouseEvent *event) override {
87 QPushButton::mousePressEvent(event);
88 }
89
94 void mouseReleaseEvent(QMouseEvent *event) override {
96 QPushButton::mouseReleaseEvent(event);
97 }
98
99private:
106};
107
108#endif //CYBER_PUSH_BUTTON_H
double GetGlowIntensity() const
Gets the current intensity of the glow effect.
Definition cyber_push_button.h:43
void mousePressEvent(QMouseEvent *event) override
Overridden mouse press event handler. Maximizes the base glow intensity when pressed.
Definition cyber_push_button.h:85
double base_glow_intensity_
Base level for the glow effect, modified by hover/press states.
Definition cyber_push_button.h:103
void paintEvent(QPaintEvent *event) override
Overridden paint event handler. Draws the custom cyberpunk button appearance. Renders the clipped bac...
Definition cyber_push_button.cpp:23
void leaveEvent(QEvent *event) override
Overridden leave event handler. Resets the base glow intensity when the mouse leaves.
Definition cyber_push_button.h:76
CyberPushButton(const QString &text, QWidget *parent=nullptr)
Constructs a CyberPushButton. Initializes the button style (transparent background,...
Definition cyber_push_button.cpp:8
QTimer * pulse_timer_
Timer responsible for the subtle pulsing animation of the glow effect.
Definition cyber_push_button.h:105
void mouseReleaseEvent(QMouseEvent *event) override
Overridden mouse release event handler. Sets the base glow intensity back to the hover level if still...
Definition cyber_push_button.h:94
~CyberPushButton() override
Destructor. Stops the pulse timer.
Definition cyber_push_button.h:33
void SetGlowIntensity(const double intensity)
Sets the intensity of the glow effect. Triggers a repaint of the button.
Definition cyber_push_button.h:50
double glowIntensity
Property controlling the intensity of the button's glow effect (0.0 to 1.0+). Animatable.
Definition cyber_push_button.h:18
double glow_intensity_
Current overall glow intensity, influenced by base_glow_intensity_ and pulse_timer_.
Definition cyber_push_button.h:101
void enterEvent(QEvent *event) override
Overridden enter event handler. Increases the base glow intensity when the mouse enters.
Definition cyber_push_button.h:67