qtmaterialdialog_internal.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #ifndef QTMATERIALDIALOG_INTERNAL_H
  2. #define QTMATERIALDIALOG_INTERNAL_H
  3. #include <QtWidgets/QWidget>
  4. class QStackedLayout;
  5. class QtMaterialDialog;
  6. class QtMaterialDialogWindow;
  7. class QtMaterialDialogProxy : public QWidget
  8. {
  9. Q_OBJECT
  10. Q_PROPERTY(qreal opacity WRITE setOpacity READ opacity)
  11. enum TransparencyMode {
  12. Transparent,
  13. SemiTransparent,
  14. Opaque,
  15. };
  16. public:
  17. QtMaterialDialogProxy(QtMaterialDialogWindow *source,
  18. QStackedLayout *layout,
  19. QtMaterialDialog *dialog,
  20. QWidget *parent = 0);
  21. ~QtMaterialDialogProxy();
  22. void setOpacity(qreal opacity);
  23. inline qreal opacity() const;
  24. protected slots:
  25. void makeOpaque();
  26. void makeTransparent();
  27. QSize sizeHint() const Q_DECL_OVERRIDE;
  28. protected:
  29. bool event(QEvent *event) Q_DECL_OVERRIDE;
  30. void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
  31. private:
  32. Q_DISABLE_COPY(QtMaterialDialogProxy)
  33. QtMaterialDialogWindow *const m_source;
  34. QStackedLayout *const m_layout;
  35. QtMaterialDialog *const m_dialog;
  36. qreal m_opacity;
  37. TransparencyMode m_mode;
  38. };
  39. inline qreal QtMaterialDialogProxy::opacity() const
  40. {
  41. return m_opacity;
  42. }
  43. class QtMaterialDialogWindow : public QWidget
  44. {
  45. Q_OBJECT
  46. Q_PROPERTY(int offset WRITE setOffset READ offset)
  47. public:
  48. explicit QtMaterialDialogWindow(QtMaterialDialog *dialog, QWidget *parent = 0);
  49. ~QtMaterialDialogWindow();
  50. void setOffset(int offset);
  51. int offset() const;
  52. protected:
  53. void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
  54. private:
  55. Q_DISABLE_COPY(QtMaterialDialogWindow)
  56. QtMaterialDialog *const m_dialog;
  57. };
  58. #endif // QTMATERIALDIALOG_INTERNAL_H