┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2011-08-30 13:10:38 +0200
committerFrank Reininghaus <[email protected]>2011-08-30 18:22:56 +0200
commit9dc7cd79e7f650ccf57520888c069eef5d03a57f (patch)
tree2065e7b8ce20ee1127a03af618357258c0e6d0b8 /src/kitemviews
parent1e897556b035cf950a8071266d18b3e191d4c7d7 (diff)
KItemListKeyboardSearchManager improvements and unit tests
This commit implements a 'repeated key search' feature, similar to QAbstractItemView, and adds unit tests for keyboard searching.
Diffstat (limited to 'src/kitemviews')
-rw-r--r--src/kitemviews/kitemlistkeyboardsearchmanager.cpp17
-rw-r--r--src/kitemviews/kitemlistkeyboardsearchmanager_p.h4
2 files changed, 15 insertions, 6 deletions
diff --git a/src/kitemviews/kitemlistkeyboardsearchmanager.cpp b/src/kitemviews/kitemlistkeyboardsearchmanager.cpp
index 9552a7582..cefedfc2c 100644
--- a/src/kitemviews/kitemlistkeyboardsearchmanager.cpp
+++ b/src/kitemviews/kitemlistkeyboardsearchmanager.cpp
@@ -45,10 +45,23 @@ void KItemListKeyboardSearchManager::addKeys(const QString& keys)
|| !keyboardTimeWasValid || keys.isEmpty()) {
m_searchedString.clear();
}
- const bool searchFromNextItem = m_searchedString.isEmpty();
+
+ const bool newSearch = m_searchedString.isEmpty();
+
if (!keys.isEmpty()) {
m_searchedString.append(keys);
- emit changeCurrentItem(m_searchedString, searchFromNextItem);
+
+ // Special case:
+ // If the same key is pressed repeatedly, the next item matching that key should be highlighted
+ const QChar firstKey = m_searchedString.length() > 0 ? m_searchedString.at(0) : QChar();
+ const bool sameKey = m_searchedString.length() > 1 && m_searchedString.count(firstKey) == m_searchedString.length();
+
+ // Searching for a matching item should start from the next item if either
+ // 1. a new search is started, or
+ // 2. a 'repeated key' search is done.
+ const bool searchFromNextItem = newSearch || sameKey;
+
+ emit changeCurrentItem(sameKey ? firstKey : m_searchedString, searchFromNextItem);
}
m_keyboardInputTime.start();
}
diff --git a/src/kitemviews/kitemlistkeyboardsearchmanager_p.h b/src/kitemviews/kitemlistkeyboardsearchmanager_p.h
index 3441dd7bc..05de76a8c 100644
--- a/src/kitemviews/kitemlistkeyboardsearchmanager_p.h
+++ b/src/kitemviews/kitemlistkeyboardsearchmanager_p.h
@@ -29,10 +29,6 @@
#include <QString>
#include <QElapsedTimer>
-class KItemListController;
-class QInputMethodEvent;
-class QKeyEvent;
-
/**
* @brief Controls the keyboard searching ability for a KItemListController.
*