From 48a77c5e1ad488232ed948f01d165bdaa711d658 Mon Sep 17 00:00:00 2001 From: Angela Mazzurco Date: Sat, 1 Jul 2017 15:36:09 +0200 Subject: [PATCH] Create component emoji picker --- .../src/components/emoji/EmojiButton.qml | 54 + .../components/emoji/EmojiCategoryButton.qml | 79 ++ .../src/components/emoji/EmojiPicker.qml | 124 ++ .../src/components/emoji/emoji.js | 1068 +++++++++++++++++ retroshare-qml-app/src/qml.qrc | 4 + 5 files changed, 1329 insertions(+) create mode 100644 retroshare-qml-app/src/components/emoji/EmojiButton.qml create mode 100644 retroshare-qml-app/src/components/emoji/EmojiCategoryButton.qml create mode 100644 retroshare-qml-app/src/components/emoji/EmojiPicker.qml create mode 100644 retroshare-qml-app/src/components/emoji/emoji.js diff --git a/retroshare-qml-app/src/components/emoji/EmojiButton.qml b/retroshare-qml-app/src/components/emoji/EmojiButton.qml new file mode 100644 index 000000000..b75ec5f31 --- /dev/null +++ b/retroshare-qml-app/src/components/emoji/EmojiButton.qml @@ -0,0 +1,54 @@ +import QtQuick 2.7 +import QtQuick.Controls.Styles 1.2 + +Rectangle { + id: emojiButton + + + Text { + id: emojiText + color: "gray" + text: qsTr(eCatText) + font.pixelSize: emojiButton.width - 8 + anchors.centerIn: parent + } + + + state: "RELEASED" + states: [ + State { + name: "PRESSED" + PropertyChanges { + target: emojiText + font.pixelSize: emojiButton.width - 10 + } + }, + State { + name: "RELEASED" + PropertyChanges { + target: emojiText + font.pixelSize: emojiButton.width - 8 + } + } + ] + + + MouseArea { + anchors.fill: parent + hoverEnabled: true + + onEntered: { + emojiText.color = "black" + } + onExited: { + emojiText.color = "gray" + } + onPressedChanged: { + emojiButton.state = emojiButton.state == "PRESSED" ? "RELEASED" : "PRESSED" + } + onClicked: { + Qt.emojiClickedHandler(emojiText.text) + } + } + +} diff --git a/retroshare-qml-app/src/components/emoji/EmojiCategoryButton.qml b/retroshare-qml-app/src/components/emoji/EmojiCategoryButton.qml new file mode 100644 index 000000000..19e846d3e --- /dev/null +++ b/retroshare-qml-app/src/components/emoji/EmojiCategoryButton.qml @@ -0,0 +1,79 @@ +import QtQuick 2.7 +import QtQuick.Controls.Styles 1.2 + +Rectangle { + id: emojiCategoryButton + property string categoryName + + + function completedHandler() { + categoryName = eCatName + + //initialize + if (parent.currSelEmojiButton === undefined) { + clickedHandler() + } + } + + function pressedHandler() { + if (state != "SELECTED") { + state = state == "PRESSED" ? "RELEASED" : "PRESSED" + } + } + + function clickedHandler() { + if (parent.currSelEmojiButton !== undefined) { + parent.currSelEmojiButton.state = "RELEASED" + } + + parent.currSelEmojiButton = emojiCategoryButton + state = "SELECTED" + Qt.emojiCategoryChangedHandler(emojiCategoryButton.categoryName) + } + + + Text { + id: emojiText + color: "gray" + text: qsTr(eCatText) + font.pixelSize: emojiCategoryButton.width - 8 + anchors.centerIn: parent + } + + + state: "RELEASED" + states: [ + State { + name: "PRESSED" + PropertyChanges { + target: emojiText + font.pixelSize: emojiCategoryButton.width - 10 + } + }, + State { + name: "RELEASED" + PropertyChanges { + target: emojiText + font.pixelSize: emojiCategoryButton.width - 8 + } + }, + State { + name: "SELECTED" + PropertyChanges { + target: emojiCategoryButton + color: "#ADD6FF" + } + } + ] + + MouseArea { + anchors.fill: parent + hoverEnabled: true + onEntered: emojiText.color = "black" + onExited: emojiText.color = "gray" + onPressedChanged: pressedHandler() + onClicked: clickedHandler() + } + + Component.onCompleted: completedHandler() +} diff --git a/retroshare-qml-app/src/components/emoji/EmojiPicker.qml b/retroshare-qml-app/src/components/emoji/EmojiPicker.qml new file mode 100644 index 000000000..00f61e115 --- /dev/null +++ b/retroshare-qml-app/src/components/emoji/EmojiPicker.qml @@ -0,0 +1,124 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import "emoji.js" as EmojiJSON + +Rectangle { + id: emojiPicker + property EmojiCategoryButton currSelEmojiButton + property variant emojiParsedJson + property int buttonWidth: 40 + property TextArea textArea + + //displays all Emoji of one categroy by modifying the ListModel of emojiGrid + function categoryChangedHandler (newCategoryName){ + emojiByCategory.clear() + + for (var i = 0; i < emojiParsedJson.emoji_by_category[newCategoryName].length; i++) { + var elem = emojiParsedJson.emoji_by_category[newCategoryName][i] + emojiByCategory.append({eCatName: newCategoryName, eCatText: elem}) + } + } + + //adds the clicked Emoji (and one ' ' if the previous character isn't an Emoji) to textArea + function emojiClickedHandler(selectedEmoji) { + var strAppnd = "" + var plainText = textArea.getText(0, textArea.length) + + if (plainText.length > 0) { + var lastChar = plainText[plainText.length-1] + if ((lastChar !== ' ') && (lastChar.charCodeAt(0) < 255)) { + strAppnd = " " + } + } + strAppnd += '' + selectedEmoji + '' + + textArea.insert(textArea.cursorPosition, strAppnd) + } + + //parses JSON, publishes button handlers and inits textArea + function completedHandler() { +// emojiParsedJson = JSON.parse(EmojiJSON.emoji_json) + emojiParsedJson = EmojiJSON.emoji_json + for (var i = 0; i < emojiParsedJson.emoji_categories.length; i++) { + var elem = emojiParsedJson.emoji_categories[i] + emojiCategoryButtons.append({eCatName: elem.name, eCatText: elem.emoji_unified}) + } + + Qt.emojiCategoryChangedHandler = categoryChangedHandler + Qt.emojiClickedHandler = emojiClickedHandler + + textArea.cursorPosition = textArea.length + textArea.Keys.pressed.connect(keyPressedHandler) + } + + + //checks if the previous character is an Emoji and adds a ' ' if that's the case + //this is necessary, because Emoji use a bigger font-size, and that font-size is kept using without a ' ' + function keyPressedHandler(event) { + var testStr = txtIn.getText(txtIn.length-2, txtIn.length) + var ptrn = new RegExp("[\uD800-\uDBFF][\uDC00-\uDFFF]") + if ((event.key !== Qt.Key_Backspace) && (ptrn.test(testStr))) { + txtIn.text += " " + txtIn.cursorPosition = txtIn.length + } + } + + + //all emoji of one category + ListModel { + id: emojiByCategory + } + + GridView { + id: emojiGrid + width: parent.width + anchors.fill: parent + anchors.bottomMargin: buttonWidth + cellWidth: buttonWidth; cellHeight: buttonWidth + + model: emojiByCategory + delegate: EmojiButton { + width: buttonWidth + height: buttonWidth + color: emojiPicker.color + } + } + + + //seperator + Rectangle { + color: emojiPicker.color + anchors.bottom: parent.bottom + width: parent.width + height: buttonWidth + } + Rectangle { + color: "black" + anchors.bottom: parent.bottom + anchors.bottomMargin: buttonWidth + width: parent.width + height: 1 + } + + //emoji category selector + ListView { + width: parent.width + anchors.bottom: parent.bottom + anchors.bottomMargin: buttonWidth + orientation: ListView.Horizontal + + model: emojiCategoryButtons + delegate: EmojiCategoryButton { + width: buttonWidth + height: buttonWidth + color: emojiPicker.color + } + } + + ListModel { + id: emojiCategoryButtons + } + + Component.onCompleted: completedHandler() +} + diff --git a/retroshare-qml-app/src/components/emoji/emoji.js b/retroshare-qml-app/src/components/emoji/emoji.js new file mode 100644 index 000000000..cfd751a60 --- /dev/null +++ b/retroshare-qml-app/src/components/emoji/emoji.js @@ -0,0 +1,1068 @@ +var emoji_json = { + "emoji_categories": [ + { + "name": "faces", + "emoji_unified": "๐Ÿ˜œ", + "description": "Faces" + }, + { + "name": "cat_faces", + "emoji_unified": "๐Ÿ˜ธ", + "description": "Faces of Cats" + },{ + "name": "animals_and_plants", + "emoji_unified": "๐Ÿง", + "description": "Animals and Plants" + },{ + "name": "food_and_drink", + "emoji_unified": "๐Ÿป", + "description": "Food and Drinks" + },{ + "name": "places", + "emoji_unified": "๐Ÿฏ", + "description": "Places" + },{ + "name": "music_and_sport", + "emoji_unified": "๐ŸŽง", + "description": "Music and Sport" + },{ + "name": "objects", + "emoji_unified": "๐Ÿ’ฝ", + "description": "Objects" + },{ + "name": "misc", + "emoji_unified": "๐Ÿ‘Œ", + "description": "Miscellaneous" + },{ + "name": "symbols", + "emoji_unified": "๐Ÿ”ž", + "description": "Symbols" + },{ + "name": "transport", + "emoji_unified": "๐ŸšŽ", + "description": "Transport" + },{ + "name": "seven", + "emoji_unified": "๐Ÿ•ด", + "description": "Unicode 7.0" + } + ], + "emoji_by_category": { + "animals_and_plants": [ + "๐Ÿถ", + "๐Ÿบ", + "๐Ÿฑ", + "๐Ÿญ", + "๐Ÿน", + "๐Ÿฐ", + "๐Ÿธ", + "๐Ÿฏ", + "๐Ÿจ", + "๐Ÿป", + "๐Ÿท", + "๐Ÿฝ", + "๐Ÿฎ", + "๐Ÿ—", + "๐Ÿต", + "๐Ÿ’", + "๐Ÿด", + "๐Ÿ‘", + "๐Ÿ˜", + "๐Ÿผ", + "๐Ÿง", + "๐Ÿฆ", + "๐Ÿค", + "๐Ÿฅ", + "๐Ÿฃ", + "๐Ÿ”", + "๐Ÿ", + "๐Ÿข", + "๐Ÿ›", + "๐Ÿ", + "๐Ÿœ", + "๐Ÿž", + "๐ŸŒ", + "๐Ÿ™", + "๐Ÿš", + "๐Ÿ ", + "๐ŸŸ", + "๐Ÿฌ", + "๐Ÿณ", + "๐Ÿ‹", + "๐Ÿ„", + "๐Ÿ", + "๐Ÿ€", + "๐Ÿƒ", + "๐Ÿ…", + "๐Ÿ‡", + "๐Ÿ‰", + "๐ŸŽ", + "๐Ÿ", + "๐Ÿ“", + "๐Ÿ•", + "๐Ÿ–", + "๐Ÿ", + "๐Ÿ‚", + "๐Ÿฒ", + "๐Ÿก", + "๐ŸŠ", + "๐Ÿซ", + "๐Ÿช", + "๐Ÿ†", + "๐Ÿˆ", + "๐Ÿฉ", + "๐Ÿพ", + "๐Ÿ’", + "๐ŸŒธ", + "๐ŸŒท", + "๐Ÿ€", + "๐ŸŒน", + "๐ŸŒป", + "๐ŸŒบ", + "๐Ÿ", + "๐Ÿƒ", + "๐Ÿ‚", + "๐ŸŒฟ", + "๐ŸŒพ", + "๐Ÿ„", + "๐ŸŒต", + "๐ŸŒด", + "๐ŸŒฒ", + "๐ŸŒณ", + "๐ŸŒฐ", + "๐ŸŒฑ", + "๐ŸŒผ" + ], + "cat_faces": [ + "๐Ÿ˜บ", + "๐Ÿ˜ธ", + "๐Ÿ˜ป", + "๐Ÿ˜ฝ", + "๐Ÿ˜ผ", + "๐Ÿ™€", + "๐Ÿ˜ฟ", + "๐Ÿ˜น", + "๐Ÿ˜พ" + ], + "faces": [ + "๐Ÿ˜„", + "๐Ÿ˜ƒ", + "๐Ÿ˜€", + "๐Ÿ˜Š", + "โ˜บ", + "๐Ÿ˜‰", + "๐Ÿ˜", + "๐Ÿ˜˜", + "๐Ÿ˜š", + "๐Ÿ˜—", + "๐Ÿ˜™", + "๐Ÿ˜œ", + "๐Ÿ˜", + "๐Ÿ˜›", + "๐Ÿ˜ณ", + "๐Ÿ˜", + "๐Ÿ˜”", + "๐Ÿ˜Œ", + "๐Ÿ˜’", + "๐Ÿ˜ž", + "๐Ÿ˜ฃ", + "๐Ÿ˜ข", + "๐Ÿ˜‚", + "๐Ÿ˜ญ", + "๐Ÿ˜ช", + "๐Ÿ˜ฅ", + "๐Ÿ˜ฐ", + "๐Ÿ˜…", + "๐Ÿ˜“", + "๐Ÿ˜ฉ", + "๐Ÿ˜ซ", + "๐Ÿ˜จ", + "๐Ÿ˜ฑ", + "๐Ÿ˜ ", + "๐Ÿ˜ก", + "๐Ÿ˜ค", + "๐Ÿ˜–", + "๐Ÿ˜†", + "๐Ÿ˜‹", + "๐Ÿ˜ท", + "๐Ÿ˜Ž", + "๐Ÿ˜ด", + "๐Ÿ˜ต", + "๐Ÿ˜ฒ", + "๐Ÿ˜Ÿ", + "๐Ÿ˜ฆ", + "๐Ÿ˜ง", + "๐Ÿ˜ˆ", + "๐Ÿ‘ฟ", + "๐Ÿ˜ฎ", + "๐Ÿ˜ฌ", + "๐Ÿ˜", + "๐Ÿ˜•", + "๐Ÿ˜ฏ", + "๐Ÿ˜ถ", + "๐Ÿ˜‡", + "๐Ÿ˜", + "๐Ÿ˜‘", + "๐Ÿ‘ฒ", + "๐Ÿ‘ณ", + "๐Ÿ‘ฎ", + "๐Ÿ‘ท", + "๐Ÿ’‚", + "๐Ÿ‘ถ", + "๐Ÿ‘ฆ", + "๐Ÿ‘ง", + "๐Ÿ‘จ", + "๐Ÿ‘ฉ", + "๐Ÿ‘ด", + "๐Ÿ‘ต", + "๐Ÿ‘ฑ", + "๐Ÿ‘ผ", + "๐Ÿ‘ธ", + "๐Ÿ‘น", + "๐Ÿ‘บ", + "๐Ÿ™ˆ", + "๐Ÿ™‰", + "๐Ÿ™Š", + "๐Ÿ’€", + "๐Ÿ‘ฝ", + "๐Ÿ’ฉ" + ], + "food_and_drink": [ + "โ˜•", + "๐Ÿต", + "๐Ÿถ", + "๐Ÿผ", + "๐Ÿบ", + "๐Ÿป", + "๐Ÿธ", + "๐Ÿน", + "๐Ÿท", + "๐Ÿด", + "๐Ÿ•", + "๐Ÿ”", + "๐ŸŸ", + "๐Ÿ—", + "๐Ÿ–", + "๐Ÿ", + "๐Ÿ›", + "๐Ÿค", + "๐Ÿฑ", + "๐Ÿฃ", + "๐Ÿฅ", + "๐Ÿ™", + "๐Ÿ˜", + "๐Ÿš", + "๐Ÿœ", + "๐Ÿฒ", + "๐Ÿข", + "๐Ÿก", + "๐Ÿณ", + "๐Ÿž", + "๐Ÿฉ", + "๐Ÿฎ", + "๐Ÿฆ", + "๐Ÿจ", + "๐Ÿง", + "๐ŸŽ‚", + "๐Ÿฐ", + "๐Ÿช", + "๐Ÿซ", + "๐Ÿฌ", + "๐Ÿญ", + "๐Ÿฏ", + "๐ŸŽ", + "๐Ÿ", + "๐ŸŠ", + "๐Ÿ‹", + "๐Ÿ’", + "๐Ÿ‡", + "๐Ÿ‰", + "๐Ÿ“", + "๐Ÿ‘", + "๐Ÿˆ", + "๐ŸŒ", + "๐Ÿ", + "๐Ÿ", + "๐Ÿ ", + "๐Ÿ†", + "๐Ÿ…", + "๐ŸŒฝ" + ], + "misc": [ + "๐Ÿ”ฅ", + "โœจ", + "๐ŸŒŸ", + "๐Ÿ’ซ", + "๐Ÿ’ฅ", + "๐Ÿ’ข", + "๐Ÿ’ฆ", + "๐Ÿ’ง", + "๐Ÿ’ค", + "๐Ÿ’จ", + "๐Ÿ‘‚", + "๐Ÿ‘€", + "๐Ÿ‘ƒ", + "๐Ÿ‘…", + "๐Ÿ‘„", + "๐Ÿ‘", + "๐Ÿ‘Ž", + "๐Ÿ‘Œ", + "๐Ÿ‘Š", + "โœŠ", + "โœŒ", + "๐Ÿ‘‹", + "โœ‹", + "๐Ÿ‘", + "๐Ÿ‘†", + "๐Ÿ‘‡", + "๐Ÿ‘‰", + "๐Ÿ‘ˆ", + "๐Ÿ™Œ", + "๐Ÿ™", + "โ˜", + "๐Ÿ‘", + "๐Ÿ’ช", + "๐Ÿšถ", + "๐Ÿƒ", + "๐Ÿ’ƒ", + "๐Ÿ‘ซ", + "๐Ÿ‘ช", + "๐Ÿ‘ฌ", + "๐Ÿ‘ญ", + "๐Ÿ’", + "๐Ÿ’‘", + "๐Ÿ‘ฏ", + "๐Ÿ™†", + "๐Ÿ™…", + "๐Ÿ’", + "๐Ÿ™‹", + "๐Ÿ’†", + "๐Ÿ’‡", + "๐Ÿ’…", + "๐Ÿ‘ฐ", + "๐Ÿ™Ž", + "๐Ÿ™", + "๐Ÿ™‡" + ], + "music_and_sport": [ + "๐ŸŽจ", + "๐ŸŽฌ", + "๐ŸŽค", + "๐ŸŽง", + "๐ŸŽผ", + "๐ŸŽต", + "๐ŸŽถ", + "๐ŸŽน", + "๐ŸŽป", + "๐ŸŽบ", + "๐ŸŽท", + "๐ŸŽธ", + "๐Ÿ‘พ", + "๐ŸŽฎ", + "๐Ÿƒ", + "๐ŸŽด", + "๐Ÿ€„", + "๐ŸŽฒ", + "๐ŸŽฏ", + "๐Ÿˆ", + "๐Ÿ€", + "โšฝ", + "โšพ", + "๐ŸŽพ", + "๐ŸŽฑ", + "๐Ÿ‰", + "๐ŸŽณ", + "โ›ณ", + "๐Ÿšต", + "๐Ÿšด", + "๐Ÿ", + "๐Ÿ‡", + "๐Ÿ†", + "๐ŸŽฟ", + "๐Ÿ‚", + "๐ŸŠ", + "๐Ÿ„", + "๐ŸŽฃ" + ], + "objects": [ + "๐ŸŽ", + "๐Ÿ’", + "๐ŸŽŽ", + "๐ŸŽ’", + "๐ŸŽ“", + "๐ŸŽ", + "๐ŸŽ†", + "๐ŸŽ‡", + "๐ŸŽ", + "๐ŸŽ‘", + "๐ŸŽƒ", + "๐Ÿ‘ป", + "๐ŸŽ…", + "๐ŸŽ„", + "๐ŸŽ", + "๐ŸŽ‹", + "๐ŸŽ‰", + "๐ŸŽŠ", + "๐ŸŽˆ", + "๐ŸŽŒ", + "๐Ÿ”ฎ", + "๐ŸŽฅ", + "๐Ÿ“ท", + "๐Ÿ“น", + "๐Ÿ“ผ", + "๐Ÿ’ฟ", + "๐Ÿ“€", + "๐Ÿ’ฝ", + "๐Ÿ’พ", + "๐Ÿ’ป", + "๐Ÿ“ฑ", + "โ˜Ž", + "๐Ÿ“ž", + "๐Ÿ“Ÿ", + "๐Ÿ“ ", + "๐Ÿ“ก", + "๐Ÿ“บ", + "๐Ÿ“ป", + "๐Ÿ”Š", + "๐Ÿ”‰", + "๐Ÿ”ˆ", + "๐Ÿ”‡", + "๐Ÿ””", + "๐Ÿ”•", + "๐Ÿ“ข", + "๐Ÿ“ฃ", + "โณ", + "โŒ›", + "โฐ", + "โŒš", + "๐Ÿ”“", + "๐Ÿ”’", + "๐Ÿ”", + "๐Ÿ”", + "๐Ÿ”‘", + "๐Ÿ”Ž", + "๐Ÿ’ก", + "๐Ÿ”ฆ", + "๐Ÿ”†", + "๐Ÿ”…", + "๐Ÿ”Œ", + "๐Ÿ”‹", + "๐Ÿ”", + "๐Ÿ›", + "๐Ÿ›€", + "๐Ÿšฟ", + "๐Ÿšฝ", + "๐Ÿ”ง", + "๐Ÿ”ฉ", + "๐Ÿ”จ", + "๐Ÿšช", + "๐Ÿšฌ", + "๐Ÿ’ฃ", + "๐Ÿ”ซ", + "๐Ÿ”ช", + "๐Ÿ’Š", + "๐Ÿ’‰", + "๐Ÿ’ฐ", + "๐Ÿ’ด", + "๐Ÿ’ต", + "๐Ÿ’ท", + "๐Ÿ’ถ", + "๐Ÿ’ณ", + "๐Ÿ’ธ", + "๐Ÿ“ฒ", + "๐Ÿ“ง", + "๐Ÿ“ฅ", + "๐Ÿ“ค", + "โœ‰", + "๐Ÿ“ฉ", + "๐Ÿ“จ", + "๐Ÿ“ฏ", + "๐Ÿ“ซ", + "๐Ÿ“ช", + "๐Ÿ“ฌ", + "๐Ÿ“ญ", + "๐Ÿ“ฎ", + "๐Ÿ“ฆ", + "๐Ÿ“", + "๐Ÿ“„", + "๐Ÿ“ƒ", + "๐Ÿ“‘", + "๐Ÿ“Š", + "๐Ÿ“ˆ", + "๐Ÿ“‰", + "๐Ÿ“œ", + "๐Ÿ“‹", + "๐Ÿ“…", + "๐Ÿ“†", + "๐Ÿ“‡", + "๐Ÿ“", + "๐Ÿ“‚", + "โœ‚", + "๐Ÿ“Œ", + "๐Ÿ“Ž", + "โœ’", + "โœ", + "๐Ÿ“", + "๐Ÿ“", + "๐Ÿ“•", + "๐Ÿ“—", + "๐Ÿ“˜", + "๐Ÿ“™", + "๐Ÿ““", + "๐Ÿ“”", + "๐Ÿ“’", + "๐Ÿ“š", + "๐Ÿ“–", + "๐Ÿ”–", + "๐Ÿ“›", + "๐Ÿ”ฌ", + "๐Ÿ”ญ", + "๐Ÿ“ฐ" + ], + "places": [ + "๐Ÿ ", + "๐Ÿก", + "๐Ÿซ", + "๐Ÿข", + "๐Ÿฃ", + "๐Ÿฅ", + "๐Ÿฆ", + "๐Ÿช", + "๐Ÿฉ", + "๐Ÿจ", + "๐Ÿ’’", + "โ›ช", + "๐Ÿฌ", + "๐Ÿค", + "๐ŸŒ‡", + "๐ŸŒ†", + "๐Ÿฏ", + "๐Ÿฐ", + "โ›บ", + "๐Ÿญ", + "๐Ÿ—ผ", + "๐Ÿ—พ", + "๐Ÿ—ป", + "๐ŸŒ„", + "๐ŸŒ…", + "๐ŸŒƒ", + "๐Ÿ—ฝ", + "๐ŸŒ‰", + "๐ŸŽ ", + "๐ŸŽก", + "โ›ฒ", + "๐ŸŽข", + "๐Ÿšข" + ], + "seven": [ + "๐ŸŒก", + "๐ŸŒข", + "๐ŸŒฃ", + "๐ŸŒค", + "๐ŸŒฅ", + "๐ŸŒฆ", + "๐ŸŒง", + "๐ŸŒจ", + "๐ŸŒฉ", + "๐ŸŒช", + "๐ŸŒซ", + "๐ŸŒฌ", + "๐ŸŒถ", + "๐Ÿฝ", + "๐ŸŽ”", + "๐ŸŽ•", + "๐ŸŽ–", + "๐ŸŽ—", + "๐ŸŽ˜", + "๐ŸŽ™", + "๐ŸŽš", + "๐ŸŽ›", + "๐ŸŽœ", + "๐ŸŽ", + "๐ŸŽž", + "๐ŸŽŸ", + "๐Ÿ…", + "๐Ÿ‹", + "๐ŸŒ", + "๐Ÿ", + "๐ŸŽ", + "๐Ÿ”", + "๐Ÿ•", + "๐Ÿ–", + "๐Ÿ—", + "๐Ÿ˜", + "๐Ÿ™", + "๐Ÿš", + "๐Ÿ›", + "๐Ÿœ", + "๐Ÿ", + "๐Ÿž", + "๐ŸŸ", + "๐Ÿฑ", + "๐Ÿฒ", + "๐Ÿณ", + "๐Ÿด", + "๐Ÿต", + "๐Ÿถ", + "๐Ÿท", + "๐Ÿฟ", + "๐Ÿ‘", + "๐Ÿ“ธ", + "๐Ÿ“ฝ", + "๐Ÿ“พ", + "๐Ÿ”พ", + "๐Ÿ”ฟ", + "๐Ÿ•„", + "๐Ÿ•…", + "๐Ÿ•†", + "๐Ÿ•‡", + "๐Ÿ•ˆ", + "๐Ÿ•‰", + "๐Ÿ•Š", + "๐Ÿ•จ", + "๐Ÿ•ฉ", + "๐Ÿ•ช", + "๐Ÿ•ซ", + "๐Ÿ•ฌ", + "๐Ÿ•ญ", + "๐Ÿ•ฎ", + "๐Ÿ•ฏ", + "๐Ÿ•ฐ", + "๐Ÿ•ฑ", + "๐Ÿ•ฒ", + "๐Ÿ•ณ", + "๐Ÿ•ด", + "๐Ÿ•ต", + "๐Ÿ•ถ", + "๐Ÿ•ท", + "๐Ÿ•ธ", + "๐Ÿ•น", + "๐Ÿ•ป", + "๐Ÿ•ผ", + "๐Ÿ•ฝ", + "๐Ÿ•พ", + "๐Ÿ•ฟ", + "๐Ÿ–€", + "๐Ÿ–", + "๐Ÿ–‚", + "๐Ÿ–ƒ", + "๐Ÿ–„", + "๐Ÿ–…", + "๐Ÿ–†", + "๐Ÿ–‡", + "๐Ÿ–ˆ", + "๐Ÿ–‰", + "๐Ÿ–Š", + "๐Ÿ–‹", + "๐Ÿ–Œ", + "๐Ÿ–", + "๐Ÿ–Ž", + "๐Ÿ–", + "๐Ÿ–", + "๐Ÿ–‘", + "๐Ÿ–’", + "๐Ÿ–“", + "๐Ÿ–”", + "๐Ÿ–•", + "๐Ÿ––", + "๐Ÿ–—", + "๐Ÿ–˜", + "๐Ÿ–™", + "๐Ÿ–š", + "๐Ÿ–›", + "๐Ÿ–œ", + "๐Ÿ–", + "๐Ÿ–ž", + "๐Ÿ–Ÿ", + "๐Ÿ– ", + "๐Ÿ–ก", + "๐Ÿ–ข", + "๐Ÿ–ฃ", + "๐Ÿ–ฅ", + "๐Ÿ–ฆ", + "๐Ÿ–ง", + "๐Ÿ–จ", + "๐Ÿ–ฉ", + "๐Ÿ–ช", + "๐Ÿ–ซ", + "๐Ÿ–ฌ", + "๐Ÿ–ญ", + "๐Ÿ–ฎ", + "๐Ÿ–ฏ", + "๐Ÿ–ฐ", + "๐Ÿ–ฑ", + "๐Ÿ–ฒ", + "๐Ÿ–ณ", + "๐Ÿ–ด", + "๐Ÿ–ต", + "๐Ÿ–ถ", + "๐Ÿ–ท", + "๐Ÿ–ธ", + "๐Ÿ–น", + "๐Ÿ–บ", + "๐Ÿ–ป", + "๐Ÿ–ผ", + "๐Ÿ–ฝ", + "๐Ÿ–พ", + "๐Ÿ–ฟ", + "๐Ÿ—€", + "๐Ÿ—€", + "๐Ÿ—‚", + "๐Ÿ—ƒ", + "๐Ÿ—„", + "๐Ÿ—…", + "๐Ÿ—†", + "๐Ÿ—‡", + "๐Ÿ—ˆ", + "๐Ÿ—‰", + "๐Ÿ—Š", + "๐Ÿ—‹", + "๐Ÿ—Œ", + "๐Ÿ—", + "๐Ÿ—Ž", + "๐Ÿ—", + "๐Ÿ—", + "๐Ÿ—‘", + "๐Ÿ—’", + "๐Ÿ—“", + "๐Ÿ—”", + "๐Ÿ—•", + "๐Ÿ—–", + "๐Ÿ——", + "๐Ÿ—˜", + "๐Ÿ—™", + "๐Ÿ—š", + "๐Ÿ—›", + "๐Ÿ—œ", + "๐Ÿ—", + "๐Ÿ—ž", + "๐Ÿ—Ÿ", + "๐Ÿ— ", + "๐Ÿ—ก", + "๐Ÿ—ข", + "๐Ÿ—ฃ", + "๐Ÿ—ค", + "๐Ÿ—ฅ", + "๐Ÿ—ฆ", + "๐Ÿ—ง", + "๐Ÿ—จ", + "๐Ÿ—ฉ", + "๐Ÿ—ช", + "๐Ÿ—ซ", + "๐Ÿ—ฌ", + "๐Ÿ—ญ", + "๐Ÿ—ฏ", + "๐Ÿ—ฏ", + "๐Ÿ—ฐ", + "๐Ÿ—ฑ", + "๐Ÿ—ฒ", + "๐Ÿ—ณ", + "๐Ÿ—ด", + "๐Ÿ—ต", + "๐Ÿ—ถ", + "๐Ÿ—ท", + "๐Ÿ—ธ", + "๐Ÿ—น", + "๐Ÿ—บ", + "๐Ÿ™", + "๐Ÿ™‚", + "๐Ÿ›†", + "๐Ÿ›‡", + "๐Ÿ›ˆ", + "๐Ÿ›‰", + "๐Ÿ›Š", + "๐Ÿ›‹", + "๐Ÿ›Œ", + "๐Ÿ›", + "๐Ÿ›Ž", + "๐Ÿ›", + "๐Ÿ› ", + "๐Ÿ›ก", + "๐Ÿ›ข", + "๐Ÿ›ฃ", + "๐Ÿ›ค", + "๐Ÿ›ฅ", + "๐Ÿ›ฆ", + "๐Ÿ›ง", + "๐Ÿ›จ", + "๐Ÿ›ฉ", + "๐Ÿ›ช", + "๐Ÿ›ซ", + "๐Ÿ›ฌ", + "๐Ÿ›ฐ", + "๐Ÿ›ฑ", + "๐Ÿ›ฒ", + "๐Ÿ›ณ" + ], + "symbols": [ + "1โƒฃ", + "2โƒฃ", + "3โƒฃ", + "4โƒฃ", + "5โƒฃ", + "6โƒฃ", + "7โƒฃ", + "8โƒฃ", + "9โƒฃ", + "0โƒฃ", + "๐Ÿ”Ÿ", + "๐Ÿ”ข", + "#โƒฃ", + "๐Ÿ”ฃ", + "โฌ†", + "โฌ‡", + "โฌ…", + "โžก", + "๐Ÿ” ", + "๐Ÿ”ก", + "๐Ÿ”ค", + "โ†—", + "โ†–", + "โ†˜", + "โ†™", + "โ†”", + "โ†•", + "๐Ÿ”„", + "โ—€", + "โ–ถ", + "๐Ÿ”ผ", + "๐Ÿ”ฝ", + "โ†ฉ", + "โ†ช", + "โ„น", + "โช", + "โฉ", + "โซ", + "โฌ", + "โคต", + "โคด", + "๐Ÿ†—", + "๐Ÿ”€", + "๐Ÿ”", + "๐Ÿ”‚", + "๐Ÿ†•", + "๐Ÿ†™", + "๐Ÿ†’", + "๐Ÿ†“", + "๐Ÿ†–", + "๐Ÿ“ถ", + "๐ŸŽฆ", + "๐Ÿˆ", + "๐Ÿˆฏ", + "๐Ÿˆณ", + "๐Ÿˆต", + "๐Ÿˆด", + "๐Ÿˆฒ", + "๐Ÿ‰", + "๐Ÿˆน", + "๐Ÿˆบ", + "๐Ÿˆถ", + "๐Ÿˆš", + "๐Ÿšป", + "๐Ÿšน", + "๐Ÿšบ", + "๐Ÿšผ", + "๐Ÿšพ", + "๐Ÿšฐ", + "๐Ÿšฎ", + "๐Ÿ…ฟ", + "โ™ฟ", + "๐Ÿšญ", + "๐Ÿˆท", + "๐Ÿˆธ", + "๐Ÿˆ‚", + "โ“‚", + "๐Ÿ›‚", + "๐Ÿ›„", + "๐Ÿ›…", + "๐Ÿ›ƒ", + "๐Ÿ‰‘", + "ใŠ™", + "ใŠ—", + "๐Ÿ†‘", + "๐Ÿ†˜", + "๐Ÿ†”", + "๐Ÿšซ", + "๐Ÿ”ž", + "๐Ÿ“ต", + "๐Ÿšฏ", + "๐Ÿšฑ", + "๐Ÿšณ", + "๐Ÿšท", + "๐Ÿšธ", + "โ›”", + "โœณ", + "โ‡", + "โŽ", + "โœ…", + "โœด", + "๐Ÿ’Ÿ", + "๐Ÿ†š", + "๐Ÿ“ณ", + "๐Ÿ“ด", + "๐Ÿ…ฐ", + "๐Ÿ…ฑ", + "๐Ÿ†Ž", + "๐Ÿ…พ", + "๐Ÿ’ ", + "โžฟ", + "โ™ป", + "โ™ˆ", + "โ™‰", + "โ™Š", + "โ™‹", + "โ™Œ", + "โ™", + "โ™Ž", + "โ™", + "โ™", + "โ™‘", + "โ™’", + "โ™“", + "โ›Ž๐Ÿ”ฏ", + "๐Ÿง", + "๐Ÿ’น", + "๐Ÿ’ฒ", + "๐Ÿ’ฑ", + "ยฉ", + "ยฎ", + "โ„ข", + "โŒ", + "โ€ผ", + "โ‰", + "โ—", + "โ“", + "โ•", + "โ”", + "โญ•", + "๐Ÿ”", + "๐Ÿ”š", + "๐Ÿ”™", + "๐Ÿ”›", + "๐Ÿ”œ", + "๐Ÿ”ƒ", + "๐Ÿ•›", + "๐Ÿ•ง", + "๐Ÿ•", + "๐Ÿ•œ", + "๐Ÿ•‘", + "๐Ÿ•", + "๐Ÿ•’", + "๐Ÿ•ž", + "๐Ÿ•“", + "๐Ÿ•Ÿ", + "๐Ÿ•”", + "๐Ÿ• ", + "๐Ÿ••", + "๐Ÿ•–", + "๐Ÿ•—", + "๐Ÿ•˜", + "๐Ÿ•™", + "๐Ÿ•š", + "๐Ÿ•ก", + "๐Ÿ•ข", + "๐Ÿ•ฃ", + "๐Ÿ•ค", + "๐Ÿ•ฅ", + "๐Ÿ•ฆ", + "โœ–", + "โž•", + "โž–", + "โž—", + "โ™ ", + "โ™ฅ", + "โ™ฃ", + "โ™ฆ", + "๐Ÿ’ฎ", + "๐Ÿ’ฏ", + "โœ”", + "โ˜‘", + "๐Ÿ”˜", + "๐Ÿ”—", + "โžฐ", + "ใ€ฐ", + "ใ€ฝ", + "๐Ÿ”ฑ", + "โ—ผ", + "โ—ป", + "โ—พ", + "โ—ฝ", + "โ–ช", + "โ–ซ", + "๐Ÿ”บ", + "๐Ÿ”ฒ", + "๐Ÿ”ณ", + "โšซ", + "โšช", + "๐Ÿ”ด", + "๐Ÿ”ต", + "๐Ÿ”ป", + "โฌœ", + "โฌ›", + "๐Ÿ”ถ", + "๐Ÿ”ท", + "๐Ÿ”ธ", + "๐Ÿ”น" + ], + "transport": [ + "โ›ต", + "๐Ÿšค", + "๐Ÿšฃ", + "โš“", + "๐Ÿš€", + "โœˆ", + "๐Ÿ’บ", + "๐Ÿš", + "๐Ÿš‚", + "๐ŸšŠ", + "๐Ÿš‰", + "๐Ÿšž", + "๐Ÿš†", + "๐Ÿš„", + "๐Ÿš…", + "๐Ÿšˆ", + "๐Ÿš‡", + "๐Ÿš", + "๐Ÿš‹", + "๐Ÿšƒ", + "๐ŸšŽ", + "๐ŸšŒ", + "๐Ÿš", + "๐Ÿš™", + "๐Ÿš˜", + "๐Ÿš—", + "๐Ÿš•", + "๐Ÿš–", + "๐Ÿš›", + "๐Ÿšš", + "๐Ÿšจ", + "๐Ÿš“", + "๐Ÿš”", + "๐Ÿš’", + "๐Ÿš‘", + "๐Ÿš", + "๐Ÿšฒ", + "๐Ÿšก", + "๐ŸšŸ", + "๐Ÿš ", + "๐Ÿšœ", + "๐Ÿ’ˆ", + "๐Ÿš", + "๐ŸŽซ", + "๐Ÿšฆ", + "๐Ÿšฅ", + "โš ", + "๐Ÿšง", + "๐Ÿ”ฐ", + "โ›ฝ", + "๐Ÿฎ", + "๐ŸŽฐ", + "โ™จ", + "๐Ÿ—ฟ", + "๐ŸŽช", + "๐ŸŽญ", + "๐Ÿ“", + "๐Ÿšฉ" + ] + } +}; diff --git a/retroshare-qml-app/src/qml.qrc b/retroshare-qml-app/src/qml.qrc index ced9047d4..a27428738 100644 --- a/retroshare-qml-app/src/qml.qrc +++ b/retroshare-qml-app/src/qml.qrc @@ -47,5 +47,9 @@ icons/add.svg icons/keyring.svg components/TextAndIcon.qml + components/emoji/EmojiPicker.qml + components/emoji/EmojiCategoryButton.qml + components/emoji/EmojiButton.qml + components/emoji/emoji.js