diff --git a/components/flatbutton.cpp b/components/flatbutton.cpp index 97a6f17..3d691bf 100644 --- a/components/flatbutton.cpp +++ b/components/flatbutton.cpp @@ -1,25 +1,54 @@ #include "flatbutton.h" #include +#include #include "lib/style.h" +#include "lib/rippleoverlay.h" FlatButton::FlatButton(QWidget *parent) - : QPushButton(parent) + : QPushButton(parent), + _ripple(new RippleOverlay(this)) { setStyle(&Style::instance()); + setAttribute(Qt::WA_Hover); + setMouseTracking(true); + + QFont f(font()); + f.setCapitalization(QFont::AllUppercase); + f.setPointSizeF(10.5); + f.setStyleName("Medium"); + setFont(f); } FlatButton::FlatButton(const QString &text, QWidget *parent) - : QPushButton(parent) + : QPushButton(parent), + _ripple(new RippleOverlay(this)) { setText(text); setStyle(&Style::instance()); + setAttribute(Qt::WA_Hover); + setMouseTracking(true); + + QFont f(font()); + f.setCapitalization(QFont::AllUppercase); + f.setPointSizeF(10.5); + f.setStyleName("Medium"); + setFont(f); } FlatButton::~FlatButton() { } +void FlatButton::resizeEvent(QResizeEvent *event) +{ + if (_ripple) { + _ripple->setGeometry(rect()); + } + + QPushButton::resizeEvent(event); +} + void FlatButton::paintEvent(QPaintEvent *event) { Q_UNUSED(event) @@ -29,6 +58,13 @@ void FlatButton::paintEvent(QPaintEvent *event) painter.drawRect(rect().adjusted(0, 0, -1, -1)); } +void FlatButton::mousePressEvent(QMouseEvent *event) +{ + _ripple->addRipple(event->pos()); + + QPushButton::mousePressEvent(event); +} + //#include //#include //#include diff --git a/components/flatbutton.h b/components/flatbutton.h index 258776c..5651f13 100644 --- a/components/flatbutton.h +++ b/components/flatbutton.h @@ -3,6 +3,8 @@ #include +class RippleOverlay; + class FlatButton : public QPushButton { Q_OBJECT @@ -13,7 +15,12 @@ public: ~FlatButton(); protected: + void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + +private: + RippleOverlay *const _ripple; }; #endif // FLATBUTTON_H