feat: message dialogs

This commit is contained in:
Richard Ramos 2020-11-16 12:44:23 -04:00 committed by Iuri Matias
parent 0e874d8745
commit 913a7e5b5d
2 changed files with 112 additions and 0 deletions

View File

@ -25,6 +25,9 @@ Rectangle {
property Component browserDialogComponent: BrowserDialog { property Component browserDialogComponent: BrowserDialog {
onClosing: destroy() onClosing: destroy()
} }
property Component jsDialogComponent: JSDialogWindow {}
property bool currentTabConnected: false property bool currentTabConnected: false
ListModel { ListModel {
@ -491,6 +494,12 @@ Rectangle {
sslDialog.enqueue(error); sslDialog.enqueue(error);
} }
onJavaScriptDialogRequested: function(request) {
request.accepted = true;
var dialog = jsDialogComponent.createObject(browserWindow, {"request": request});
dialog.open();
}
onNewViewRequested: function(request) { onNewViewRequested: function(request) {
if (!request.userInitiated) { if (!request.userInitiated) {
print("Warning: Blocked a popup window."); print("Warning: Blocked a popup window.");

View File

@ -0,0 +1,103 @@
import QtQuick 2.13
import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import QtWebEngine 1.10
import "../../../shared"
import "../../../imports"
ModalPopup {
id: root
property QtObject request
onClosed: {
request.dialogReject();
root.destroy();
}
Component.onCompleted: {
switch (request.type) {
case JavaScriptDialogRequest.DialogTypeAlert:
cancelButton.visible = false;
title.text = qsTr("Alert");
message.text = request.message;
prompt.text = "";
prompt.visible = false;
break;
case JavaScriptDialogRequest.DialogTypeConfirm:
title.text = qsTr("Confirm");
message.text = request.message;
prompt.text = "";
prompt.visible = false;
break;
case JavaScriptDialogRequest.DialogTypePrompt:
title.text = qsTr("Prompt");
message.text = request.message;
prompt.text = request.defaultText;
prompt.visible = true;
break;
}
}
Rectangle {
id: rectangle
height: 30
anchors.rightMargin: 0
anchors.leftMargin: 0
anchors.right: parent.right
anchors.left: parent.left
Text {
id: title
x: 54
y: 5
color: "#ffffff"
text: qsTr("Title")
font.pointSize: 12
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
}
}
ScrollView {
width: parent.width
height: 100
TextArea {
id: message
wrapMode: TextEdit.Wrap
readOnly: true
text: ""
}
}
TextField {
id: prompt
width: 300
height: 22
Layout.fillWidth: true
font.pointSize: 12
}
Button {
id: okButton
width: 90
height: 30
text: qsTr("OK")
onClicked: {
request.dialogAccept(prompt.text);
close();
}
}
Button {
id: cancelButton
width: 90
height: 30
anchors.top: okButton.bottom
text: qsTr("Cancel")
onClicked: {
request.dialogReject();
close();
}
}
}