make device name filter case insensitive

This commit is contained in:
Michael Zanetti 2019-12-11 11:26:34 +01:00
parent dd56f57205
commit 1ea57cedee
3 changed files with 14 additions and 6 deletions

View File

@ -140,7 +140,7 @@ void CodeCompletion::update()
}
blockText.remove(QRegExp(".*deviceId: \""));
m_model->update(entries);
m_proxy->setFilter(blockText);
m_proxy->setFilter(blockText, false);
emit hint();
return;
}

View File

@ -75,10 +75,11 @@ QString CompletionProxyModel::filter() const
return m_filter;
}
void CompletionProxyModel::setFilter(const QString &filter)
void CompletionProxyModel::setFilter(const QString &filter, bool caseSensitive)
{
if (m_filter != filter) {
if (m_filter != filter || m_filterCaseSensitive != caseSensitive) {
m_filter = filter;
m_filterCaseSensitive = caseSensitive;
emit filterChanged();
invalidateFilter();
emit countChanged();
@ -89,8 +90,14 @@ bool CompletionProxyModel::filterAcceptsRow(int source_row, const QModelIndex &)
{
if (!m_filter.isEmpty()) {
CompletionModel::Entry entry = m_model->get(source_row);
if (!entry.displayText.startsWith(m_filter) && !entry.text.startsWith(m_filter)) {
return false;
if (m_filterCaseSensitive) {
if (!entry.displayText.startsWith(m_filter) && !entry.text.startsWith(m_filter)) {
return false;
}
} else {
if (!entry.displayText.toLower().startsWith(m_filter.toLower()) && !entry.text.toLower().startsWith(m_filter.toLower())) {
return false;
}
}
}
return true;

View File

@ -48,7 +48,7 @@ public:
CompletionModel::Entry get(int index);
QString filter() const;
void setFilter(const QString &filter);
void setFilter(const QString &filter, bool caseSensitive = true);
protected:
bool filterAcceptsRow(int source_row, const QModelIndex &/*source_parent*/) const override;
@ -62,6 +62,7 @@ signals:
private:
CompletionModel *m_model = nullptr;
QString m_filter;
bool m_filterCaseSensitive = true;
};