diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-08-13 19:20:17 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-08-13 20:50:54 +0000 |
commit | 887dc4744dca5c2e853fd49f600e597dc48c821d (patch) | |
tree | 0016cf7d1b5ad0e43b8413faa7c17e117761ce1b /src/imports | |
parent | 5f324ed2013e66562c35100eb05f77083529cf2b (diff) |
Platform: add missing Dialog::visible
To be more in line with QtQuick.Dialogs 1.x.
Change-Id: Ied68abee9574ff8705c4abfc1940081ab3686a2b
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/platform/plugins.qmltypes | 1 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformdialog.cpp | 35 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformdialog_p.h | 6 |
3 files changed, 37 insertions, 5 deletions
diff --git a/src/imports/platform/plugins.qmltypes b/src/imports/platform/plugins.qmltypes index 656d28f4..e1931b30 100644 --- a/src/imports/platform/plugins.qmltypes +++ b/src/imports/platform/plugins.qmltypes @@ -33,6 +33,7 @@ Module { Property { name: "title"; type: "string" } Property { name: "flags"; type: "Qt::WindowFlags" } Property { name: "modality"; type: "Qt::WindowModality" } + Property { name: "visible"; type: "bool" } Signal { name: "accepted" } Signal { name: "rejected" } Method { name: "open" } diff --git a/src/imports/platform/qquickplatformdialog.cpp b/src/imports/platform/qquickplatformdialog.cpp index 7ceab62e..e4ca06bc 100644 --- a/src/imports/platform/qquickplatformdialog.cpp +++ b/src/imports/platform/qquickplatformdialog.cpp @@ -83,6 +83,7 @@ QT_BEGIN_NAMESPACE QQuickPlatformDialog::QQuickPlatformDialog(QObject *parent) : QObject(parent), + m_visible(false), m_complete(false), m_parentWindow(nullptr), m_flags(Qt::Dialog), @@ -216,19 +217,41 @@ void QQuickPlatformDialog::setModality(Qt::WindowModality modality) } /*! + \qmlproperty bool Qt.labs.platform::Dialog::visible + + This property holds the visibility of the dialog. The default value is \c false. + + \sa open(), close() +*/ +bool QQuickPlatformDialog::isVisible() const +{ + return m_handle && m_visible; +} + +void QQuickPlatformDialog::setVisible(bool visible) +{ + if (visible) + open(); + else + close(); +} + +/*! \qmlmethod void Qt.labs.platform::Dialog::open() Opens the dialog. - \sa close() + \sa visible, close() */ void QQuickPlatformDialog::open() { - if (!m_handle) + if (!m_handle || m_visible) return; applyOptions(); - m_handle->show(m_flags, m_modality, m_parentWindow); + m_visible = m_handle->show(m_flags, m_modality, m_parentWindow); + if (m_visible) + emit visibleChanged(); } /*! @@ -236,14 +259,16 @@ void QQuickPlatformDialog::open() Closes the dialog. - \sa open() + \sa visible, open() */ void QQuickPlatformDialog::close() { - if (!m_handle) + if (!m_handle || !m_visible) return; m_handle->hide(); + m_visible = false; + emit visibleChanged(); } /*! diff --git a/src/imports/platform/qquickplatformdialog_p.h b/src/imports/platform/qquickplatformdialog_p.h index 411e80b6..b4ba62ec 100644 --- a/src/imports/platform/qquickplatformdialog_p.h +++ b/src/imports/platform/qquickplatformdialog_p.h @@ -68,6 +68,7 @@ class QQuickPlatformDialog : public QObject, public QQmlParserStatus Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL) Q_PROPERTY(Qt::WindowFlags flags READ flags WRITE setFlags NOTIFY flagsChanged FINAL) Q_PROPERTY(Qt::WindowModality modality READ modality WRITE setModality NOTIFY modalityChanged FINAL) + Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) Q_CLASSINFO("DefaultProperty", "data") public: @@ -91,6 +92,9 @@ public: Qt::WindowModality modality() const; void setModality(Qt::WindowModality modality); + bool isVisible() const; + void setVisible(bool visible); + public Q_SLOTS: void open(); void close(); @@ -104,6 +108,7 @@ Q_SIGNALS: void titleChanged(); void flagsChanged(); void modalityChanged(); + void visibleChanged(); protected: void classBegin() override; @@ -114,6 +119,7 @@ protected: QWindow *findParentWindow() const; private: + bool m_visible; bool m_complete; QWindow *m_parentWindow; QString m_title; |