summary refs log tree commit diff
path: root/src/emoji/EmojiModel.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-04-18 20:21:03 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2021-04-18 21:53:39 +0200
commitc2e625756ce74b2691ec10fc7c67d0920b6749ac (patch)
tree89b92cf4c1b043788fc3a30e2a2af6036c79f179 /src/emoji/EmojiModel.cpp
parentPrevent warning on empty user requests (diff)
downloadnheko-c2e625756ce74b2691ec10fc7c67d0920b6749ac.tar.xz
Use one CompletionProxy for everything including EmojiPicker
Diffstat (limited to 'src/emoji/EmojiModel.cpp')
-rw-r--r--src/emoji/EmojiModel.cpp70
1 files changed, 14 insertions, 56 deletions
diff --git a/src/emoji/EmojiModel.cpp b/src/emoji/EmojiModel.cpp

index 70b85934..66e7aeda 100644 --- a/src/emoji/EmojiModel.cpp +++ b/src/emoji/EmojiModel.cpp
@@ -11,6 +11,20 @@ using namespace emoji; +int +EmojiModel::categoryToIndex(int category) +{ + auto dist = std::distance(Provider::emoji.begin(), + std::lower_bound(Provider::emoji.begin(), + Provider::emoji.end(), + static_cast<Emoji::Category>(category), + [](const struct Emoji &e, Emoji::Category c) { + return e.category < c; + })); + + return static_cast<int>(dist); +} + QHash<int, QByteArray> EmojiModel::roleNames() const { @@ -60,59 +74,3 @@ EmojiModel::data(const QModelIndex &index, int role) const return {}; } - -EmojiProxyModel::EmojiProxyModel(QObject *parent) - : QSortFilterProxyModel(parent) -{} - -EmojiProxyModel::~EmojiProxyModel() {} - -Emoji::Category -EmojiProxyModel::category() const -{ - return category_; -} - -void -EmojiProxyModel::setCategory(Emoji::Category cat) -{ - if (category_ == cat) { - return; - } - - category_ = cat; - emit categoryChanged(); - - invalidateFilter(); -} - -QString -EmojiProxyModel::filter() const -{ - return filterRegExp().pattern(); -} - -void -EmojiProxyModel::setFilter(const QString &filter) -{ - if (filterRegExp().pattern() == filter) { - return; - } - - setFilterWildcard(filter); - emit filterChanged(); -} - -bool -EmojiProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const -{ - const QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent); - const Emoji emoji = index.data(static_cast<int>(EmojiModel::Roles::Emoji)).value<Emoji>(); - - // TODO: Add favorites / recently used - if (category_ != Emoji::Category::Search) { - return emoji.category == category_; - } - - return filterRegExp().isEmpty() ? true : filterRegExp().indexIn(emoji.shortName) != -1; -}