Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qhelpfilterengine.cpp
Go to the documentation of this file.
1
// Copyright (C) 2018 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
5
#
include
"qhelpfilterengine.h"
6
#
include
"qhelpcollectionhandler_p.h"
7
#
include
"qhelpenginecore.h"
8
#
include
"qhelpfilterdata.h"
9
10
#
include
<
QtCore
/
qthread
.
h
>
11
#
include
<
QtCore
/
qversionnumber
.
h
>
12
13
QT_BEGIN_NAMESPACE
14
15
static
const
char
ActiveFilter
[] =
"activeFilter"
;
16
17
class
QHelpFilterEnginePrivate
18
{
19
public
:
20
bool
setup
();
21
22
QHelpFilterEngine *
q
=
nullptr
;
23
QHelpEngineCore *
m_helpEngine
=
nullptr
;
24
QHelpCollectionHandler
*
m_collectionHandler
=
nullptr
;
25
QString
m_currentFilter
;
26
bool
m_needsSetup
=
true
;
27
};
28
29
bool
QHelpFilterEnginePrivate
::
setup
()
30
{
31
if
(!
m_collectionHandler
)
32
return
false
;
33
34
if
(!
m_needsSetup
)
35
return
true
;
36
37
// Prevent endless loop when connected to setupFinished() signal
38
// and using from there QHelpFilterEngine, causing setup() to be
39
// called in turn.
40
m_needsSetup
=
false
;
41
42
if
(!
m_helpEngine
->setupData()) {
43
m_needsSetup
=
true
;
44
return
false
;
45
}
46
47
const
QString filter =
m_collectionHandler
->customValue(
48
QLatin1StringView(
ActiveFilter
), QString()).toString();
49
if
(!filter.isEmpty() && m_collectionHandler->filters().contains(filter))
50
m_currentFilter = filter;
51
52
emit q->filterActivated(m_currentFilter);
53
return
true
;
54
}
55
56
//////////////
57
58
/*!
59
\class QHelpFilterEngine
60
\since 5.13
61
\inmodule QtHelp
62
\brief The QHelpFilterEngine class provides a filtered view of the
63
help contents.
64
65
The filter engine allows the management of filters associated with
66
a QHelpEngineCore instance. The help engine internally creates an
67
instance of the filter engine, which can be accessed by calling
68
QHelpEngineCore::filterEngine(). Therefore, the public constructor
69
of this class is disabled.
70
71
The filters are identified by a filter name string. Filter details are
72
described by the \l QHelpFilterData class.
73
74
The filter engine allows for adding new filters and changing the existing
75
filters' data through the setFilterData() method. An existing filter can
76
be removed through the removeFilter() method.
77
78
Out of the registered filters one can be marked as the active one.
79
The active filter will be used by the associated help engine for returning
80
filtered results of many different functions, such as content, index, or
81
search results. If no filter is marked active, the help engine returns the
82
full results list available.
83
84
The active filter is returned by activeFilter() and it can be changed by
85
setActiveFilter().
86
87
\sa QHelpEngineCore
88
*/
89
90
/*!
91
\fn void QHelpFilterEngine::filterActivated(const QString &newFilter)
92
93
This signal is emitted when the active filter is set. \a newFilter
94
specifies the name of the filter.
95
96
\sa setActiveFilter()
97
*/
98
99
/*!
100
\internal
101
Constructs the filter engine for \a helpEngine.
102
*/
103
QHelpFilterEngine::QHelpFilterEngine(QHelpEngineCore *helpEngine)
104
: QObject(helpEngine),
105
d(
new
QHelpFilterEnginePrivate)
106
{
107
d->q =
this
;
108
d->m_helpEngine = helpEngine;
109
}
110
111
/*!
112
\internal
113
Destroys the existing filter engine.
114
*/
115
QHelpFilterEngine::~QHelpFilterEngine()
116
{
117
delete
d;
118
}
119
120
/*!
121
\internal
122
Sets the \a collectionHandler to be used for this filter engine.
123
*/
124
void
QHelpFilterEngine::setCollectionHandler(QHelpCollectionHandler *collectionHandler)
125
{
126
d->m_collectionHandler = collectionHandler;
127
d->m_currentFilter.clear();
128
d->m_needsSetup =
true
;
129
}
130
131
/*!
132
Returns the map of all the available namespaces as keys
133
together with their associated components as values.
134
*/
135
QMap<QString, QString> QHelpFilterEngine::namespaceToComponent()
const
136
{
137
if
(!d->setup())
138
return
{};
139
return
d->m_collectionHandler->namespaceToComponent();
140
}
141
142
/*!
143
Returns the map of all the available namespaces as keys
144
together with their associated versions as values.
145
*/
146
QMap<QString, QVersionNumber> QHelpFilterEngine::namespaceToVersion()
const
147
{
148
if
(!d->setup())
149
return
{};
150
return
d->m_collectionHandler->namespaceToVersion();
151
}
152
153
/*!
154
Returns the list of all filter names defined inside the filter engine.
155
*/
156
QStringList QHelpFilterEngine::filters()
const
157
{
158
if
(!d->setup())
159
return
{};
160
return
d->m_collectionHandler->filters();
161
}
162
163
/*!
164
Returns the list of all available components defined in all
165
registered documentation files.
166
*/
167
QStringList QHelpFilterEngine::availableComponents()
const
168
{
169
if
(!d->setup())
170
return
{};
171
return
d->m_collectionHandler->availableComponents();
172
}
173
174
/*!
175
\since 5.15
176
177
Returns the list of all available versions defined in all
178
registered documentation files.
179
*/
180
QList<QVersionNumber> QHelpFilterEngine::availableVersions()
const
181
{
182
if
(!d->setup())
183
return
{};
184
return
d->m_collectionHandler->availableVersions();
185
}
186
187
/*!
188
Returns the filter details associated with \a filterName.
189
*/
190
QHelpFilterData QHelpFilterEngine::filterData(
const
QString &filterName)
const
191
{
192
if
(!d->setup())
193
return
{};
194
return
d->m_collectionHandler->filterData(filterName);
195
}
196
197
/*!
198
Changes the existing filter details of the filter identified by
199
\a filterName to \a filterData. If the filter does not exist, a
200
new filter is created.
201
202
Returns \c true if setting the filter succeeded, otherwise returns \c false.
203
*/
204
bool
QHelpFilterEngine::setFilterData(
const
QString &filterName,
const
QHelpFilterData &filterData)
205
{
206
if
(!d->setup())
207
return
false
;
208
return
d->m_collectionHandler->setFilterData(filterName, filterData);
209
}
210
211
/*!
212
Removes the filter identified by \a filterName.
213
214
Returns \c true if removing the filter succeeded, otherwise returns
215
\c false.
216
*/
217
bool
QHelpFilterEngine::removeFilter(
const
QString &filterName)
218
{
219
if
(!d->setup())
220
return
false
;
221
return
d->m_collectionHandler->removeFilter(filterName);
222
}
223
224
/*!
225
Returns the name of the currently active filter.
226
*/
227
QString QHelpFilterEngine::activeFilter()
const
228
{
229
if
(!d->setup())
230
return
{};
231
return
d->m_currentFilter;
232
}
233
234
/*!
235
Changes the currently active filter to \a filterName.
236
237
The active filter is saved in the help collection file, unless
238
the help engine is in \l {QHelpEngineCore::}{readOnly} mode.
239
240
Returns \c true if changing the filter succeeded, otherwise
241
returns \c false.
242
*/
243
bool
QHelpFilterEngine::setActiveFilter(
const
QString &filterName)
244
{
245
if
(!d->setup())
246
return
false
;
247
248
if
(filterName == d->m_currentFilter)
249
return
true
;
250
251
if
(!filterName.isEmpty() && !d->m_collectionHandler->filters().contains(filterName))
252
return
false
;
253
254
d->m_currentFilter = filterName;
255
// A read-only collection keeps the active filter in memory only.
256
if
(!d->m_collectionHandler->isReadOnly())
257
d->m_collectionHandler->setCustomValue(QLatin1StringView(ActiveFilter), d->m_currentFilter);
258
emit filterActivated(d->m_currentFilter);
259
return
true
;
260
}
261
262
/*!
263
Returns the list of all registered documentation namespaces that match
264
the filter identified by \a filterName.
265
*/
266
QStringList QHelpFilterEngine::namespacesForFilter(
const
QString &filterName)
const
267
{
268
if
(!d->setup())
269
return
{};
270
return
d->m_collectionHandler->namespacesForFilter(filterName);
271
}
272
273
/*!
274
\since 5.15
275
276
Returns a sorted list of available indices.
277
The returned list contents depend on the active filter, and therefore only
278
the indices registered for the active filter will be returned.
279
*/
280
QStringList QHelpFilterEngine::indices()
const
281
{
282
return
indices(activeFilter());
283
}
284
285
/*!
286
\since 5.15
287
288
Returns a sorted list of available indices, filtered by \a filterName.
289
The returned list contents depend on the passed filter, and therefore only
290
the indices registered for this filter will be returned.
291
If you want to get all available indices unfiltered,
292
pass empty string as \a filterName.
293
*/
294
QStringList QHelpFilterEngine::indices(
const
QString &filterName)
const
295
{
296
if
(!d->setup())
297
return
{};
298
return
d->m_collectionHandler->indicesForFilter(filterName);
299
}
300
301
QT_END_NAMESPACE
QHelpCollectionHandler
Definition
qhelpcollectionhandler_p.h:38
QHelpFilterEnginePrivate
Definition
qhelpfilterengine.cpp:18
QHelpFilterEnginePrivate::m_currentFilter
QString m_currentFilter
Definition
qhelpfilterengine.cpp:25
QHelpFilterEnginePrivate::q
QHelpFilterEngine * q
Definition
qhelpfilterengine.cpp:22
QHelpFilterEnginePrivate::m_needsSetup
bool m_needsSetup
Definition
qhelpfilterengine.cpp:26
QHelpFilterEnginePrivate::setup
bool setup()
Definition
qhelpfilterengine.cpp:29
QHelpFilterEnginePrivate::m_helpEngine
QHelpEngineCore * m_helpEngine
Definition
qhelpfilterengine.cpp:23
QHelpFilterEnginePrivate::m_collectionHandler
QHelpCollectionHandler * m_collectionHandler
Definition
qhelpfilterengine.cpp:24
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
ActiveFilter
static QT_BEGIN_NAMESPACE const char ActiveFilter[]
Definition
qhelpfilterengine.cpp:15
qttools
src
assistant
help
qhelpfilterengine.cpp
Generated on
for Qt by
1.18.0