Newer
Older
#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 ¤tCategory );
public slots:
void addEmoji( const QSharedPointer<Emoji> &pEmoji );
void addEmojisByCategory( const QString &pCategory, const QList<QSharedPointer<Emoji>> &pList );
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