make FlatButton pimpl

This commit is contained in:
laserpants 2016-05-14 14:06:20 +03:00
parent c4a17f9dfa
commit 4bc4d6aa92
5 changed files with 59 additions and 37 deletions

View File

@ -7,36 +7,19 @@
#include "lib/style.h" #include "lib/style.h"
#include "lib/rippleoverlay.h" #include "lib/rippleoverlay.h"
#include "flatbutton_p.h"
FlatButton::FlatButton(QWidget *parent) FlatButton::FlatButton(QWidget *parent)
: QPushButton(parent), : QPushButton(parent),
_ripple(new RippleOverlay(this)) d_ptr(new FlatButtonPrivate(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) FlatButton::FlatButton(const QString &text, QWidget *parent)
: QPushButton(parent), : QPushButton(parent),
_ripple(new RippleOverlay(this)) d_ptr(new FlatButtonPrivate(this))
{ {
setText(text); 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() FlatButton::~FlatButton()
@ -45,8 +28,10 @@ FlatButton::~FlatButton()
void FlatButton::resizeEvent(QResizeEvent *event) void FlatButton::resizeEvent(QResizeEvent *event)
{ {
if (_ripple) { Q_D(FlatButton);
_ripple->setGeometry(rect());
if (d->ripple) {
d->ripple->setGeometry(rect());
} }
QPushButton::resizeEvent(event); QPushButton::resizeEvent(event);
@ -56,8 +41,6 @@ void FlatButton::paintEvent(QPaintEvent *event)
{ {
Q_UNUSED(event) Q_UNUSED(event)
//painter.drawRect(rect().adjusted(0, 0, -1, -1));
QStylePainter painter(this); QStylePainter painter(this);
QStyleOptionButton option; QStyleOptionButton option;
@ -87,7 +70,9 @@ void FlatButton::paintEvent(QPaintEvent *event)
void FlatButton::mousePressEvent(QMouseEvent *event) void FlatButton::mousePressEvent(QMouseEvent *event)
{ {
_ripple->addRipple(event->pos()); Q_D(FlatButton);
d->ripple->addRipple(event->pos());
QPushButton::mousePressEvent(event); QPushButton::mousePressEvent(event);
} }

View File

@ -2,8 +2,9 @@
#define FLATBUTTON_H #define FLATBUTTON_H
#include <QPushButton> #include <QPushButton>
#include <QScopedPointer>
class RippleOverlay; class FlatButtonPrivate;
class FlatButton : public QPushButton class FlatButton : public QPushButton
{ {
@ -21,8 +22,11 @@ protected:
void enterEvent(QEvent *event) Q_DECL_OVERRIDE; void enterEvent(QEvent *event) Q_DECL_OVERRIDE;
void leaveEvent(QEvent *event) Q_DECL_OVERRIDE; void leaveEvent(QEvent *event) Q_DECL_OVERRIDE;
const QScopedPointer<FlatButtonPrivate> d_ptr;
private: private:
RippleOverlay *const _ripple; Q_DISABLE_COPY(FlatButton)
Q_DECLARE_PRIVATE(FlatButton)
}; };
#endif // FLATBUTTON_H #endif // FLATBUTTON_H

34
components/flatbutton_p.h Normal file
View File

@ -0,0 +1,34 @@
#ifndef FLATBUTTON_P_H
#define FLATBUTTON_P_H
#include "flatbutton.h"
#include "lib/rippleoverlay.h"
class FlatButtonPrivate
{
Q_DISABLE_COPY(FlatButtonPrivate)
Q_DECLARE_PUBLIC(FlatButton)
public:
FlatButtonPrivate(FlatButton *parent);
FlatButton *const q_ptr;
RippleOverlay *const ripple;
};
FlatButtonPrivate::FlatButtonPrivate(FlatButton *parent)
: q_ptr(parent),
ripple(new RippleOverlay(parent))
{
parent->setStyle(&Style::instance());
parent->setAttribute(Qt::WA_Hover);
parent->setMouseTracking(true);
QFont font(parent->font());
font.setCapitalization(QFont::AllUppercase);
font.setPointSizeF(10.5);
font.setStyleName("Medium");
parent->setFont(font);
}
#endif // FLATBUTTON_P_H

View File

@ -52,17 +52,15 @@ SliderPrivate::SliderPrivate(Slider *parent)
oldValue(parent->value()), oldValue(parent->value()),
trackWidth(2) trackWidth(2)
{ {
Q_Q(Slider); parent->setMouseTracking(true);
parent->setFocusPolicy(Qt::StrongFocus);
q->setMouseTracking(true); parent->setPageStep(1);
q->setFocusPolicy(Qt::StrongFocus);
q->setPageStep(1);
QSizePolicy sp(QSizePolicy::Expanding, QSizePolicy::Fixed); QSizePolicy sp(QSizePolicy::Expanding, QSizePolicy::Fixed);
if (q->orientation() == Qt::Vertical) if (parent->orientation() == Qt::Vertical)
sp.transpose(); sp.transpose();
q->setSizePolicy(sp); parent->setSizePolicy(sp);
q->setAttribute(Qt::WA_WState_OwnSizePolicy, false); parent->setAttribute(Qt::WA_WState_OwnSizePolicy, false);
machine->start(); machine->start();

View File

@ -102,7 +102,8 @@ HEADERS += mainwindow.h \
components/searchfield.h \ components/searchfield.h \
lib/theme.h \ lib/theme.h \
lib/theme_p.h \ lib/theme_p.h \
components/sliderinternal.h components/sliderinternal.h \
components/flatbutton_p.h
RESOURCES += \ RESOURCES += \
resources.qrc resources.qrc