Skip to content
Snippets Groups Projects
emojismodel.h 1.29 KiB
Newer Older
Armin Felder's avatar
d
Armin Felder committed
#ifndef EMOJISMODEL_H
#define EMOJISMODEL_H

#include <QAbstractListModel>
#include <QSet>
#include <QMap>
#include <QSharedPointer>

#include <repos/entities/emoji.h>



class EmojisModel: public QAbstractListModel
{
        Q_OBJECT
        Q_PROPERTY( QString currentCategory READ currentCategory WRITE setCurrentCategory NOTIFY currentCategoryChanged )
    public:
        enum class EmojiRoles : int {
            emojiText = Qt::UserRole,
            image,
            category,
            order,
            custom
        };

        EmojisModel();
        int rowCount( const QModelIndex &parent = QModelIndex() ) const;
        QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;
        QString currentCategory() const;
        void setCurrentCategory( const QString &currentCategory );

    public slots:
Armin Felder's avatar
Armin Felder committed
        void addEmoji( const QSharedPointer<Emoji> &pEmoji );
        void addEmojisByCategory( const QString &pCategory, const QList<QSharedPointer<Emoji>> &pList );
Armin Felder's avatar
d
Armin Felder committed
        void clear();
    protected:
        QHash<int, QByteArray> roleNames() const;
        QString mCurrentCategory;
        QSet<QString> mDuplicateCheck;
        QMap<QString, QList<QSharedPointer<Emoji>>> mData;
    signals:
        void currentCategoryChanged( void );

};

#endif // EMOJISMODEL_H