diff options
Diffstat (limited to 'src/imports/dialogs')
-rw-r--r-- | src/imports/dialogs/qquickabstractmessagedialog.cpp | 41 | ||||
-rw-r--r-- | src/imports/dialogs/qquickabstractmessagedialog_p.h | 3 | ||||
-rw-r--r-- | src/imports/dialogs/qquickplatformmessagedialog.cpp | 4 |
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; |