From 1b25ddd2b5d5bf4276253543d832b0e79952c4aa Mon Sep 17 00:00:00 2001 From: Igor Sirotin Date: Fri, 13 May 2022 21:01:48 +0300 Subject: [PATCH] feat(Emoji): Functions improvements (#673) - Introduced `format] argument for `parse` function - New `iconId(text)` function --- src/StatusQ/Core/Utils/Emoji.qml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/StatusQ/Core/Utils/Emoji.qml b/src/StatusQ/Core/Utils/Emoji.qml index bd5dca98..48d2789a 100644 --- a/src/StatusQ/Core/Utils/Emoji.qml +++ b/src/StatusQ/Core/Utils/Emoji.qml @@ -14,17 +14,26 @@ QtObject { "small": "18x18", "verySmall": "16x16" } + readonly property var format: { + "png": "png", + "svg": "svg" + } property string base: Qt.resolvedUrl("../../../assets/twemoji/") - function parse(text, renderSize = size.small) { + + function parse(text, renderSize = size.small, renderFormat = format.svg) { const renderSizes = renderSize.split("x"); if (!renderSize.includes("x") || renderSizes.length !== 2) { throw new Error("Invalid value for 'renderSize' parameter: ", renderSize); } - Twemoji.twemoji.base = base - Twemoji.twemoji.ext = ".svg" - Twemoji.twemoji.size = "svg" + const path = renderFormat == format.svg ? "svg/" : "72x72/" + Twemoji.twemoji.base = base + path + Twemoji.twemoji.ext = `.${renderFormat}` + return Twemoji.twemoji.parse(text, { + callback: (iconId, options) => { + return options.base + iconId + options.ext; + }, attributes: function() { return { width: renderSizes[0], @@ -34,6 +43,10 @@ QtObject { } }) } + function iconId(text) { + const parsed = parse(text); + return parsed.match('src=".*\/(.+?).svg')[1] + } function fromCodePoint(value) { return Twemoji.twemoji.convert.fromCodePoint(value) }