summary refs log tree commit diff
path: root/src/CompletionProxyModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/CompletionProxyModel.cpp')
-rw-r--r--src/CompletionProxyModel.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/CompletionProxyModel.cpp b/src/CompletionProxyModel.cpp

index a6759978..45b44fca 100644 --- a/src/CompletionProxyModel.cpp +++ b/src/CompletionProxyModel.cpp
@@ -19,6 +19,7 @@ CompletionProxyModel::CompletionProxyModel(QAbstractItemModel *model, setSourceModel(model); QRegularExpression splitPoints("\\s+|-"); + // insert all the full texts for (int i = 0; i < sourceModel()->rowCount(); i++) { if (i < 7) mapping.push_back(i); @@ -29,6 +30,19 @@ CompletionProxyModel::CompletionProxyModel(QAbstractItemModel *model, .toLower(); trie_.insert(string1.toUcs4(), i); + auto string2 = sourceModel() + ->data(sourceModel()->index(i, 0), CompletionModel::SearchRole2) + .toString() + .toLower(); + } + + // insert the partial matches + for (int i = 0; i < sourceModel()->rowCount(); i++) { + auto string1 = sourceModel() + ->data(sourceModel()->index(i, 0), CompletionModel::SearchRole) + .toString() + .toLower(); + for (const auto &e : string1.split(splitPoints)) { if (!e.isEmpty()) // NOTE(Nico): Use Qt::SkipEmptyParts in Qt 5.14 trie_.insert(e.toUcs4(), i); @@ -40,7 +54,6 @@ CompletionProxyModel::CompletionProxyModel(QAbstractItemModel *model, .toLower(); if (!string2.isEmpty()) { - trie_.insert(string2.toUcs4(), i); for (const auto &e : string2.split(splitPoints)) { if (!e.isEmpty()) // NOTE(Nico): Use Qt::SkipEmptyParts in Qt 5.14 trie_.insert(e.toUcs4(), i); @@ -55,7 +68,7 @@ CompletionProxyModel::CompletionProxyModel(QAbstractItemModel *model, [this](QString s) { s.remove(":"); s.remove("@"); - searchString = s.toLower(); + searchString_ = s.toLower(); invalidate(); }, Qt::QueuedConnection); @@ -64,7 +77,7 @@ CompletionProxyModel::CompletionProxyModel(QAbstractItemModel *model, void CompletionProxyModel::invalidate() { - auto key = searchString.toUcs4(); + auto key = searchString_.toUcs4(); beginResetModel(); mapping = trie_.search(key, 7, maxMistakes_); endResetModel();