blob: 9f1ad29525d7de7390a9a09bae881189651cb192 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
|
/*
* SPDX-FileCopyrightText: 2010 Peter Penz <[email protected]>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef DOLPHINSEARCHBOX_H
#define DOLPHINSEARCHBOX_H
#include <QUrl>
#include <QWidget>
class DolphinFacetsWidget;
class DolphinQuery;
class QLineEdit;
class KSeparator;
class QToolButton;
class QScrollArea;
class QLabel;
class QVBoxLayout;
/**
* @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
{
Q_OBJECT
public:
explicit DolphinSearchBox(QWidget *parent = nullptr);
~DolphinSearchBox() override;
/**
* 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 @url is the Home dir, "From Here" is selected instead.
*/
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:
bool event(QEvent *event) override;
void showEvent(QShowEvent *event) override;
void hideEvent(QHideEvent *event) override;
void keyReleaseEvent(QKeyEvent *event) override;
bool eventFilter(QObject *obj, QEvent *event) override;
Q_SIGNALS:
/**
* 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);
/**
* Emitted as soon as the search box should get closed.
*/
void closeRequest();
/**
* Is emitted when the search box should be opened.
*/
void openRequest();
/**
* Is emitted, if the searchbox has been activated by
* an user interaction
* @see DolphinSearchBox::setActive()
*/
void activated();
void focusViewRequest();
private Q_SLOTS:
void emitSearchRequest();
void emitCloseRequest();
void slotConfigurationChanged();
void slotSearchTextChanged(const QString &text);
void slotReturnPressed();
void slotFacetChanged();
void slotSearchSaved();
private:
void initButton(QToolButton *button);
void loadSettings();
void saveSettings();
void init();
/**
* @return URL that represents the Baloo query for starting the search.
*/
QUrl balooUrlForSearching() const;
/**
* Sets the searchbox UI with the parameters established by the \a query
*/
void updateFromQuery(const DolphinQuery &query);
void updateFacetsVisible();
bool isIndexingEnabled() const;
private:
QString queryTitle(const QString &text) const;
bool m_startedSearching;
bool m_active;
QVBoxLayout *m_topLayout;
QLineEdit *m_searchInput;
QAction *m_saveSearchAction;
QScrollArea *m_optionsScrollArea;
QToolButton *m_fileNameButton;
QToolButton *m_contentButton;
KSeparator *m_separator;
QToolButton *m_fromHereButton;
QToolButton *m_everywhereButton;
DolphinFacetsWidget *m_facetsWidget;
QUrl m_searchPath;
QTimer *m_startSearchTimer;
};
#endif
|