qtmaterialtoggle_internal.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #ifndef QTMATERIALTOGGLE_INTERNAL_H
  2. #define QTMATERIALTOGGLE_INTERNAL_H
  3. #include <QtWidgets/QWidget>
  4. #include "lib/qtmaterialrippleoverlay.h"
  5. class QtMaterialToggle;
  6. class QtMaterialToggleThumb;
  7. class QtMaterialToggleTrack;
  8. class QtMaterialToggleRippleOverlay : public QtMaterialRippleOverlay
  9. {
  10. Q_OBJECT
  11. public:
  12. QtMaterialToggleRippleOverlay(QtMaterialToggleThumb *thumb,
  13. QtMaterialToggleTrack *track,
  14. QtMaterialToggle *parent);
  15. ~QtMaterialToggleRippleOverlay();
  16. protected slots:
  17. void addToggleRipple();
  18. protected:
  19. bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
  20. QRect overlayGeometry() const Q_DECL_OVERRIDE;
  21. private:
  22. Q_DISABLE_COPY(QtMaterialToggleRippleOverlay)
  23. QtMaterialToggle *const m_toggle;
  24. QtMaterialToggleThumb *const m_thumb;
  25. QtMaterialToggleTrack *const m_track;
  26. };
  27. class QtMaterialToggleThumb : public QWidget
  28. {
  29. Q_OBJECT
  30. Q_PROPERTY(qreal shift WRITE setShift READ shift)
  31. Q_PROPERTY(QColor thumbColor WRITE setThumbColor READ thumbColor)
  32. public:
  33. QtMaterialToggleThumb(QtMaterialToggle *parent);
  34. ~QtMaterialToggleThumb();
  35. void setShift(qreal shift);
  36. inline qreal shift() const;
  37. inline qreal offset() const;
  38. inline void setThumbColor(const QColor &color);
  39. inline QColor thumbColor() const;
  40. protected:
  41. bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
  42. void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
  43. private:
  44. Q_DISABLE_COPY(QtMaterialToggleThumb)
  45. void updateOffset();
  46. QtMaterialToggle *const m_toggle;
  47. QColor m_thumbColor;
  48. qreal m_shift;
  49. qreal m_offset;
  50. };
  51. inline qreal QtMaterialToggleThumb::shift() const
  52. {
  53. return m_shift;
  54. }
  55. inline qreal QtMaterialToggleThumb::offset() const
  56. {
  57. return m_offset;
  58. }
  59. inline void QtMaterialToggleThumb::setThumbColor(const QColor &color)
  60. {
  61. m_thumbColor = color;
  62. update();
  63. }
  64. inline QColor QtMaterialToggleThumb::thumbColor() const
  65. {
  66. return m_thumbColor;
  67. }
  68. class QtMaterialToggleTrack : public QWidget
  69. {
  70. Q_OBJECT
  71. Q_PROPERTY(QColor trackColor WRITE setTrackColor READ trackColor)
  72. public:
  73. QtMaterialToggleTrack(QtMaterialToggle *parent);
  74. ~QtMaterialToggleTrack();
  75. void setTrackColor(const QColor &color);
  76. inline QColor trackColor() const;
  77. protected:
  78. bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
  79. void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
  80. private:
  81. Q_DISABLE_COPY(QtMaterialToggleTrack)
  82. QtMaterialToggle *const m_toggle;
  83. QColor m_trackColor;
  84. };
  85. inline QColor QtMaterialToggleTrack::trackColor() const
  86. {
  87. return m_trackColor;
  88. }
  89. #endif // QTMATERIALTOGGLE_INTERNAL_H