From 6ecb1c401851dd1f4e5582ad491a6871710abeb7 Mon Sep 17 00:00:00 2001 From: Serhii Moroz Date: Tue, 2 Aug 2016 12:04:40 +0300 Subject: Locator: Add highlighting of the search text Change-Id: Ia166e9667076e46770a754b626ceb28080139e79 Reviewed-by: Eike Ziller --- src/plugins/macros/macrolocatorfilter.cpp | 34 ++++++++++++++++++------------- 1 file changed, 20 insertions(+), 14 deletions(-) (limited to 'src/plugins/macros') diff --git a/src/plugins/macros/macrolocatorfilter.cpp b/src/plugins/macros/macrolocatorfilter.cpp index 7f210f4178..a631eafd54 100644 --- a/src/plugins/macros/macrolocatorfilter.cpp +++ b/src/plugins/macros/macrolocatorfilter.cpp @@ -54,26 +54,32 @@ QList MacroLocatorFilter::matchesFor(QFutureInterface< QList goodEntries; QList betterEntries; - const Qt::CaseSensitivity caseSensitivity_ = caseSensitivity(entry); + const Qt::CaseSensitivity entryCaseSensitivity = caseSensitivity(entry); const QMap ¯os = MacroManager::macros(); QMapIterator it(macros); while (it.hasNext()) { it.next(); - QString name = it.key(); - - QList *category = 0; - if (name.startsWith(entry, caseSensitivity_)) - category = &betterEntries; - else if (name.contains(entry, caseSensitivity_)) - category = &goodEntries; - - if (category) { - QVariant id; - Core::LocatorFilterEntry entry(this, it.key(), id, m_icon); - entry.extraInfo = it.value()->description(); - category->append(entry); + const QString displayName = it.key(); + const QString description = it.value()->description(); + + int index = displayName.indexOf(entry, 0, entryCaseSensitivity); + Core::LocatorFilterEntry::HighlightInfo::DataType hDataType = Core::LocatorFilterEntry::HighlightInfo::DisplayName; + if (index < 0) { + index = description.indexOf(entry, 0, entryCaseSensitivity); + hDataType = Core::LocatorFilterEntry::HighlightInfo::ExtraInfo; + } + + if (index >= 0) { + Core::LocatorFilterEntry filterEntry(this, displayName, QVariant(), m_icon); + filterEntry.extraInfo = description; + filterEntry.highlightInfo = Core::LocatorFilterEntry::HighlightInfo(index, entry.length(), hDataType); + + if (index == 0) + betterEntries.append(filterEntry); + else + goodEntries.append(filterEntry); } } betterEntries.append(goodEntries); -- cgit v1.2.1