diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-08-13 20:29:41 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-08-13 20:53:55 +0000 |
commit | 7121e119167165658fc1b92e65a9be4ddedc5683 (patch) | |
tree | f27e8f5c031f8a86154f6affbc4cda53c5ce34d2 /src | |
parent | ef102fcb366e25fb59d943c642568bb37990b629 (diff) |
Platform: add MessageDialog.clickedButton
To be more in line with QtQuick.Dialogs 1.x.
Change-Id: Ic512222a88a376ebc142563dceccbbb1c3b98a75
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/platform/qquickplatformmessagedialog.cpp | 25 | ||||
-rw-r--r-- | src/imports/platform/qquickplatformmessagedialog_p.h | 5 |
2 files changed, 27 insertions, 3 deletions
diff --git a/src/imports/platform/qquickplatformmessagedialog.cpp b/src/imports/platform/qquickplatformmessagedialog.cpp index d7e8881c..3e27e083 100644 --- a/src/imports/platform/qquickplatformmessagedialog.cpp +++ b/src/imports/platform/qquickplatformmessagedialog.cpp @@ -119,7 +119,7 @@ QT_BEGIN_NAMESPACE This signal is emitted when a dialog \a button is clicked. - \sa buttons + \sa buttons, clickedButton */ /*! @@ -233,7 +233,9 @@ QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(qtLabsPlatformDialogs) QQuickPlatformMessageDialog::QQuickPlatformMessageDialog(QObject *parent) - : QQuickPlatformDialog(parent), m_options(QMessageDialogOptions::create()) + : QQuickPlatformDialog(parent), + m_options(QMessageDialogOptions::create()), + m_clickedButton(QPlatformDialogHelper::NoButton) { QPlatformDialogHelper *dialog = QGuiApplicationPrivate::platformTheme()->createPlatformDialogHelper(QPlatformTheme::MessageDialog); #ifdef QT_WIDGETS_LIB @@ -341,7 +343,7 @@ void QQuickPlatformMessageDialog::setDetailedText(const QString &text) \value MessageDialog.Ignore An "Ignore" button defined with the \c AcceptRole. \value MessageDialog.NoButton The dialog has no buttons. - \sa clicked() + \sa clicked(), clickedButton */ QPlatformDialogHelper::StandardButtons QQuickPlatformMessageDialog::buttons() const { @@ -357,6 +359,18 @@ void QQuickPlatformMessageDialog::setButtons(QPlatformDialogHelper::StandardButt emit buttonsChanged(); } +/*! + \qmlproperty enumeration Qt.labs.platform::MessageDialog::clickedButton + + This property holds the button that was clicked. The default value is \c MessageDialog.NoButton. + + \sa buttons +*/ +QPlatformDialogHelper::StandardButton QQuickPlatformMessageDialog::clickedButton() const +{ + return m_clickedButton; +} + void QQuickPlatformMessageDialog::applyOptions() { m_options->setWindowTitle(title()); @@ -364,6 +378,9 @@ void QQuickPlatformMessageDialog::applyOptions() void QQuickPlatformMessageDialog::handleClick(QPlatformDialogHelper::StandardButton button) { + bool changed = m_clickedButton != button; + m_clickedButton = button; + QPlatformDialogHelper::ButtonRole role = QPlatformDialogHelper::buttonRole(button); if (role == QPlatformDialogHelper::AcceptRole) accept(); @@ -373,6 +390,8 @@ void QQuickPlatformMessageDialog::handleClick(QPlatformDialogHelper::StandardBut close(); emit clicked(button); + if (changed) + emit clickedButtonChanged(); switch (button) { case QPlatformDialogHelper::Ok: emit okClicked(); break; diff --git a/src/imports/platform/qquickplatformmessagedialog_p.h b/src/imports/platform/qquickplatformmessagedialog_p.h index 2a8f76c1..bd44082e 100644 --- a/src/imports/platform/qquickplatformmessagedialog_p.h +++ b/src/imports/platform/qquickplatformmessagedialog_p.h @@ -60,6 +60,7 @@ class QQuickPlatformMessageDialog : public QQuickPlatformDialog Q_PROPERTY(QString informativeText READ informativeText WRITE setInformativeText NOTIFY informativeTextChanged FINAL) Q_PROPERTY(QString detailedText READ detailedText WRITE setDetailedText NOTIFY detailedTextChanged FINAL) Q_PROPERTY(QPlatformDialogHelper::StandardButtons buttons READ buttons WRITE setButtons NOTIFY buttonsChanged FINAL) + Q_PROPERTY(QPlatformDialogHelper::StandardButton clickedButton READ clickedButton NOTIFY clickedButtonChanged FINAL) Q_FLAGS(QPlatformDialogHelper::StandardButtons) public: @@ -77,11 +78,14 @@ public: QPlatformDialogHelper::StandardButtons buttons() const; void setButtons(QPlatformDialogHelper::StandardButtons buttons); + QPlatformDialogHelper::StandardButton clickedButton() const; + Q_SIGNALS: void textChanged(); void informativeTextChanged(); void detailedTextChanged(); void buttonsChanged(); + void clickedButtonChanged(); void clicked(QPlatformDialogHelper::StandardButton button); void okClicked(); @@ -111,6 +115,7 @@ private Q_SLOTS: private: QSharedPointer<QMessageDialogOptions> m_options; + QPlatformDialogHelper::StandardButton m_clickedButton; }; QT_END_NAMESPACE |