diff options
author | TheDrawingCoding-Gamer <bulbyvr@gmail.com> | 2024-05-01 13:38:29 -0400 |
---|---|---|
committer | TheDrawingCoding-Gamer <bulbyvr@gmail.com> | 2024-05-08 18:32:09 -0400 |
commit | a6090f4a1ca25100c6d570779d00c2950501498d (patch) | |
tree | a3437398937d137db3b95d90e8c9564a26c57845 /src/emoji/Emoji.h | |
parent | Merge pull request #1717 from Integral-Tech/optimize-qstring (diff) | |
download | nheko-a6090f4a1ca25100c6d570779d00c2950501498d.tar.xz |
fix naming issues with emoji, edit how codegen works
Diffstat (limited to 'src/emoji/Emoji.h')
-rw-r--r-- | src/emoji/Emoji.h | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/emoji/Emoji.h b/src/emoji/Emoji.h new file mode 100644 index 00000000..00cfb17b --- /dev/null +++ b/src/emoji/Emoji.h @@ -0,0 +1,88 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include <QObject> + +namespace emoji { +Q_NAMESPACE + +struct Emoji +{ + Q_GADGET +public: + enum class Category + { + People, + Nature, + Food, + Activity, + Travel, + Objects, + Symbols, + Flags, + Search + }; + Q_ENUM(Category) + + Q_PROPERTY(QString unicode READ unicode CONSTANT) + Q_PROPERTY(QString shortName READ shortName CONSTANT) + Q_PROPERTY(QString unicodeName READ unicodeName CONSTANT) + Q_PROPERTY(emoji::Emoji::Category category MEMBER category) + +public: + constexpr Emoji(std::u16string_view unicode, + std::u16string_view shortName, + std::u16string_view unicodeName, + Category cat) + : unicode_(unicode) + , shortName_(shortName) + , unicodeName_(unicodeName) + , category(cat) + { + } + + constexpr Emoji() + : unicode_(u"", 0) + , shortName_(u"", 0) + , unicodeName_(u"", 0) + , category(Category::Search) + { + } + + constexpr Emoji(const Emoji &) = default; + constexpr Emoji(Emoji &&) = default; + + constexpr Emoji &operator=(const Emoji &) = default; + constexpr Emoji &operator=(Emoji &&) = default; + + QString unicode() const + { + return QString::fromRawData(reinterpret_cast<const QChar *>(unicode_.data()), + unicode_.size()); + } + QString shortName() const + { + return QString::fromRawData(reinterpret_cast<const QChar *>(shortName_.data()), + shortName_.size()); + } + QString unicodeName() const + { + return QString::fromRawData(reinterpret_cast<const QChar *>(unicodeName_.data()), + unicodeName_.size()); + } + +private: + std::u16string_view unicode_; + std::u16string_view shortName_; + std::u16string_view unicodeName_; + +public: + Category category; +}; + +QString +categoryToName(emoji::Emoji::Category cat); +} // namespace emoji |