X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/2e6450da1cc62c0c8ad6f868becf0fa4a1f32022..38c34eeca315c7be58e65d4d3fb72aaf7b866719:/src/kitemviews/private/kitemlistkeyboardsearchmanager.h diff --git a/src/kitemviews/private/kitemlistkeyboardsearchmanager.h b/src/kitemviews/private/kitemlistkeyboardsearchmanager.h index 02dedefca..d370bc9ba 100644 --- a/src/kitemviews/private/kitemlistkeyboardsearchmanager.h +++ b/src/kitemviews/private/kitemlistkeyboardsearchmanager.h @@ -1,33 +1,20 @@ -/*************************************************************************** - * Copyright (C) 2011 by Tirtha Chatterjee * - * * - * Based on the Itemviews NG project from Trolltech Labs: * - * http://qt.gitorious.org/qt-labs/itemviews-ng * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ +/* + * SPDX-FileCopyrightText: 2011 Tirtha Chatterjee + * + * Based on the Itemviews NG project from Trolltech Labs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #ifndef KITEMLISTKEYBOARDSEARCHMANAGER_H #define KITEMLISTKEYBOARDSEARCHMANAGER_H #include "dolphin_export.h" +#include "kitemviews/kitemset.h" +#include #include #include -#include /** * @brief Controls the keyboard searching ability for a KItemListController. @@ -40,14 +27,18 @@ class DOLPHIN_EXPORT KItemListKeyboardSearchManager : public QObject Q_OBJECT public: - - KItemListKeyboardSearchManager(QObject* parent = nullptr); + explicit KItemListKeyboardSearchManager(QObject *parent = nullptr); ~KItemListKeyboardSearchManager() override; /** * Add \a keys to the text buffer used for searching. */ - void addKeys(const QString& keys); + void addKeys(const QString &keys); + /** + * @returns true if the next call to addKeys() will trigger a new search. + * Returns false if the next added key char will be added to the search string that was used previously. + */ + bool addKeyBeginsNewSearch() const; /** * Sets the delay after which the search is cancelled to \a milliseconds. @@ -60,11 +51,12 @@ public: void cancelSearch(); -public slots: +public Q_SLOTS: void slotCurrentChanged(int current, int previous); + void slotSelectionChanged(const KItemSet ¤t, const KItemSet &previous); -signals: +Q_SIGNALS: /** * Is emitted if the current item should be changed corresponding * to \a text. @@ -73,15 +65,19 @@ signals: * current item. */ // TODO: Think about getting rid of the bool parameter - // (see http://doc.qt.nokia.com/qq/qq13-apis.html#thebooleanparametertrap) - void changeCurrentItem(const QString& string, bool searchFromNextItem); + // (see https://doc.qt.io/archives/qq/qq13-apis.html#thebooleanparametertrap) + void changeCurrentItem(const QString &string, bool searchFromNextItem); + +private: + bool shouldClearSearchIfInputTimeReached(); private: QString m_searchedString; + bool m_isSearchRestarted; + /** Measures the time since the last key press. */ QElapsedTimer m_keyboardInputTime; + /** Time in milliseconds in which a key press is considered as a continuation of the previous search input. */ qint64 m_timeout; }; #endif - -