From 1ea57cedeea7a68c08dd2c30868e8749ea25a340 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 11 Dec 2019 11:26:34 +0100 Subject: [PATCH] make device name filter case insensitive --- libnymea-app-core/scripting/codecompletion.cpp | 2 +- libnymea-app-core/scripting/completionmodel.cpp | 15 +++++++++++---- libnymea-app-core/scripting/completionmodel.h | 3 ++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/libnymea-app-core/scripting/codecompletion.cpp b/libnymea-app-core/scripting/codecompletion.cpp index 342b0f14..9e5db6a8 100644 --- a/libnymea-app-core/scripting/codecompletion.cpp +++ b/libnymea-app-core/scripting/codecompletion.cpp @@ -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; } diff --git a/libnymea-app-core/scripting/completionmodel.cpp b/libnymea-app-core/scripting/completionmodel.cpp index 0bf401b1..ded569e2 100644 --- a/libnymea-app-core/scripting/completionmodel.cpp +++ b/libnymea-app-core/scripting/completionmodel.cpp @@ -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; diff --git a/libnymea-app-core/scripting/completionmodel.h b/libnymea-app-core/scripting/completionmodel.h index b9fb6f4f..d9ed7384 100644 --- a/libnymea-app-core/scripting/completionmodel.h +++ b/libnymea-app-core/scripting/completionmodel.h @@ -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; };