#include "kitemlistkeyboardsearchmanager.h"
-KItemListKeyboardSearchManager::KItemListKeyboardSearchManager(QObject* parent) :
- QObject(parent),
- m_isSearchRestarted(false),
- m_timeout(1000)
+KItemListKeyboardSearchManager::KItemListKeyboardSearchManager(QObject *parent)
+ : QObject(parent)
+ , m_timeout(1000)
{
m_keyboardInputTime.invalidate();
}
return (keyboardInputTimeElapsed > m_timeout) || !keyboardTimeWasValid;
}
-void KItemListKeyboardSearchManager::addKeys(const QString& keys)
+bool KItemListKeyboardSearchManager::isSearchAsYouTypeActive() const
+{
+ return !m_searchedString.isEmpty() && !m_keyboardInputTime.hasExpired(m_timeout);
+}
+
+void KItemListKeyboardSearchManager::addKeys(const QString &keys)
{
if (shouldClearSearchIfInputTimeReached()) {
m_searchedString.clear();
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 and a search has not been restarted or
+ // 1. a new search is started, or
// 2. a 'repeated key' search is done.
- const bool searchFromNextItem = (!m_isSearchRestarted && newSearch) || sameKey;
-
- // to remember not to searchFromNextItem if selection was deselected
- // losing keyboard search context basically
- m_isSearchRestarted = false;
+ const bool searchFromNextItem = newSearch || sameKey;
Q_EMIT changeCurrentItem(sameKey ? firstKey : m_searchedString, searchFromNextItem);
}
void KItemListKeyboardSearchManager::cancelSearch()
{
- m_isSearchRestarted = true;
m_searchedString.clear();
}
}
}
-void KItemListKeyboardSearchManager::slotSelectionChanged(const KItemSet& current, const KItemSet& previous)
+void KItemListKeyboardSearchManager::slotSelectionChanged(const KItemSet ¤t, const KItemSet &previous)
{
if (!previous.isEmpty() && current.isEmpty() && previous.count() > 0 && current.count() == 0) {
// The selection has been emptied. We should cancel the search.
cancelSearch();
}
}
+
+#include "moc_kitemlistkeyboardsearchmanager.cpp"