matrixion/qml/device-verification/DeviceVerification.qml

124 lines
2.8 KiB
QML
Raw Permalink Normal View History

2021-03-05 02:35:15 +03:00
// SPDX-FileCopyrightText: 2021 Nheko Contributors
// SPDX-FileCopyrightText: 2022 Nheko Contributors
2021-03-05 02:35:15 +03:00
// SPDX-License-Identifier: GPL-3.0-or-later
import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Window 2.13
import im.nheko
ApplicationWindow {
2020-10-08 22:11:21 +03:00
id: dialog
property var flow
2022-04-11 05:18:16 +03:00
color: timelineRoot.palette.window
2022-04-16 03:13:01 +03:00
flags: Qt.Dialog | Qt.WindowCloseButtonHint | Qt.WindowTitleHint
2022-01-12 08:44:51 +03:00
minimumHeight: stack.implicitHeight
2022-04-16 03:13:01 +03:00
modality: Qt.NonModal
palette: timelineRoot.palette
title: stack.currentItem.title_
2020-10-08 22:11:21 +03:00
width: stack.implicitWidth
2022-04-16 03:13:01 +03:00
onClosing: VerificationManager.removeVerificationFlow(flow)
2020-10-08 22:11:21 +03:00
StackView {
id: stack
2022-01-12 08:44:51 +03:00
anchors.fill: parent
2020-10-08 22:11:21 +03:00
implicitHeight: currentItem.implicitHeight
2022-04-16 03:13:01 +03:00
implicitWidth: currentItem.implicitWidth
initialItem: newVerificationRequest
2020-10-08 22:11:21 +03:00
}
Component {
id: newVerificationRequest
NewVerificationRequest {
}
}
Component {
id: waiting
Waiting {
}
}
Component {
id: success
Success {
}
}
Component {
id: failed
Failed {
}
}
Component {
id: digitVerification
DigitVerification {
}
}
Component {
id: emojiVerification
EmojiVerification {
}
}
Item {
state: flow.state
2022-04-16 03:13:01 +03:00
2020-10-08 22:11:21 +03:00
states: [
State {
name: "PromptStartVerification"
StateChangeScript {
script: stack.replace(newVerificationRequest)
}
},
State {
name: "CompareEmoji"
StateChangeScript {
script: stack.replace(emojiVerification)
}
},
State {
name: "CompareNumber"
StateChangeScript {
script: stack.replace(digitVerification)
}
},
State {
name: "WaitingForKeys"
StateChangeScript {
script: stack.replace(waiting)
}
},
State {
name: "WaitingForOtherToAccept"
StateChangeScript {
script: stack.replace(waiting)
}
},
State {
name: "WaitingForMac"
StateChangeScript {
script: stack.replace(waiting)
}
},
State {
name: "Success"
StateChangeScript {
script: stack.replace(success)
}
},
State {
name: "Failed"
StateChangeScript {
script: stack.replace(failed)
}
}
]
}
}