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