summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/api/qwebenginepage.cpp
diff options
context:
space:
mode:
authorPierre Rossi <pierre.rossi@digia.com>2014-01-13 15:01:54 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-15 21:35:29 +0100
commit6f5850dd4f6c4cc253c48f41f59130aee5415591 (patch)
tree9f92f25e0e297cdc51e5dd8aed3b942413e6c917 /src/webenginewidgets/api/qwebenginepage.cpp
parente46886912858e9b233fb099bb211e288dd7d57b5 (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.cpp28
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 {