qtmaterialripple.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #ifndef QTMATERIALRIPPLE_H
  2. #define QTMATERIALRIPPLE_H
  3. #include <QParallelAnimationGroup>
  4. #include <QEasingCurve>
  5. #include <QPropertyAnimation>
  6. #include <QPoint>
  7. #include <QBrush>
  8. class QtMaterialRippleOverlay;
  9. class QtMaterialRipple : public QParallelAnimationGroup
  10. {
  11. Q_OBJECT
  12. Q_PROPERTY(qreal radius WRITE setRadius READ radius)
  13. Q_PROPERTY(qreal opacity WRITE setOpacity READ opacity)
  14. public:
  15. explicit QtMaterialRipple(const QPoint &center, QObject *parent = 0);
  16. QtMaterialRipple(const QPoint &center, QtMaterialRippleOverlay *overlay, QObject *parent = 0);
  17. ~QtMaterialRipple();
  18. inline void setOverlay(QtMaterialRippleOverlay *overlay);
  19. void setRadius(qreal radius);
  20. inline qreal radius() const;
  21. void setOpacity(qreal opacity);
  22. inline qreal opacity() const;
  23. void setColor(const QColor &color);
  24. inline QColor color() const;
  25. void setBrush(const QBrush &brush);
  26. inline QBrush brush() const;
  27. inline QPoint center() const;
  28. inline QPropertyAnimation *radiusAnimation() const;
  29. inline QPropertyAnimation *opacityAnimation() const;
  30. inline void setOpacityStartValue(qreal value);
  31. inline void setOpacityEndValue(qreal value);
  32. inline void setRadiusStartValue(qreal value);
  33. inline void setRadiusEndValue(qreal value);
  34. inline void setDuration(int msecs);
  35. protected slots:
  36. void destroy();
  37. private:
  38. Q_DISABLE_COPY(QtMaterialRipple)
  39. QPropertyAnimation *animate(const QByteArray &property,
  40. const QEasingCurve &easing = QEasingCurve::OutQuad,
  41. int duration = 800);
  42. void init();
  43. QtMaterialRippleOverlay *m_overlay;
  44. QPropertyAnimation *const m_radiusAnimation;
  45. QPropertyAnimation *const m_opacityAnimation;
  46. qreal m_radius;
  47. qreal m_opacity;
  48. QPoint m_center;
  49. QBrush m_brush;
  50. };
  51. inline void QtMaterialRipple::setOverlay(QtMaterialRippleOverlay *overlay)
  52. {
  53. m_overlay = overlay;
  54. }
  55. inline qreal QtMaterialRipple::radius() const
  56. {
  57. return m_radius;
  58. }
  59. inline qreal QtMaterialRipple::opacity() const
  60. {
  61. return m_opacity;
  62. }
  63. inline QColor QtMaterialRipple::color() const
  64. {
  65. return m_brush.color();
  66. }
  67. inline QBrush QtMaterialRipple::brush() const
  68. {
  69. return m_brush;
  70. }
  71. inline QPoint QtMaterialRipple::center() const
  72. {
  73. return m_center;
  74. }
  75. inline QPropertyAnimation *QtMaterialRipple::radiusAnimation() const
  76. {
  77. return m_radiusAnimation;
  78. }
  79. inline QPropertyAnimation *QtMaterialRipple::opacityAnimation() const
  80. {
  81. return m_opacityAnimation;
  82. }
  83. inline void QtMaterialRipple::setOpacityStartValue(qreal value)
  84. {
  85. m_opacityAnimation->setStartValue(value);
  86. }
  87. inline void QtMaterialRipple::setOpacityEndValue(qreal value)
  88. {
  89. m_opacityAnimation->setEndValue(value);
  90. }
  91. inline void QtMaterialRipple::setRadiusStartValue(qreal value)
  92. {
  93. m_radiusAnimation->setStartValue(value);
  94. }
  95. inline void QtMaterialRipple::setRadiusEndValue(qreal value)
  96. {
  97. m_radiusAnimation->setEndValue(value);
  98. }
  99. inline void QtMaterialRipple::setDuration(int msecs)
  100. {
  101. m_radiusAnimation->setDuration(msecs);
  102. m_opacityAnimation->setDuration(msecs);
  103. }
  104. #endif // QTMATERIALRIPPLE_H