2023-02-22 01:48:49 +03:00
// SPDX-FileCopyrightText: Nheko Contributors
2021-03-07 07:57:56 +03:00
//
2021-03-05 02:35:15 +03:00
// SPDX-License-Identifier: GPL-3.0-or-later
2021-01-12 17:03:39 +03:00
import QtQuick 2.3
2021-01-12 17:04:31 +03:00
import QtQuick . Controls 2.3
2020-09-14 14:57:49 +03:00
import QtQuick . Layouts 1.10
import im . nheko 1.0
2022-07-03 04:39:01 +03:00
ColumnLayout {
2020-10-08 22:11:21 +03:00
property string title: qsTr ( "Verification Code" )
2022-07-03 04:39:01 +03:00
spacing: 16
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
Label {
2024-04-19 23:54:05 +03:00
Layout.preferredWidth: scroll . availableWidth
2022-07-03 04:39:01 +03:00
Layout.fillWidth: true
wrapMode: Text . Wrap
text: qsTr ( "Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification!" )
2023-06-02 02:29:05 +03:00
color: palette . text
2022-07-03 04:39:01 +03:00
verticalAlignment: Text . AlignVCenter
}
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
Item { Layout.fillHeight: true ; }
RowLayout {
id: emojis
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
property var mapping: [ {
"number" : 0 ,
"emoji" : "🐶" ,
"description" : "Dog" ,
"unicode" : "U+1F436"
} , {
"number" : 1 ,
"emoji" : "🐱" ,
"description" : "Cat" ,
"unicode" : "U+1F431"
} , {
"number" : 2 ,
"emoji" : "🦁" ,
"description" : "Lion" ,
"unicode" : "U+1F981"
} , {
"number" : 3 ,
"emoji" : "🐎" ,
"description" : "Horse" ,
"unicode" : "U+1F40E"
} , {
"number" : 4 ,
"emoji" : "🦄" ,
"description" : "Unicorn" ,
"unicode" : "U+1F984"
} , {
"number" : 5 ,
"emoji" : "🐷" ,
"description" : "Pig" ,
"unicode" : "U+1F437"
} , {
"number" : 6 ,
"emoji" : "🐘" ,
"description" : "Elephant" ,
"unicode" : "U+1F418"
} , {
"number" : 7 ,
"emoji" : "🐰" ,
"description" : "Rabbit" ,
"unicode" : "U+1F430"
} , {
"number" : 8 ,
"emoji" : "🐼" ,
"description" : "Panda" ,
"unicode" : "U+1F43C"
} , {
"number" : 9 ,
"emoji" : "🐓" ,
"description" : "Rooster" ,
"unicode" : "U+1F413"
} , {
"number" : 10 ,
"emoji" : "🐧" ,
"description" : "Penguin" ,
"unicode" : "U+1F427"
} , {
"number" : 11 ,
"emoji" : "🐢" ,
"description" : "Turtle" ,
"unicode" : "U+1F422"
} , {
"number" : 12 ,
"emoji" : "🐟" ,
"description" : "Fish" ,
"unicode" : "U+1F41F"
} , {
"number" : 13 ,
"emoji" : "🐙" ,
"description" : "Octopus" ,
"unicode" : "U+1F419"
} , {
"number" : 14 ,
"emoji" : "🦋" ,
"description" : "Butterfly" ,
"unicode" : "U+1F98B"
} , {
"number" : 15 ,
"emoji" : "🌷" ,
"description" : "Flower" ,
"unicode" : "U+1F337"
} , {
"number" : 16 ,
"emoji" : "🌳" ,
"description" : "Tree" ,
"unicode" : "U+1F333"
} , {
"number" : 17 ,
"emoji" : "🌵" ,
"description" : "Cactus" ,
"unicode" : "U+1F335"
} , {
"number" : 18 ,
"emoji" : "🍄" ,
"description" : "Mushroom" ,
"unicode" : "U+1F344"
} , {
"number" : 19 ,
"emoji" : "🌏" ,
"description" : "Globe" ,
"unicode" : "U+1F30F"
} , {
"number" : 20 ,
"emoji" : "🌙" ,
"description" : "Moon" ,
"unicode" : "U+1F319"
} , {
"number" : 21 ,
"emoji" : "☁️" ,
"description" : "Cloud" ,
"unicode" : "U+2601U+FE0F"
} , {
"number" : 22 ,
"emoji" : "🔥" ,
"description" : "Fire" ,
"unicode" : "U+1F525"
} , {
"number" : 23 ,
"emoji" : "🍌" ,
"description" : "Banana" ,
"unicode" : "U+1F34C"
} , {
"number" : 24 ,
"emoji" : "🍎" ,
"description" : "Apple" ,
"unicode" : "U+1F34E"
} , {
"number" : 25 ,
"emoji" : "🍓" ,
"description" : "Strawberry" ,
"unicode" : "U+1F353"
} , {
"number" : 26 ,
"emoji" : "🌽" ,
"description" : "Corn" ,
"unicode" : "U+1F33D"
} , {
"number" : 27 ,
"emoji" : "🍕" ,
"description" : "Pizza" ,
"unicode" : "U+1F355"
} , {
"number" : 28 ,
"emoji" : "🎂" ,
"description" : "Cake" ,
"unicode" : "U+1F382"
} , {
"number" : 29 ,
"emoji" : "❤️" ,
"description" : "Heart" ,
"unicode" : "U+2764U+FE0F"
} , {
"number" : 30 ,
"emoji" : "😀" ,
"description" : "Smiley" ,
"unicode" : "U+1F600"
} , {
"number" : 31 ,
"emoji" : "🤖" ,
"description" : "Robot" ,
"unicode" : "U+1F916"
} , {
"number" : 32 ,
"emoji" : "🎩" ,
"description" : "Hat" ,
"unicode" : "U+1F3A9"
} , {
"number" : 33 ,
"emoji" : "👓" ,
"description" : "Glasses" ,
"unicode" : "U+1F453"
} , {
"number" : 34 ,
"emoji" : "🔧" ,
"description" : "Spanner" ,
"unicode" : "U+1F527"
} , {
"number" : 35 ,
"emoji" : "🎅" ,
"description" : "Santa" ,
"unicode" : "U+1F385"
} , {
"number" : 36 ,
"emoji" : "👍" ,
"description" : "Thumbs Up" ,
"unicode" : "U+1F44D"
} , {
"number" : 37 ,
"emoji" : "☂️" ,
"description" : "Umbrella" ,
"unicode" : "U+2602U+FE0F"
} , {
"number" : 38 ,
"emoji" : "⌛" ,
"description" : "Hourglass" ,
"unicode" : "U+231B"
} , {
"number" : 39 ,
"emoji" : "⏰" ,
"description" : "Clock" ,
"unicode" : "U+23F0"
} , {
"number" : 40 ,
"emoji" : "🎁" ,
"description" : "Gift" ,
"unicode" : "U+1F381"
} , {
"number" : 41 ,
"emoji" : "💡" ,
"description" : "Light Bulb" ,
"unicode" : "U+1F4A1"
} , {
"number" : 42 ,
"emoji" : "📕" ,
"description" : "Book" ,
"unicode" : "U+1F4D5"
} , {
"number" : 43 ,
"emoji" : "✏️" ,
"description" : "Pencil" ,
"unicode" : "U+270FU+FE0F"
} , {
"number" : 44 ,
"emoji" : "📎" ,
"description" : "Paperclip" ,
"unicode" : "U+1F4CE"
} , {
"number" : 45 ,
"emoji" : "✂️" ,
"description" : "Scissors" ,
"unicode" : "U+2702U+FE0F"
} , {
"number" : 46 ,
"emoji" : "🔒" ,
"description" : "Lock" ,
"unicode" : "U+1F512"
} , {
"number" : 47 ,
"emoji" : "🔑" ,
"description" : "Key" ,
"unicode" : "U+1F511"
} , {
"number" : 48 ,
"emoji" : "🔨" ,
"description" : "Hammer" ,
"unicode" : "U+1F528"
} , {
"number" : 49 ,
"emoji" : "☎️" ,
"description" : "Telephone" ,
"unicode" : "U+260EU+FE0F"
} , {
"number" : 50 ,
"emoji" : "🏁" ,
"description" : "Flag" ,
"unicode" : "U+1F3C1"
} , {
"number" : 51 ,
"emoji" : "🚂" ,
"description" : "Train" ,
"unicode" : "U+1F682"
} , {
"number" : 52 ,
"emoji" : "🚲" ,
"description" : "Bicycle" ,
"unicode" : "U+1F6B2"
} , {
"number" : 53 ,
"emoji" : "✈️" ,
"description" : "Aeroplane" ,
"unicode" : "U+2708U+FE0F"
} , {
"number" : 54 ,
"emoji" : "🚀" ,
"description" : "Rocket" ,
"unicode" : "U+1F680"
} , {
"number" : 55 ,
"emoji" : "🏆" ,
"description" : "Trophy" ,
"unicode" : "U+1F3C6"
} , {
"number" : 56 ,
"emoji" : "⚽" ,
"description" : "Ball" ,
"unicode" : "U+26BD"
} , {
"number" : 57 ,
"emoji" : "🎸" ,
"description" : "Guitar" ,
"unicode" : "U+1F3B8"
} , {
"number" : 58 ,
"emoji" : "🎺" ,
"description" : "Trumpet" ,
"unicode" : "U+1F3BA"
} , {
"number" : 59 ,
"emoji" : "🔔" ,
"description" : "Bell" ,
"unicode" : "U+1F514"
} , {
"number" : 60 ,
"emoji" : "⚓" ,
"description" : "Anchor" ,
"unicode" : "U+2693"
} , {
"number" : 61 ,
"emoji" : "🎧" ,
"description" : "Headphones" ,
"unicode" : "U+1F3A7"
} , {
"number" : 62 ,
"emoji" : "📁" ,
"description" : "Folder" ,
"unicode" : "U+1F4C1"
} , {
"number" : 63 ,
"emoji" : "📌" ,
"description" : "Pin" ,
"unicode" : "U+1F4CC"
} ]
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
Layout.alignment: Qt . AlignHCenter
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
Repeater {
id: repeater
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
model: 7
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
delegate: Rectangle {
color: "transparent"
implicitHeight: Qt . application . font . pixelSize * 8
implicitWidth: col . width
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
ColumnLayout {
id: col
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
property var emoji: emojis . mapping [ flow . sasList [ index ] ]
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
Layout.fillWidth: true
anchors.bottom: parent . bottom
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
Label {
//height: font.pixelSize * 2
Layout.alignment: Qt . AlignHCenter
text: col . emoji . emoji
font.pixelSize: Qt . application . font . pixelSize * 2
font.family: Settings . emojiFont
2023-06-02 02:29:05 +03:00
color: palette . text
2022-07-03 04:39:01 +03:00
}
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
Label {
Layout.alignment: Qt . AlignHCenter | Qt . AlignBottom
text: col . emoji . description
2023-06-02 02:29:05 +03:00
color: palette . text
2020-10-08 22:11:21 +03:00
}
}
}
}
2022-07-03 04:39:01 +03:00
}
Item { Layout.fillHeight: true ; }
2020-10-08 22:11:21 +03:00
2022-07-03 04:46:47 +03:00
Label {
Layout.preferredWidth: 400
Layout.fillWidth: true
wrapMode: Text . Wrap
text: qsTr ( "The displayed emoji might look different in different clients if a different font is used. Similarly they might be translated into different languages. Nonetheless they should depict one of 64 different objects or animals. For example a lion and a cat are different, but a cat is the same even if one client just shows a cat face, while another client shows a full cat body." )
2023-06-02 02:29:05 +03:00
color: palette . text
2022-07-03 04:46:47 +03:00
verticalAlignment: Text . AlignVCenter
}
Item { Layout.fillHeight: true ; }
2022-07-03 04:39:01 +03:00
RowLayout {
Button {
Layout.alignment: Qt . AlignLeft
text: qsTr ( "They do not match!" )
onClicked: {
flow . cancel ( ) ;
dialog . close ( ) ;
2020-10-08 22:11:21 +03:00
}
2022-07-03 04:39:01 +03:00
}
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
Item {
Layout.fillWidth: true
}
2020-10-08 22:11:21 +03:00
2022-07-03 04:39:01 +03:00
Button {
Layout.alignment: Qt . AlignRight
text: qsTr ( "They match!" )
onClicked: flow . next ( )
2020-10-08 22:11:21 +03:00
}
}
2020-09-14 14:57:49 +03:00
}