Use one CompletionProxy for everything including EmojiPicker
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;
-}
|