aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/dialogs
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/dialogs')
-rw-r--r--src/imports/dialogs/qquickabstractmessagedialog.cpp41
-rw-r--r--src/imports/dialogs/qquickabstractmessagedialog_p.h3
-rw-r--r--src/imports/dialogs/qquickplatformmessagedialog.cpp4
3 files changed, 45 insertions, 3 deletions
diff --git a/src/imports/dialogs/qquickabstractmessagedialog.cpp b/src/imports/dialogs/qquickabstractmessagedialog.cpp
index cfcf056e6c..a44464962a 100644
--- a/src/imports/dialogs/qquickabstractmessagedialog.cpp
+++ b/src/imports/dialogs/qquickabstractmessagedialog.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include "qquickabstractmessagedialog_p.h"
+#include <QtGui/qpa/qplatformdialoghelper.h>
QT_BEGIN_NAMESPACE
@@ -133,10 +134,46 @@ void QQuickAbstractMessageDialog::setStandardButtons(StandardButtons buttons)
}
}
-void QQuickAbstractMessageDialog::click(QQuickAbstractMessageDialog::StandardButton button)
+void QQuickAbstractMessageDialog::click(QMessageDialogOptions::StandardButton button, QMessageDialogOptions::ButtonRole role)
{
- m_clickedButton = button;
+ setVisible(false);
+ m_clickedButton = static_cast<StandardButton>(button);
emit buttonClicked();
+ switch (role) {
+ case QMessageDialogOptions::AcceptRole:
+ emit accept();
+ break;
+ case QMessageDialogOptions::RejectRole:
+ emit reject();
+ break;
+ case QMessageDialogOptions::DestructiveRole:
+ emit discard();
+ break;
+ case QMessageDialogOptions::HelpRole:
+ emit help();
+ break;
+ case QMessageDialogOptions::YesRole:
+ emit yes();
+ break;
+ case QMessageDialogOptions::NoRole:
+ emit no();
+ break;
+ case QMessageDialogOptions::ApplyRole:
+ emit apply();
+ break;
+ case QMessageDialogOptions::ResetRole:
+ emit reset();
+ break;
+ default:
+ qWarning("unhandled MessageDialog button %d with role %d", button, role);
+ }
+}
+
+void QQuickAbstractMessageDialog::click(QQuickAbstractMessageDialog::StandardButton button)
+{
+ click(static_cast<QMessageDialogOptions::StandardButton>(button),
+ static_cast<QMessageDialogOptions::ButtonRole>(
+ QMessageDialogOptions::buttonRole(static_cast<QMessageDialogOptions::StandardButton>(button))));
}
QT_END_NAMESPACE
diff --git a/src/imports/dialogs/qquickabstractmessagedialog_p.h b/src/imports/dialogs/qquickabstractmessagedialog_p.h
index 3f1b842a96..f2427bb2e0 100644
--- a/src/imports/dialogs/qquickabstractmessagedialog_p.h
+++ b/src/imports/dialogs/qquickabstractmessagedialog_p.h
@@ -133,7 +133,8 @@ public Q_SLOTS:
void setDetailedText(const QString &arg);
void setIcon(Icon icon);
void setStandardButtons(StandardButtons buttons);
- void click(StandardButton button);
+ void click(QMessageDialogOptions::StandardButton button, QMessageDialogOptions::ButtonRole);
+ void click(QQuickAbstractMessageDialog::StandardButton button);
Q_SIGNALS:
void textChanged();
diff --git a/src/imports/dialogs/qquickplatformmessagedialog.cpp b/src/imports/dialogs/qquickplatformmessagedialog.cpp
index 6ee8f10bd9..00c750a66d 100644
--- a/src/imports/dialogs/qquickplatformmessagedialog.cpp
+++ b/src/imports/dialogs/qquickplatformmessagedialog.cpp
@@ -153,8 +153,12 @@ QPlatformMessageDialogHelper *QQuickPlatformMessageDialog::helper()
->createPlatformDialogHelper(QPlatformTheme::MessageDialog));
if (!m_dlgHelper)
return m_dlgHelper;
+ // accept() shouldn't be emitted. reject() happens only if the dialog is
+ // dismissed by closing the window rather than by one of its button widgets.
connect(m_dlgHelper, SIGNAL(accept()), this, SLOT(accept()));
connect(m_dlgHelper, SIGNAL(reject()), this, SLOT(reject()));
+ connect(m_dlgHelper, SIGNAL(clicked(QMessageDialogOptions::StandardButton, QMessageDialogOptions::ButtonRole)),
+ this, SLOT(click(QMessageDialogOptions::StandardButton, QMessageDialogOptions::ButtonRole)));
}
return m_dlgHelper;