X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/5e123c68d7717558db354bd045bf334f0904f7d2..d48b733:/src/search/dolphinsearchbox.h diff --git a/src/search/dolphinsearchbox.h b/src/search/dolphinsearchbox.h index 93c033bb8..a80617476 100644 --- a/src/search/dolphinsearchbox.h +++ b/src/search/dolphinsearchbox.h @@ -1,6 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Peter Penz * - * Copyright (C) 2009 by Matthias Fuchs * + * Copyright (C) 2010 by Peter Penz * * * * 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 * @@ -17,80 +16,167 @@ * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ + #ifndef DOLPHINSEARCHBOX_H #define DOLPHINSEARCHBOX_H +#include #include -#include - -class KLineEdit; -class KUrl; -class QCompleter; -class QModelIndex; -class QStandardItemModel; +class DolphinFacetsWidget; +class QLineEdit; +class KSeparator; class QToolButton; +class QScrollArea; +class QLabel; +class QVBoxLayout; /** - * @brief used for completition for the DolphinSearchBox - */ -class DolphinSearchCompleter : public QObject -{ - Q_OBJECT - public: - DolphinSearchCompleter(KLineEdit *linedit); - - public slots: - void highlighted(const QModelIndex& index); - void activated(const QModelIndex& index); - void slotTextEdited(const QString &text); - - private: - void addCompletionItem(const QString& displayed, const QString& usedForCompletition, const QString& description = QString(), const QString& toolTip = QString(), const KIcon& icon = KIcon()); - - void findText(int* wordStart, int* wordEnd, QString* newWord, int cursorPos, const QString &input); - - private: - KLineEdit* q; - QCompleter* m_completer; - QStandardItemModel* m_completionModel; - QString m_userText; - int m_wordStart; - int m_wordEnd; -}; - -/** - * @brief Input box for searching files with Nepomuk. + * @brief Input box for searching files with or without Baloo. + * + * The widget allows to specify: + * - Where to search: Everywhere or below the current directory + * - What to search: Filenames or content + * + * If Baloo is available and the current folder is indexed, further + * options are offered. */ -class DolphinSearchBox : public QWidget -{ +class DolphinSearchBox : public QWidget { Q_OBJECT public: - DolphinSearchBox(QWidget* parent = 0); + explicit DolphinSearchBox(QWidget* parent = 0); virtual ~DolphinSearchBox(); + /** + * Sets the text that should be used as input for + * searching. + */ + void setText(const QString& text); + + /** + * Returns the text that should be used as input + * for searching. + */ + QString text() const; + + /** + * Sets the current path that is used as root for + * searching files, if "From Here" has been selected. + */ + void setSearchPath(const QUrl& url); + QUrl searchPath() const; + + /** @return URL that will start the searching of files. */ + QUrl urlForSearching() const; + + /** + * Extracts information from the given search \a url to + * initialize the search box properly. + */ + void fromSearchUrl(const QUrl& url); + + /** + * Selects the whole text of the search box. + */ + void selectAll(); + + /** + * Set the search box to the active mode, if \a active + * is true. The active mode is default. The inactive mode only differs + * visually from the active mode, no change of the behavior is given. + * + * Using the search box in the inactive mode is useful when having split views, + * where the inactive view is indicated by an search box visually. + */ + void setActive(bool active); + + /** + * @return True, if the search box is in the active mode. + * @see DolphinSearchBox::setActive() + */ + bool isActive() const; + protected: - virtual bool event(QEvent* event); - virtual bool eventFilter(QObject* watched, QEvent* event); + virtual bool event(QEvent* event) Q_DECL_OVERRIDE; + virtual void showEvent(QShowEvent* event) Q_DECL_OVERRIDE; + virtual void keyReleaseEvent(QKeyEvent* event) Q_DECL_OVERRIDE; + virtual bool eventFilter(QObject* obj, QEvent* event) Q_DECL_OVERRIDE; signals: /** - * Is emitted when the user pressed Return or Enter - * and provides the Nepomuk URL that should be used - * for searching. + * Is emitted when a searching should be triggered. + */ + void searchRequest(); + + /** + * Is emitted when the user has changed a character of + * the text that should be used as input for searching. + */ + void searchTextChanged(const QString& text); + + void returnPressed(); + + /** + * Emitted as soon as the search box should get closed. + */ + void closeRequest(); + + /** + * Is emitted, if the searchbox has been activated by + * an user interaction + * @see DolphinSearchBox::setActive() */ - void search(const KUrl& url); + void activated(); private slots: - void emitSearchSignal(); - void slotTextEdited(const QString& text); + void emitSearchRequest(); + void emitCloseRequest(); + void slotConfigurationChanged(); + void slotSearchTextChanged(const QString& text); + void slotReturnPressed(); + void slotFacetsButtonToggled(); + void slotFacetChanged(); private: - KLineEdit* m_searchInput; - QToolButton* m_searchButton; + void initButton(QToolButton* button); + void loadSettings(); + void saveSettings(); + void init(); + + /** + * @return URL that represents the Baloo query for starting the search. + */ + QUrl balooUrlForSearching() const; + + /** + * Extracts information from the given Baloo search \a url to + * initialize the search box properly. + */ + void fromBalooSearchUrl(const QUrl& url); + + void updateFacetsToggleButton(); + +private: + bool m_startedSearching; + bool m_active; + + QVBoxLayout* m_topLayout; + + QLabel* m_searchLabel; + QLineEdit* m_searchInput; + QScrollArea* m_optionsScrollArea; + QToolButton* m_fileNameButton; + QToolButton* m_contentButton; + KSeparator* m_separator; + QToolButton* m_fromHereButton; + QToolButton* m_everywhereButton; + QToolButton* m_facetsToggleButton; + DolphinFacetsWidget* m_facetsWidget; + + QUrl m_searchPath; - DolphinSearchCompleter* m_completer; + QTimer* m_startSearchTimer; }; #endif