aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-08-13 20:29:41 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-08-13 20:53:55 +0000
commit7121e119167165658fc1b92e65a9be4ddedc5683 (patch)
treef27e8f5c031f8a86154f6affbc4cda53c5ce34d2
parentef102fcb366e25fb59d943c642568bb37990b629 (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>
-rw-r--r--src/imports/platform/qquickplatformmessagedialog.cpp25
-rw-r--r--src/imports/platform/qquickplatformmessagedialog_p.h5
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