linphone-desktop/Linphone/view/Item/ZrtpTokenAuthenticationDialog.qml
Julien Wadel b834b7c669 Mosaic
2024-04-22 18:16:32 +02:00

157 lines
4.2 KiB
QML

import QtQuick
import QtQuick.Layouts as Layout
import QtQuick.Effects
import Linphone
import UtilsCpp 1.0
// =============================================================================
Dialog {
id: mainItem
property var call
width: 436 * DefaultStyle.dp
height: 549 * DefaultStyle.dp
rightPadding: 15 * DefaultStyle.dp
leftPadding: 15 * DefaultStyle.dp
topPadding: 40 * DefaultStyle.dp
bottomPadding: 40 * DefaultStyle.dp
onCallChanged: if(!call) close()
Connections {
enabled: call != undefined && call != null
target: call && call.core
onStatusChanged: if (status === CallModel.CallStatusEnded) close()
}
buttons: Layout.ColumnLayout {
spacing: 15 * DefaultStyle.dp
Button {
Layout.Layout.alignment: Qt.AlignHCenter
background: Item{}
contentItem: Text {
text: qsTr("Skip")
font {
pixelSize: 13 * DefaultStyle.dp
weight: 600 * DefaultStyle.dp
underline: true
}
}
onClicked: {
if(mainItem.call) mainItem.call.core.lVerifyAuthenticationToken(false)
mainItem.close()
}
}
Button {
text: qsTr("Letters doesn't match")
color: DefaultStyle.danger_500main
inversedColors: true
Layout.Layout.alignment: Qt.AlignHCenter
width: 330 * DefaultStyle.dp
onClicked: {
if(mainItem.call) mainItem.call.core.lVerifyAuthenticationToken(false)
mainItem.close()
}
}
}
content: Layout.ColumnLayout {
spacing: 32 * DefaultStyle.dp
Layout.Layout.alignment: Qt.AlignHCenter
Layout.ColumnLayout {
spacing: 10 * DefaultStyle.dp
Text {
Layout.Layout.preferredWidth: 330 * DefaultStyle.dp
Layout.Layout.alignment: Qt.AlignHCenter
text: qsTr("Vérifier l'appareil")
horizontalAlignment: Text.AlignLeft
font {
pixelSize: 16 * DefaultStyle.dp
weight: 800 * DefaultStyle.dp
}
}
Text {
Layout.Layout.preferredWidth: 330 * DefaultStyle.dp
Layout.Layout.alignment: Qt.AlignHCenter
horizontalAlignment: Text.AlignLeft
//: 'To raise the security level, you can check the following codes with your correspondent.' : Explanation to do a security check.
text: qsTr("Dites %1 et cliquez sur les lettres votre interlocuteur vous dit :".arg(mainItem.call && mainItem.call.core.localSas || ""))
wrapMode: Text.WordWrap
font.pixelSize: 14 * DefaultStyle.dp
}
}
Layout.GridLayout {
id: securityGridView
// Layout.Layout.fillWidth: true
Layout.Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
rows: 2
columns: 2
rowSpacing: 32 * DefaultStyle.dp
columnSpacing: 32 * DefaultStyle.dp
property var correctIndex
property var modelList
Connections {
enabled: mainItem.call
target: mainItem.call ? mainItem.call.core : null
// this connection is needed to get the remoteSas when available
// due to the asynchronous connection between core and ui
onRemoteSasChanged: {
securityGridView.correctIndex = UtilsCpp.getRandomIndex(4)
securityGridView.modelList = UtilsCpp.generateSecurityLettersArray(4, securityGridView.correctIndex, mainItem.call.core.remoteSas)
}
}
Repeater {
model: securityGridView.modelList
Item {
// implicitWidth: 70 * DefaultStyle.dp
// implicitHeight: 70 * DefaultStyle.dp
width: 70 * DefaultStyle.dp
height: 70 * DefaultStyle.dp
Rectangle {
id: code
anchors.fill: parent
color: DefaultStyle.grey_0
radius: 71 * DefaultStyle.dp
Text {
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
text: modelData
font {
pixelSize: 32 * DefaultStyle.dp
weight: 400 * DefaultStyle.dp
}
}
MouseArea {
anchors.fill: parent
onClicked: {
console.log("correct", index == securityGridView.correctIndex, index)
if (index == securityGridView.correctIndex) {
if(mainItem.call) mainItem.call.core.lVerifyAuthenticationToken(true)
} else {
if(mainItem.call) mainItem.call.core.lVerifyAuthenticationToken(false)
mainItem.close()
}
}
}
}
MultiEffect {
source: code
anchors.fill: code
shadowEnabled: true
shadowOpacity: 0.1
shadowBlur: 1.0
}
}
}
}
}
}