aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-08-13 19:20:17 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-08-13 20:50:54 +0000
commit887dc4744dca5c2e853fd49f600e597dc48c821d (patch)
tree0016cf7d1b5ad0e43b8413faa7c17e117761ce1b /src/imports
parent5f324ed2013e66562c35100eb05f77083529cf2b (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.qmltypes1
-rw-r--r--src/imports/platform/qquickplatformdialog.cpp35
-rw-r--r--src/imports/platform/qquickplatformdialog_p.h6
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;