summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swift/Controllers/ContactSuggester.cpp14
-rw-r--r--Swift/QtUI/UserSearch/QtUserSearchWindow.cpp2
2 files changed, 10 insertions, 6 deletions
diff --git a/Swift/Controllers/ContactSuggester.cpp b/Swift/Controllers/ContactSuggester.cpp
index 09a1567..42e8308 100644
--- a/Swift/Controllers/ContactSuggester.cpp
+++ b/Swift/Controllers/ContactSuggester.cpp
@@ -63,13 +63,17 @@ std::vector<Contact::ref> ContactSuggester::getSuggestions(const std::string& se
}
bool ContactSuggester::fuzzyMatch(std::string text, std::string match) {
- for (std::string::iterator currentQueryChar = match.begin(); currentQueryChar != match.end(); currentQueryChar++) {
- //size_t result = text.find(*currentQueryChar);
- std::string::iterator result = boost::algorithm::ifind_first(text, std::string(currentQueryChar, currentQueryChar+1)).begin();
- if (result == text.end()) {
+ std::string lowerText = text;
+ boost::algorithm::to_lower(lowerText);
+ std::string lowerMatch = match;
+ boost::algorithm::to_lower(lowerMatch);
+ size_t lastMatch = 0;
+ for (size_t i = 0; i < lowerMatch.length(); ++i) {
+ size_t where = lowerText.find_first_of(lowerMatch[i], lastMatch);
+ if (where == std::string::npos) {
return false;
}
- text.erase(result);
+ lastMatch = where + 1;
}
return true;
}
diff --git a/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp b/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp
index ca84759..e309265 100644
--- a/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp
+++ b/Swift/QtUI/UserSearch/QtUserSearchWindow.cpp
@@ -245,7 +245,7 @@ JID QtUserSearchWindow::getContactJID() const {
if (userItem) { /* Remember to leave this if we change to dynamic cast */
jid = userItem->getJID();
}
- } else {
+ } else if (dynamic_cast<QtFormResultItemModel*>(model_)) {
int row = resultsPage_->results_->currentIndex().row();
Form::FormItem item = dynamic_cast<QtFormResultItemModel*>(model_)->getForm()->getItems().at(row);