experiment with focus animation

This commit is contained in:
laserpants 2016-05-27 17:12:16 +03:00
parent 37b4c3c531
commit a9d0d1cc1e
4 changed files with 42 additions and 8 deletions

View File

@ -134,6 +134,13 @@ void FlatButton::paintEvent(QPaintEvent *event)
painter.drawControl(QStyle::CE_PushButtonLabel, option); painter.drawControl(QStyle::CE_PushButtonLabel, option);
//if (hasFocus() && !underMouse()) {
// QPen pen;
// pen.setWidth(4);
// painter.setPen(pen);
// painter.drawRect(rect());
//}
#ifdef DEBUG_LAYOUT #ifdef DEBUG_LAYOUT
QPainter debug(this); QPainter debug(this);
QPen pen; QPen pen;

View File

@ -10,7 +10,8 @@ FlatButtonDelegate::FlatButtonDelegate(FlatButton *parent)
: QStateMachine(parent), : QStateMachine(parent),
button(parent), button(parent),
_normalState(new QState(this)), _normalState(new QState(this)),
_focusedState(new QState(this)), _hoveredState(new QState(this)),
_focusedState2(new QState(this)),
_pressedState(new QState(this)) _pressedState(new QState(this))
{ {
setInitialState(_normalState); setInitialState(_normalState);
@ -23,7 +24,7 @@ FlatButtonDelegate::FlatButtonDelegate(FlatButton *parent)
// //
transition = new QEventTransition(button, QEvent::Enter); transition = new QEventTransition(button, QEvent::Enter);
transition->setTargetState(_focusedState); transition->setTargetState(_hoveredState);
animation = new QPropertyAnimation(this, "backgroundOpacity"); animation = new QPropertyAnimation(this, "backgroundOpacity");
animation->setDuration(140); animation->setDuration(140);
@ -32,13 +33,33 @@ FlatButtonDelegate::FlatButtonDelegate(FlatButton *parent)
// //
//transition = new QEventTransition(button, QEvent::FocusIn);
//transition->setTargetState(_focusedState2);
////animation = new QPropertyAnimation(this, "backgroundOpacity");
////animation->setDuration(140);
////transition->addAnimation(animation);
//_normalState->addTransition(transition);
//
transition = new QEventTransition(button, QEvent::Leave); transition = new QEventTransition(button, QEvent::Leave);
transition->setTargetState(_normalState); transition->setTargetState(_normalState);
animation = new QPropertyAnimation(this, "backgroundOpacity"); animation = new QPropertyAnimation(this, "backgroundOpacity");
animation->setDuration(140); animation->setDuration(140);
transition->addAnimation(animation); transition->addAnimation(animation);
_focusedState->addTransition(transition); _focusedState2->addTransition(transition);
//
transition = new QEventTransition(button, QEvent::Leave);
transition->setTargetState(_normalState);
animation = new QPropertyAnimation(this, "backgroundOpacity");
animation->setDuration(140);
transition->addAnimation(animation);
_hoveredState->addTransition(transition);
// //
@ -48,12 +69,12 @@ FlatButtonDelegate::FlatButtonDelegate(FlatButton *parent)
animation = new QPropertyAnimation(this, "backgroundOpacity"); animation = new QPropertyAnimation(this, "backgroundOpacity");
animation->setDuration(140); animation->setDuration(140);
transition->addAnimation(animation); transition->addAnimation(animation);
_focusedState->addTransition(transition); _hoveredState->addTransition(transition);
// //
transition = new QEventTransition(button, QEvent::MouseButtonRelease); transition = new QEventTransition(button, QEvent::MouseButtonRelease);
transition->setTargetState(_focusedState); transition->setTargetState(_focusedState2);
animation = new QPropertyAnimation(this, "backgroundOpacity"); animation = new QPropertyAnimation(this, "backgroundOpacity");
animation->setDuration(500); animation->setDuration(500);
@ -99,8 +120,11 @@ void FlatButtonDelegate::assignProperties()
_normalState->assignProperty(this, "backgroundOpacity", 0); _normalState->assignProperty(this, "backgroundOpacity", 0);
_normalState->assignProperty(this, "backgroundColor", textColor); _normalState->assignProperty(this, "backgroundColor", textColor);
_focusedState->assignProperty(this, "backgroundOpacity", 0.15); _hoveredState->assignProperty(this, "backgroundOpacity", 0.15);
_focusedState->assignProperty(this, "backgroundColor", textColor); _hoveredState->assignProperty(this, "backgroundColor", textColor);
_focusedState2->assignProperty(this, "backgroundOpacity", 0.15);
_focusedState2->assignProperty(this, "backgroundColor", textColor);
_pressedState->assignProperty(this, "backgroundOpacity", 0.15); _pressedState->assignProperty(this, "backgroundOpacity", 0.15);
_pressedState->assignProperty(this, "backgroundColor", textColor); _pressedState->assignProperty(this, "backgroundColor", textColor);

View File

@ -30,7 +30,8 @@ private:
FlatButton *const button; FlatButton *const button;
QState *const _normalState; QState *const _normalState;
QState *const _focusedState; QState *const _hoveredState;
QState *const _focusedState2;
QState *const _pressedState; QState *const _pressedState;
qreal _backgroundOpacity; qreal _backgroundOpacity;
QColor _backgroundColor; QColor _backgroundColor;

View File

@ -89,6 +89,8 @@ RaisedButton::RaisedButton(QWidget *parent)
Q_D(RaisedButton); Q_D(RaisedButton);
d->init(); d->init();
setMinimumHeight(42);
} }
RaisedButton::~RaisedButton() RaisedButton::~RaisedButton()