7#include "unicodeemoticonparser.h"
8#include "textemoticonscore_debug.h"
13using namespace TextEmoticonsCore;
15UnicodeEmoticonParser::UnicodeEmoticonParser() =
default;
17UnicodeEmoticonParser::~UnicodeEmoticonParser() =
default;
21 auto aliases = [](
const QJsonArray &alternates,
const QJsonArray &ascii) {
24 auto convert = [&](
const QJsonArray &array) {
25 auto toString = [](
const QJsonValue &value) {
26 return value.toString();
28 std::transform(array.begin(), array.end(), std::back_inserter(ret), toString);
35 QList<UnicodeEmoticon> lstEmoticons;
36 const QStringList keys = o.
keys();
37 for (
const QString &key : keys) {
38 UnicodeEmoticon emoticon;
39 const QJsonObject emojiObj = o[key].toObject();
41 const QString unicodeStr = emojiObj[
"code_points"_L1].toObject()[
"fully_qualified"_L1].toString();
42 Q_ASSERT(!unicodeStr.
isEmpty());
43 emoticon.setUnicode(unicodeStr);
44 const QString
category = emojiObj[
"category"_L1].toString();
45 emoticon.setCategory(category);
46 emoticon.setIdentifier(emojiObj[
"shortname"_L1].
toString());
47 emoticon.setOrder(emojiObj[
"order"_L1].toInt());
48 emoticon.setDiversityChildren(!emojiObj[
"diversity_children"_L1].toArray().isEmpty());
49 const auto shortnameAlternates = emojiObj[
"shortname_alternates"_L1].toArray();
50 const auto ascii = emojiObj[
"ascii"_L1].toArray();
51 emoticon.setAliases(aliases(shortnameAlternates, ascii));
52 if (emoticon.isValid()) {
53 lstEmoticons.
append(std::move(emoticon));
56 auto compareOrder = [](
const UnicodeEmoticon &
left,
const UnicodeEmoticon &
right) {
59 std::sort(lstEmoticons.
begin(), lstEmoticons.
end(), compareOrder);
63int UnicodeEmoticonParser::changeOrder(
const QString &name)
66 if (name ==
"people"_L1) {
68 }
else if (name ==
"flags"_L1) {
70 }
else if (name ==
"travel"_L1) {
72 }
else if (name ==
"symbols"_L1) {
74 }
else if (name ==
"activity"_L1) {
76 }
else if (name ==
"objects"_L1) {
78 }
else if (name ==
"nature"_L1) {
80 }
else if (name ==
"food"_L1) {
82 }
else if (name ==
"regional"_L1) {
85 qCWarning(TEXTEMOTICONSCORE_LOG) <<
"Missing i18n translate " <<
name;
char * toString(const EngineQuery &query)
T convert(const QVariant &value)
QString name(const QVariant &location)
Category category(StandardShortcut id)
qsizetype size() const const
QStringList keys() const const
void append(QList< T > &&value)
void reserve(qsizetype size)
bool isEmpty() const const
QTextStream & left(QTextStream &stream)
QTextStream & right(QTextStream &stream)