/** * SPDX-FileCopyrightText: Black Hat * * SPDX-LicenseIdentifier: GPL-3.0-only */ #ifndef EMOJIMODEL_H #define EMOJIMODEL_H #include #include #include #include struct Emoji { Emoji(const QString &u, const QString &s) : unicode(u) , shortname(s) { } Emoji() { } friend QDataStream &operator<<(QDataStream &arch, const Emoji &object) { arch << object.unicode; arch << object.shortname; return arch; } friend QDataStream &operator>>(QDataStream &arch, Emoji &object) { arch >> object.unicode; arch >> object.shortname; return arch; } QString unicode; QString shortname; Q_GADGET Q_PROPERTY(QString unicode MEMBER unicode) Q_PROPERTY(QString shortname MEMBER shortname) }; Q_DECLARE_METATYPE(Emoji) class EmojiModel : public QObject { Q_OBJECT Q_PROPERTY(QVariantList history READ history NOTIFY historyChanged) Q_PROPERTY(QVariantList people MEMBER people CONSTANT) Q_PROPERTY(QVariantList nature MEMBER nature CONSTANT) Q_PROPERTY(QVariantList food MEMBER food CONSTANT) Q_PROPERTY(QVariantList activity MEMBER activity CONSTANT) Q_PROPERTY(QVariantList travel MEMBER travel CONSTANT) Q_PROPERTY(QVariantList objects MEMBER objects CONSTANT) Q_PROPERTY(QVariantList symbols MEMBER symbols CONSTANT) Q_PROPERTY(QVariantList flags MEMBER flags CONSTANT) public: explicit EmojiModel(QObject *parent = nullptr) : QObject(parent) , m_settings(new QSettings()) { } Q_INVOKABLE QVariantList history(); Q_INVOKABLE QVariantList filterModel(const QString &filter); Q_SIGNALS: void historyChanged(); public Q_SLOTS: void emojiUsed(QVariant modelData); private: static const QVariantList people; static const QVariantList nature; static const QVariantList food; static const QVariantList activity; static const QVariantList travel; static const QVariantList objects; static const QVariantList symbols; static const QVariantList flags; QSettings *m_settings; }; #endif // EMOJIMODEL_H