qtmaterialflatbutton_internal.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #ifndef QTMATERIALFLATBUTTON_INTERNAL_H
  2. #define QTMATERIALFLATBUTTON_INTERNAL_H
  3. #include <QStateMachine>
  4. #include <QColor>
  5. class QtMaterialFlatButton;
  6. class QSequentialAnimationGroup;
  7. class QtMaterialFlatButtonStateMachine : public QStateMachine
  8. {
  9. Q_OBJECT
  10. Q_PROPERTY(qreal overlayOpacity WRITE setOverlayOpacity READ overlayOpacity)
  11. Q_PROPERTY(qreal checkedOverlayProgress WRITE setCheckedOverlayProgress READ checkedOverlayProgress)
  12. Q_PROPERTY(qreal haloOpacity WRITE setHaloOpacity READ haloOpacity)
  13. Q_PROPERTY(qreal haloSize WRITE setHaloSize READ haloSize)
  14. Q_PROPERTY(qreal haloScaleFactor WRITE setHaloScaleFactor READ haloScaleFactor)
  15. public:
  16. explicit QtMaterialFlatButtonStateMachine(QtMaterialFlatButton *parent);
  17. ~QtMaterialFlatButtonStateMachine();
  18. void setOverlayOpacity(qreal opacity);
  19. inline qreal overlayOpacity() const;
  20. void setCheckedOverlayProgress(qreal progress);
  21. inline qreal checkedOverlayProgress() const;
  22. void setHaloOpacity(qreal opacity);
  23. inline qreal haloOpacity() const;
  24. void setHaloSize(qreal size);
  25. inline qreal haloSize() const;
  26. void setHaloScaleFactor(qreal factor);
  27. inline qreal haloScaleFactor() const;
  28. void startAnimations();
  29. void setupProperties();
  30. void updateCheckedStatus();
  31. signals:
  32. void buttonPressed();
  33. void buttonChecked();
  34. void buttonUnchecked();
  35. protected:
  36. bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE;
  37. private:
  38. Q_DISABLE_COPY(QtMaterialFlatButtonStateMachine)
  39. void addTransition(QObject *object, QEvent::Type eventType, QState *fromState, QState *toState);
  40. void addTransition(QAbstractTransition *transition, QState *fromState, QState *toState);
  41. QtMaterialFlatButton *const m_button;
  42. QState *const m_topLevelState;
  43. QState *const m_configState;
  44. QState *const m_checkableState;
  45. QState *const m_checkedState;
  46. QState *const m_uncheckedState;
  47. QState *const m_neutralState;
  48. QState *const m_neutralFocusedState;
  49. QState *const m_hoveredState;
  50. QState *const m_hoveredFocusedState;
  51. QState *const m_pressedState;
  52. QSequentialAnimationGroup
  53. *const m_haloAnimation;
  54. qreal m_overlayOpacity;
  55. qreal m_checkedOverlayProgress;
  56. qreal m_haloOpacity;
  57. qreal m_haloSize;
  58. qreal m_haloScaleFactor;
  59. bool m_wasChecked;
  60. };
  61. inline qreal QtMaterialFlatButtonStateMachine::overlayOpacity() const
  62. {
  63. return m_overlayOpacity;
  64. }
  65. inline qreal QtMaterialFlatButtonStateMachine::checkedOverlayProgress() const
  66. {
  67. return m_checkedOverlayProgress;
  68. }
  69. inline qreal QtMaterialFlatButtonStateMachine::haloOpacity() const
  70. {
  71. return m_haloOpacity;
  72. }
  73. inline qreal QtMaterialFlatButtonStateMachine::haloSize() const
  74. {
  75. return m_haloSize;
  76. }
  77. inline qreal QtMaterialFlatButtonStateMachine::haloScaleFactor() const
  78. {
  79. return m_haloScaleFactor;
  80. }
  81. #endif // QTMATERIALFLATBUTTON_INTERNAL_H