Wavelength
Privacy-focused, cross-platform, and open-source communication application
Loading...
Searching...
No Matches
cyber_audio_button.h
Go to the documentation of this file.
1#ifndef CYBER_AUDIO_BUTTON_H
2#define CYBER_AUDIO_BUTTON_H
3
4#include <QPushButton>
5#include <QMouseEvent>
6
14class CyberAudioButton final : public QPushButton {
15 Q_OBJECT
17 Q_PROPERTY(double glowIntensity READ GetGlowIntensity WRITE SetGlowIntensity)
18
19public:
27 explicit CyberAudioButton(const QString &text, QWidget *parent = nullptr);
28
32 ~CyberAudioButton() override;
33
38 double GetGlowIntensity() const { return glow_intensity_; }
39
45 void SetGlowIntensity(const double intensity) {
46 glow_intensity_ = intensity;
47 update();
48 }
49
50protected:
56 void paintEvent(QPaintEvent *event) override;
57
62 void enterEvent(QEvent *event) override {
64 QPushButton::enterEvent(event);
65 }
66
71 void leaveEvent(QEvent *event) override {
73 QPushButton::leaveEvent(event);
74 }
75
80 void mousePressEvent(QMouseEvent *event) override {
82 QPushButton::mousePressEvent(event);
83 }
84
89 void mouseReleaseEvent(QMouseEvent *event) override {
90 if (rect().contains(event->pos())) {
92 } else {
94 }
95 QPushButton::mouseReleaseEvent(event);
96 }
97
98private:
105};
106
107#endif //CYBER_AUDIO_BUTTON_H
void SetGlowIntensity(const double intensity)
Sets the intensity of the glow effect. Triggers a repaint of the button.
Definition cyber_audio_button.h:45
double glow_intensity_
Current overall glow intensity, influenced by base_glow_intensity_ and pulse_timer_.
Definition cyber_audio_button.h:100
CyberAudioButton(const QString &text, QWidget *parent=nullptr)
Constructs a CyberAudioButton. Initializes the button style (transparent background,...
Definition cyber_audio_button.cpp:9
~CyberAudioButton() override
Destructor. Stops the pulse timer.
Definition cyber_audio_button.cpp:24
void enterEvent(QEvent *event) override
Overridden enter event handler. Increases the base glow intensity when the mouse enters.
Definition cyber_audio_button.h:62
double glowIntensity
Property controlling the intensity of the button's glow effect (0.0 to 1.0+). Animatable.
Definition cyber_audio_button.h:17
double base_glow_intensity_
Base level for the glow effect, modified by hover/press states.
Definition cyber_audio_button.h:102
void mouseReleaseEvent(QMouseEvent *event) override
Overridden mouse release event handler. Sets the base glow intensity back to the hover level.
Definition cyber_audio_button.h:89
void paintEvent(QPaintEvent *event) override
Overridden paint event handler. Draws the custom cyberpunk button appearance. Renders the clipped bac...
Definition cyber_audio_button.cpp:31
QTimer * pulse_timer_
Timer responsible for the subtle pulsing animation of the glow effect.
Definition cyber_audio_button.h:104
double GetGlowIntensity() const
Gets the current intensity of the glow effect.
Definition cyber_audio_button.h:38
void leaveEvent(QEvent *event) override
Overridden leave event handler. Resets the base glow intensity when the mouse leaves.
Definition cyber_audio_button.h:71
void mousePressEvent(QMouseEvent *event) override
Overridden mouse press event handler. Maximizes the base glow intensity when pressed.
Definition cyber_audio_button.h:80