diff options
author | Pierre Rossi <pierre.rossi@digia.com> | 2014-01-13 15:01:54 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-15 21:35:29 +0100 |
commit | 6f5850dd4f6c4cc253c48f41f59130aee5415591 (patch) | |
tree | 9f92f25e0e297cdc51e5dd8aed3b942413e6c917 /src/webenginewidgets/api/qwebenginepage.cpp | |
parent | e46886912858e9b233fb099bb211e288dd7d57b5 (diff) |
JS dialogs in QtQuick
Refactor JavaScriptDialogManagerQt to support a Qt Quick dialogs
friendly approach.
Qt Quick dialogs are still missing a prompt, so we use a "handmade"
one. This should be solved before 5.3 though.
Change-Id: I965df66837b2e81d6e4618a8da1167a37661c26e
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'src/webenginewidgets/api/qwebenginepage.cpp')
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 3f4287a02..0178c1118 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -23,6 +23,7 @@ #include "qwebenginepage.h" #include "qwebenginepage_p.h" +#include "javascript_dialog_controller.h" #include "qwebenginehistory.h" #include "qwebenginehistory_p.h" #include "qwebengineview.h" @@ -326,20 +327,31 @@ bool QWebEnginePagePrivate::contextMenuRequested(const WebEngineContextMenuData return true; } -bool QWebEnginePagePrivate::javascriptDialog(JavascriptDialogType type, const QString &message, const QString &defaultValue, QString *result) +void QWebEnginePagePrivate::javascriptDialog(QSharedPointer<JavaScriptDialogController> controller) { Q_Q(QWebEnginePage); - switch (type) { + bool accepted = false; + QString promptResult; + switch (controller->type()) { case AlertDialog: - q->javaScriptAlert(0, message); - return true; + q->javaScriptAlert(0, controller->message()); + accepted = true; + break; case ConfirmDialog: - return q->javaScriptConfirm(0, message); + accepted = q->javaScriptConfirm(0, controller->message()); + break; case PromptDialog: - return q->javaScriptPrompt(0, message, defaultValue, result); + accepted = q->javaScriptPrompt(0, controller->message(), controller->defaultPrompt(), &promptResult); + if (accepted) + controller->textProvided(promptResult); + break; + default: + Q_UNREACHABLE(); } - Q_UNREACHABLE(); - return false; + if (accepted) + controller->accept(); + else + controller->reject(); } namespace { |