1// SPDX-FileCopyrightText: 2021 Nheko Contributors
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5import QtQuick 2.3
6import QtQuick.Controls 2.3
7import QtQuick.Layouts 1.10
8import im.nheko 1.0
9
10Pane {
11    property string title: qsTr("Verification Code")
12
13    ColumnLayout {
14        spacing: 16
15
16        Label {
17            Layout.maximumWidth: 400
18            Layout.fillHeight: true
19            Layout.fillWidth: true
20            wrapMode: Text.Wrap
21            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!")
22            color: Nheko.colors.text
23            verticalAlignment: Text.AlignVCenter
24        }
25
26        RowLayout {
27            id: emojis
28
29            property var mapping: [{
30                "number": 0,
31                "emoji": "��",
32                "description": "Dog",
33                "unicode": "U+1F436"
34            }, {
35                "number": 1,
36                "emoji": "��",
37                "description": "Cat",
38                "unicode": "U+1F431"
39            }, {
40                "number": 2,
41                "emoji": "��",
42                "description": "Lion",
43                "unicode": "U+1F981"
44            }, {
45                "number": 3,
46                "emoji": "��",
47                "description": "Horse",
48                "unicode": "U+1F40E"
49            }, {
50                "number": 4,
51                "emoji": "��",
52                "description": "Unicorn",
53                "unicode": "U+1F984"
54            }, {
55                "number": 5,
56                "emoji": "��",
57                "description": "Pig",
58                "unicode": "U+1F437"
59            }, {
60                "number": 6,
61                "emoji": "��",
62                "description": "Elephant",
63                "unicode": "U+1F418"
64            }, {
65                "number": 7,
66                "emoji": "��",
67                "description": "Rabbit",
68                "unicode": "U+1F430"
69            }, {
70                "number": 8,
71                "emoji": "��",
72                "description": "Panda",
73                "unicode": "U+1F43C"
74            }, {
75                "number": 9,
76                "emoji": "��",
77                "description": "Rooster",
78                "unicode": "U+1F413"
79            }, {
80                "number": 10,
81                "emoji": "��",
82                "description": "Penguin",
83                "unicode": "U+1F427"
84            }, {
85                "number": 11,
86                "emoji": "��",
87                "description": "Turtle",
88                "unicode": "U+1F422"
89            }, {
90                "number": 12,
91                "emoji": "��",
92                "description": "Fish",
93                "unicode": "U+1F41F"
94            }, {
95                "number": 13,
96                "emoji": "��",
97                "description": "Octopus",
98                "unicode": "U+1F419"
99            }, {
100                "number": 14,
101                "emoji": "��",
102                "description": "Butterfly",
103                "unicode": "U+1F98B"
104            }, {
105                "number": 15,
106                "emoji": "��",
107                "description": "Flower",
108                "unicode": "U+1F337"
109            }, {
110                "number": 16,
111                "emoji": "��",
112                "description": "Tree",
113                "unicode": "U+1F333"
114            }, {
115                "number": 17,
116                "emoji": "��",
117                "description": "Cactus",
118                "unicode": "U+1F335"
119            }, {
120                "number": 18,
121                "emoji": "��",
122                "description": "Mushroom",
123                "unicode": "U+1F344"
124            }, {
125                "number": 19,
126                "emoji": "��",
127                "description": "Globe",
128                "unicode": "U+1F30F"
129            }, {
130                "number": 20,
131                "emoji": "��",
132                "description": "Moon",
133                "unicode": "U+1F319"
134            }, {
135                "number": 21,
136                "emoji": "☁️",
137                "description": "Cloud",
138                "unicode": "U+2601U+FE0F"
139            }, {
140                "number": 22,
141                "emoji": "��",
142                "description": "Fire",
143                "unicode": "U+1F525"
144            }, {
145                "number": 23,
146                "emoji": "��",
147                "description": "Banana",
148                "unicode": "U+1F34C"
149            }, {
150                "number": 24,
151                "emoji": "��",
152                "description": "Apple",
153                "unicode": "U+1F34E"
154            }, {
155                "number": 25,
156                "emoji": "��",
157                "description": "Strawberry",
158                "unicode": "U+1F353"
159            }, {
160                "number": 26,
161                "emoji": "��",
162                "description": "Corn",
163                "unicode": "U+1F33D"
164            }, {
165                "number": 27,
166                "emoji": "��",
167                "description": "Pizza",
168                "unicode": "U+1F355"
169            }, {
170                "number": 28,
171                "emoji": "��",
172                "description": "Cake",
173                "unicode": "U+1F382"
174            }, {
175                "number": 29,
176                "emoji": "❤️",
177                "description": "Heart",
178                "unicode": "U+2764U+FE0F"
179            }, {
180                "number": 30,
181                "emoji": "��",
182                "description": "Smiley",
183                "unicode": "U+1F600"
184            }, {
185                "number": 31,
186                "emoji": "��",
187                "description": "Robot",
188                "unicode": "U+1F916"
189            }, {
190                "number": 32,
191                "emoji": "��",
192                "description": "Hat",
193                "unicode": "U+1F3A9"
194            }, {
195                "number": 33,
196                "emoji": "��",
197                "description": "Glasses",
198                "unicode": "U+1F453"
199            }, {
200                "number": 34,
201                "emoji": "��",
202                "description": "Spanner",
203                "unicode": "U+1F527"
204            }, {
205                "number": 35,
206                "emoji": "��",
207                "description": "Santa",
208                "unicode": "U+1F385"
209            }, {
210                "number": 36,
211                "emoji": "��",
212                "description": "Thumbs Up",
213                "unicode": "U+1F44D"
214            }, {
215                "number": 37,
216                "emoji": "☂️",
217                "description": "Umbrella",
218                "unicode": "U+2602U+FE0F"
219            }, {
220                "number": 38,
221                "emoji": "⌛",
222                "description": "Hourglass",
223                "unicode": "U+231B"
224            }, {
225                "number": 39,
226                "emoji": "⏰",
227                "description": "Clock",
228                "unicode": "U+23F0"
229            }, {
230                "number": 40,
231                "emoji": "��",
232                "description": "Gift",
233                "unicode": "U+1F381"
234            }, {
235                "number": 41,
236                "emoji": "��",
237                "description": "Light Bulb",
238                "unicode": "U+1F4A1"
239            }, {
240                "number": 42,
241                "emoji": "��",
242                "description": "Book",
243                "unicode": "U+1F4D5"
244            }, {
245                "number": 43,
246                "emoji": "✏️",
247                "description": "Pencil",
248                "unicode": "U+270FU+FE0F"
249            }, {
250                "number": 44,
251                "emoji": "��",
252                "description": "Paperclip",
253                "unicode": "U+1F4CE"
254            }, {
255                "number": 45,
256                "emoji": "✂️",
257                "description": "Scissors",
258                "unicode": "U+2702U+FE0F"
259            }, {
260                "number": 46,
261                "emoji": "��",
262                "description": "Lock",
263                "unicode": "U+1F512"
264            }, {
265                "number": 47,
266                "emoji": "��",
267                "description": "Key",
268                "unicode": "U+1F511"
269            }, {
270                "number": 48,
271                "emoji": "��",
272                "description": "Hammer",
273                "unicode": "U+1F528"
274            }, {
275                "number": 49,
276                "emoji": "☎️",
277                "description": "Telephone",
278                "unicode": "U+260EU+FE0F"
279            }, {
280                "number": 50,
281                "emoji": "��",
282                "description": "Flag",
283                "unicode": "U+1F3C1"
284            }, {
285                "number": 51,
286                "emoji": "��",
287                "description": "Train",
288                "unicode": "U+1F682"
289            }, {
290                "number": 52,
291                "emoji": "��",
292                "description": "Bicycle",
293                "unicode": "U+1F6B2"
294            }, {
295                "number": 53,
296                "emoji": "✈️",
297                "description": "Aeroplane",
298                "unicode": "U+2708U+FE0F"
299            }, {
300                "number": 54,
301                "emoji": "��",
302                "description": "Rocket",
303                "unicode": "U+1F680"
304            }, {
305                "number": 55,
306                "emoji": "��",
307                "description": "Trophy",
308                "unicode": "U+1F3C6"
309            }, {
310                "number": 56,
311                "emoji": "⚽",
312                "description": "Ball",
313                "unicode": "U+26BD"
314            }, {
315                "number": 57,
316                "emoji": "��",
317                "description": "Guitar",
318                "unicode": "U+1F3B8"
319            }, {
320                "number": 58,
321                "emoji": "��",
322                "description": "Trumpet",
323                "unicode": "U+1F3BA"
324            }, {
325                "number": 59,
326                "emoji": "��",
327                "description": "Bell",
328                "unicode": "U+1F514"
329            }, {
330                "number": 60,
331                "emoji": "⚓",
332                "description": "Anchor",
333                "unicode": "U+2693"
334            }, {
335                "number": 61,
336                "emoji": "��",
337                "description": "Headphones",
338                "unicode": "U+1F3A7"
339            }, {
340                "number": 62,
341                "emoji": "��",
342                "description": "Folder",
343                "unicode": "U+1F4C1"
344            }, {
345                "number": 63,
346                "emoji": "��",
347                "description": "Pin",
348                "unicode": "U+1F4CC"
349            }]
350
351            Layout.alignment: Qt.AlignHCenter
352
353            Repeater {
354                id: repeater
355
356                model: 7
357
358                delegate: Rectangle {
359                    color: "transparent"
360                    implicitHeight: Qt.application.font.pixelSize * 8
361                    implicitWidth: col.width
362
363                    ColumnLayout {
364                        id: col
365
366                        property var emoji: emojis.mapping[flow.sasList[index]]
367
368                        Layout.fillWidth: true
369                        anchors.bottom: parent.bottom
370
371                        Label {
372                            //height: font.pixelSize * 2
373                            Layout.alignment: Qt.AlignHCenter
374                            text: col.emoji.emoji
375                            font.pixelSize: Qt.application.font.pixelSize * 2
376                            font.family: Settings.emojiFont
377                            color: Nheko.colors.text
378                        }
379
380                        Label {
381                            Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
382                            text: col.emoji.description
383                            color: Nheko.colors.text
384                        }
385
386                    }
387
388                }
389
390            }
391
392        }
393
394        RowLayout {
395            Button {
396                Layout.alignment: Qt.AlignLeft
397                text: qsTr("They do not match!")
398                onClicked: {
399                    flow.cancel();
400                    dialog.close();
401                }
402            }
403
404            Item {
405                Layout.fillWidth: true
406            }
407
408            Button {
409                Layout.alignment: Qt.AlignRight
410                text: qsTr("They match!")
411                onClicked: flow.next()
412            }
413
414        }
415
416    }
417
418}
419