qt-material-widgets/components/flatbutton_p.h

81 lines
1.9 KiB
C
Raw Normal View History

2016-05-14 11:06:20 +00:00
#ifndef FLATBUTTON_P_H
#define FLATBUTTON_P_H
2016-05-15 07:08:23 +00:00
#include <QStateMachine>
2016-05-14 11:06:20 +00:00
#include "flatbutton.h"
#include "lib/rippleoverlay.h"
2016-05-14 12:18:57 +00:00
#include "lib/theme.h"
2016-05-14 17:00:31 +00:00
#include "lib/style.h"
2016-05-14 11:06:20 +00:00
class FlatButtonPrivate
{
Q_DISABLE_COPY(FlatButtonPrivate)
Q_DECLARE_PUBLIC(FlatButton)
public:
FlatButtonPrivate(FlatButton *parent);
QColor textColor() const;
2016-05-14 17:13:32 +00:00
void setTextColor(const QString &themeColor);
2016-05-14 11:06:20 +00:00
FlatButton *const q_ptr;
RippleOverlay *const ripple;
2016-05-15 07:08:23 +00:00
QStateMachine machine;
2016-05-14 12:18:57 +00:00
Material::Role role;
2016-05-14 11:06:20 +00:00
};
FlatButtonPrivate::FlatButtonPrivate(FlatButton *parent)
: q_ptr(parent),
2016-05-14 12:18:57 +00:00
ripple(new RippleOverlay(parent)),
role(Material::Default)
2016-05-14 11:06:20 +00:00
{
2016-05-14 17:00:31 +00:00
Style &style = Style::instance();
parent->setStyle(&style);
2016-05-14 11:06:20 +00:00
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);
2016-05-14 17:00:31 +00:00
QPalette palette;
palette.setColor(QPalette::Disabled, QPalette::ButtonText,
style.themeColor("disabled"));
parent->setPalette(palette);
2016-05-15 07:08:23 +00:00
QState *normalState = new QState;
QState *focusedState = new QState;
QState *pressedState = new QState;
machine.addState(normalState);
machine.addState(focusedState);
machine.addState(pressedState);
machine.setInitialState(normalState);
2016-05-14 11:06:20 +00:00
}
QColor FlatButtonPrivate::textColor() const
{
Q_Q(const FlatButton);
return q->palette().color(QPalette::Active, QPalette::ButtonText);
}
2016-05-14 17:13:32 +00:00
void FlatButtonPrivate::setTextColor(const QString &themeColor)
{
Q_Q(FlatButton);
QPalette palette(q->palette());
Style &style = Style::instance();
palette.setColor(QPalette::Active, QPalette::ButtonText,
style.themeColor(themeColor));
q->setPalette(palette);
}
2016-05-14 11:06:20 +00:00
#endif // FLATBUTTON_P_H