qt-material-widgets/components/qtmaterialdialog_internal.h

83 lines
1.6 KiB
C
Raw Normal View History

2017-09-29 23:15:08 +00:00
#ifndef QTMATERIALDIALOG_INTERNAL_H
#define QTMATERIALDIALOG_INTERNAL_H
2017-09-29 23:40:00 +00:00
#include <QtWidgets/QWidget>
2022-02-17 02:15:21 +00:00
namespace md
{
2017-09-29 23:15:08 +00:00
class QStackedLayout;
2022-02-17 02:15:21 +00:00
class Dialog;
class DialogWindow;
2017-09-29 23:15:08 +00:00
2022-02-17 02:15:21 +00:00
class DialogProxy : public QWidget
2017-09-29 23:15:08 +00:00
{
Q_OBJECT
Q_PROPERTY(qreal opacity WRITE setOpacity READ opacity)
enum TransparencyMode {
Transparent,
SemiTransparent,
Opaque,
};
public:
2022-02-17 02:15:21 +00:00
DialogProxy(DialogWindow *source,
2017-09-29 23:15:08 +00:00
QStackedLayout *layout,
2022-02-17 02:15:21 +00:00
Dialog *dialog,
2017-09-29 23:15:08 +00:00
QWidget *parent = 0);
2022-02-17 02:15:21 +00:00
~DialogProxy();
2017-09-29 23:15:08 +00:00
void setOpacity(qreal opacity);
inline qreal opacity() const;
protected slots:
void makeOpaque();
void makeTransparent();
QSize sizeHint() const Q_DECL_OVERRIDE;
protected:
bool event(QEvent *event) Q_DECL_OVERRIDE;
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
private:
2022-02-17 02:15:21 +00:00
Q_DISABLE_COPY(DialogProxy)
2017-09-29 23:15:08 +00:00
2022-02-17 02:15:21 +00:00
DialogWindow *const m_source;
2017-09-29 23:15:08 +00:00
QStackedLayout *const m_layout;
2022-02-17 02:15:21 +00:00
Dialog *const m_dialog;
2017-09-29 23:15:08 +00:00
qreal m_opacity;
TransparencyMode m_mode;
};
2022-02-17 02:15:21 +00:00
inline qreal DialogProxy::opacity() const
2017-09-29 23:15:08 +00:00
{
return m_opacity;
}
2022-02-17 02:15:21 +00:00
class DialogWindow : public QWidget
2017-09-29 23:15:08 +00:00
{
Q_OBJECT
Q_PROPERTY(int offset WRITE setOffset READ offset)
public:
2022-02-17 02:15:21 +00:00
explicit DialogWindow(Dialog *dialog, QWidget *parent = 0);
~DialogWindow();
2017-09-29 23:15:08 +00:00
void setOffset(int offset);
int offset() const;
protected:
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
private:
2022-02-17 02:15:21 +00:00
Q_DISABLE_COPY(DialogWindow)
2017-09-29 23:15:08 +00:00
2022-02-17 02:15:21 +00:00
Dialog *const m_dialog;
2017-09-29 23:15:08 +00:00
};
#endif // QTMATERIALDIALOG_INTERNAL_H
2022-02-17 02:15:21 +00:00
}