1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the Qt Assistant of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 3 requirements
23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24 **
25 ** GNU General Public License Usage
26 ** Alternatively, this file may be used under the terms of the GNU
27 ** General Public License version 2.0 or (at your option) the GNU General
28 ** Public license version 3 or any later version approved by the KDE Free
29 ** Qt Foundation. The licenses are as published by the Free Software
30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31 ** included in the packaging of this file. Please review the following
32 ** information to ensure the GNU General Public License requirements will
33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34 ** https://www.gnu.org/licenses/gpl-3.0.html.
35 **
36 ** $QT_END_LICENSE$
37 **
38 ****************************************************************************/
39
40 #include "collectionconfiguration.h"
41
42 #include <QtHelp/QHelpEngineCore>
43
44 QT_BEGIN_NAMESPACE
45
46 namespace {
47 const QString AboutIconKey(QLatin1String("AboutIcon"));
48 const QString AboutImagesKey(QLatin1String("AboutImages"));
49 const QString AboutMenuTextsKey(QLatin1String("AboutMenuTexts"));
50 const QString AboutTextsKey(QLatin1String("AboutTexts"));
51 const QString ApplicationIconKey(QLatin1String("ApplicationIcon"));
52 const QString CacheDirKey(QLatin1String("CacheDirectory"));
53 const QString CacheDirRelativeToCollectionKey(QLatin1String("CacheDirRelativeToCollection"));
54 const QString CreationTimeKey(QLatin1String("CreationTime"));
55 const QString DefaultHomePageKey(QLatin1String("defaultHomepage"));
56 const QString EnableAddressBarKey(QLatin1String("EnableAddressBar"));
57 const QString EnableDocManagerKey(QLatin1String("EnableDocumentationManager"));
58 const QString EnableFilterKey(QLatin1String("EnableFilterFunctionality"));
59 const QString HideAddressBarKey(QLatin1String("HideAddressBar"));
60 const QString FilterToolbarHiddenKey(QLatin1String("HideFilterFunctionality"));
61 const QString LastPageKey(QLatin1String("LastTabPage"));
62 const QString LastRegisterTime(QLatin1String("LastRegisterTime"));
63 const QString LastShownPagesKey(QLatin1String("LastShownPages"));
64 const QString LastZoomFactorsKey(QLatin1String(
65 #if defined(BROWSER_QTWEBKIT)
66 "LastPagesZoomWebView"
67 #else
68 "LastPagesZoomTextBrowser"
69 #endif
70 ));
71 const QString WindowTitleKey(QLatin1String("WindowTitle"));
72 const QString FullTextSearchFallbackKey(QLatin1String("FullTextSearchFallback"));
73 } // anonymous namespace
74
75 const QString CollectionConfiguration::DefaultZoomFactor(QLatin1String("0.0"));
76 const QString CollectionConfiguration::ListSeparator(QLatin1String("|"));
77
creationTime(const QHelpEngineCore & helpEngine)78 uint CollectionConfiguration::creationTime(const QHelpEngineCore &helpEngine)
79 {
80 return helpEngine.customValue(CreationTimeKey, 0).toUInt();
81 }
82
setCreationTime(QHelpEngineCore & helpEngine,uint time)83 void CollectionConfiguration::setCreationTime(QHelpEngineCore &helpEngine, uint time)
84 {
85 helpEngine.setCustomValue(CreationTimeKey, time);
86 }
87
windowTitle(const QHelpEngineCore & helpEngine)88 const QString CollectionConfiguration::windowTitle(const QHelpEngineCore &helpEngine)
89 {
90 return helpEngine.customValue(WindowTitleKey).toString();
91 }
92
setWindowTitle(QHelpEngineCore & helpEngine,const QString & windowTitle)93 void CollectionConfiguration::setWindowTitle(QHelpEngineCore &helpEngine,
94 const QString &windowTitle)
95 {
96 helpEngine.setCustomValue(WindowTitleKey, windowTitle);
97 }
98
filterFunctionalityEnabled(const QHelpEngineCore & helpEngine)99 bool CollectionConfiguration::filterFunctionalityEnabled(const QHelpEngineCore &helpEngine)
100 {
101 return helpEngine.customValue(EnableFilterKey, true).toBool();
102 }
103
setFilterFunctionalityEnabled(QHelpEngineCore & helpEngine,bool enabled)104 void CollectionConfiguration::setFilterFunctionalityEnabled(QHelpEngineCore &helpEngine,
105 bool enabled)
106 {
107 helpEngine.setCustomValue(EnableFilterKey, enabled);
108 }
109
filterToolbarVisible(const QHelpEngineCore & helpEngine)110 bool CollectionConfiguration::filterToolbarVisible(const QHelpEngineCore &helpEngine)
111 {
112 return !helpEngine.customValue(FilterToolbarHiddenKey, true).toBool();
113 }
114
setFilterToolbarVisible(QHelpEngineCore & helpEngine,bool visible)115 void CollectionConfiguration::setFilterToolbarVisible(QHelpEngineCore &helpEngine,
116 bool visible)
117 {
118 helpEngine.setCustomValue(FilterToolbarHiddenKey, !visible);
119 }
120
addressBarEnabled(const QHelpEngineCore & helpEngine)121 bool CollectionConfiguration::addressBarEnabled(const QHelpEngineCore &helpEngine)
122 {
123 return helpEngine.customValue(EnableAddressBarKey, true).toBool();
124 }
125
setAddressBarEnabled(QHelpEngineCore & helpEngine,bool enabled)126 void CollectionConfiguration::setAddressBarEnabled(QHelpEngineCore &helpEngine,
127 bool enabled)
128 {
129 helpEngine.setCustomValue(EnableAddressBarKey, enabled);
130 }
131
addressBarVisible(const QHelpEngineCore & helpEngine)132 bool CollectionConfiguration::addressBarVisible(const QHelpEngineCore &helpEngine)
133 {
134 return !helpEngine.customValue(HideAddressBarKey, true).toBool();
135 }
136
setAddressBarVisible(QHelpEngineCore & helpEngine,bool visible)137 void CollectionConfiguration::setAddressBarVisible(QHelpEngineCore &helpEngine,
138 bool visible)
139 {
140 helpEngine.setCustomValue(HideAddressBarKey, !visible);
141 }
142
cacheDir(const QHelpEngineCore & helpEngine)143 const QString CollectionConfiguration::cacheDir(const QHelpEngineCore &helpEngine)
144 {
145 return helpEngine.customValue(CacheDirKey).toString();
146 }
147
cacheDirIsRelativeToCollection(const QHelpEngineCore & helpEngine)148 bool CollectionConfiguration::cacheDirIsRelativeToCollection(const QHelpEngineCore &helpEngine)
149 {
150 return helpEngine.customValue(CacheDirRelativeToCollectionKey).toBool();
151 }
152
setCacheDir(QHelpEngineCore & helpEngine,const QString & cacheDir,bool relativeToCollection)153 void CollectionConfiguration::setCacheDir(QHelpEngineCore &helpEngine,
154 const QString &cacheDir, bool relativeToCollection)
155 {
156 helpEngine.setCustomValue(CacheDirKey, cacheDir);
157 helpEngine.setCustomValue(CacheDirRelativeToCollectionKey,
158 relativeToCollection);
159 }
160
documentationManagerEnabled(const QHelpEngineCore & helpEngine)161 bool CollectionConfiguration::documentationManagerEnabled(const QHelpEngineCore &helpEngine)
162 {
163 return helpEngine.customValue(EnableDocManagerKey, true).toBool();
164 }
165
setDocumentationManagerEnabled(QHelpEngineCore & helpEngine,bool enabled)166 void CollectionConfiguration::setDocumentationManagerEnabled(QHelpEngineCore &helpEngine,
167 bool enabled)
168 {
169 helpEngine.setCustomValue(EnableDocManagerKey, enabled);
170 }
171
applicationIcon(const QHelpEngineCore & helpEngine)172 const QByteArray CollectionConfiguration::applicationIcon(const QHelpEngineCore &helpEngine)
173 {
174 return helpEngine.customValue(ApplicationIconKey).toByteArray();
175 }
176
setApplicationIcon(QHelpEngineCore & helpEngine,const QByteArray & icon)177 void CollectionConfiguration::setApplicationIcon(QHelpEngineCore &helpEngine,
178 const QByteArray &icon)
179 {
180 helpEngine.setCustomValue(ApplicationIconKey, icon);
181 }
182
aboutMenuTexts(const QHelpEngineCore & helpEngine)183 const QByteArray CollectionConfiguration::aboutMenuTexts(const QHelpEngineCore &helpEngine)
184 {
185 return helpEngine.customValue(AboutMenuTextsKey).toByteArray();
186 }
187
setAboutMenuTexts(QHelpEngineCore & helpEngine,const QByteArray & texts)188 void CollectionConfiguration::setAboutMenuTexts(QHelpEngineCore &helpEngine,
189 const QByteArray &texts)
190 {
191 helpEngine.setCustomValue(AboutMenuTextsKey, texts);
192 }
193
aboutIcon(const QHelpEngineCore & helpEngine)194 const QByteArray CollectionConfiguration::aboutIcon(const QHelpEngineCore &helpEngine)
195 {
196 return helpEngine.customValue(AboutIconKey).toByteArray();
197 }
198
setAboutIcon(QHelpEngineCore & helpEngine,const QByteArray & icon)199 void CollectionConfiguration::setAboutIcon(QHelpEngineCore &helpEngine,
200 const QByteArray &icon)
201 {
202 helpEngine.setCustomValue(AboutIconKey, icon);
203 }
204
aboutTexts(const QHelpEngineCore & helpEngine)205 const QByteArray CollectionConfiguration::aboutTexts(const QHelpEngineCore &helpEngine)
206 {
207 return helpEngine.customValue(AboutTextsKey).toByteArray();
208 }
209
setAboutTexts(QHelpEngineCore & helpEngine,const QByteArray & texts)210 void CollectionConfiguration::setAboutTexts(QHelpEngineCore &helpEngine,
211 const QByteArray &texts)
212 {
213 helpEngine.setCustomValue(AboutTextsKey, texts);
214 }
215
aboutImages(const QHelpEngineCore & helpEngine)216 const QByteArray CollectionConfiguration::aboutImages(const QHelpEngineCore &helpEngine)
217 {
218 return helpEngine.customValue(AboutImagesKey).toByteArray();
219 }
220
setAboutImages(QHelpEngineCore & helpEngine,const QByteArray & images)221 void CollectionConfiguration::setAboutImages(QHelpEngineCore &helpEngine,
222 const QByteArray &images)
223 {
224 helpEngine.setCustomValue(AboutImagesKey, images);
225 }
226
defaultHomePage(const QHelpEngineCore & helpEngine)227 const QString CollectionConfiguration::defaultHomePage(const QHelpEngineCore &helpEngine)
228 {
229 return helpEngine.customValue(DefaultHomePageKey, QLatin1String("help")).
230 toString();
231 }
232
setDefaultHomePage(QHelpEngineCore & helpEngine,const QString & page)233 void CollectionConfiguration::setDefaultHomePage(QHelpEngineCore &helpEngine,
234 const QString &page)
235 {
236 helpEngine.setCustomValue(DefaultHomePageKey, page);
237 }
238
lastShownPages(const QHelpEngineCore & helpEngine)239 const QStringList CollectionConfiguration::lastShownPages(const QHelpEngineCore &helpEngine)
240 {
241 return helpEngine.customValue(LastShownPagesKey).toString().
242 split(ListSeparator, Qt::SkipEmptyParts);
243 }
244
setLastShownPages(QHelpEngineCore & helpEngine,const QStringList & lastShownPages)245 void CollectionConfiguration::setLastShownPages(QHelpEngineCore &helpEngine,
246 const QStringList &lastShownPages)
247 {
248 helpEngine.setCustomValue(LastShownPagesKey,
249 lastShownPages.join(ListSeparator));
250 }
251
lastZoomFactors(const QHelpEngineCore & helpEngine)252 const QStringList CollectionConfiguration::lastZoomFactors(const QHelpEngineCore &helpEngine)
253 {
254 return helpEngine.customValue(LastZoomFactorsKey).toString().
255 split(ListSeparator, Qt::SkipEmptyParts);
256 }
257
setLastZoomFactors(QHelpEngineCore & helpEngine,const QStringList & lastZoomFactors)258 void CollectionConfiguration::setLastZoomFactors(QHelpEngineCore &helpEngine,
259 const QStringList &lastZoomFactors)
260 {
261 helpEngine.setCustomValue(LastZoomFactorsKey,
262 lastZoomFactors.join(ListSeparator));
263 }
264
lastTabPage(const QHelpEngineCore & helpEngine)265 int CollectionConfiguration::lastTabPage(const QHelpEngineCore &helpEngine)
266 {
267 return helpEngine.customValue(LastPageKey, 1).toInt();
268 }
269
setLastTabPage(QHelpEngineCore & helpEngine,int lastPage)270 void CollectionConfiguration::setLastTabPage(QHelpEngineCore &helpEngine,
271 int lastPage)
272 {
273 helpEngine.setCustomValue(LastPageKey, lastPage);
274 }
275
lastRegisterTime(const QHelpEngineCore & helpEngine)276 const QDateTime CollectionConfiguration::lastRegisterTime(const QHelpEngineCore &helpEngine)
277 {
278 return helpEngine.customValue(LastRegisterTime, QDateTime()).toDateTime();
279 }
280
updateLastRegisterTime(QHelpEngineCore & helpEngine,QDateTime dt)281 void CollectionConfiguration::updateLastRegisterTime(QHelpEngineCore &helpEngine, QDateTime dt)
282 {
283 helpEngine.setCustomValue(LastRegisterTime, dt);
284 }
285
updateLastRegisterTime(QHelpEngineCore & helpEngine)286 void CollectionConfiguration::updateLastRegisterTime(QHelpEngineCore &helpEngine)
287 {
288 updateLastRegisterTime(helpEngine, QDateTime::currentDateTime());
289 }
290
isNewer(const QHelpEngineCore & newer,const QHelpEngineCore & older)291 bool CollectionConfiguration::isNewer(const QHelpEngineCore &newer,
292 const QHelpEngineCore &older)
293 {
294 return creationTime(newer) > creationTime(older);
295 }
296
copyConfiguration(const QHelpEngineCore & source,QHelpEngineCore & target)297 void CollectionConfiguration::copyConfiguration(const QHelpEngineCore &source,
298 QHelpEngineCore &target)
299 {
300 setCreationTime(target, creationTime(source));
301 setWindowTitle(target, windowTitle(source));
302 target.setCurrentFilter(source.currentFilter());
303 setCacheDir(target, cacheDir(source), cacheDirIsRelativeToCollection(source));
304 setFilterFunctionalityEnabled(target, filterFunctionalityEnabled(source));
305 setFilterToolbarVisible(target, filterToolbarVisible(source));
306 setAddressBarEnabled(target, addressBarEnabled(source));
307 setAddressBarVisible(target, addressBarVisible(source));
308 setDocumentationManagerEnabled(target, documentationManagerEnabled(source));
309 setApplicationIcon(target, applicationIcon(source));
310 setAboutMenuTexts(target, aboutMenuTexts(source));
311 setAboutIcon(target, aboutIcon(source));
312 setAboutTexts(target, aboutTexts(source));
313 setAboutImages(target, aboutImages(source));
314 setDefaultHomePage(target, defaultHomePage(source));
315 setFullTextSearchFallbackEnabled(target, fullTextSearchFallbackEnabled(source));
316 }
317
fullTextSearchFallbackEnabled(const QHelpEngineCore & helpEngine)318 bool CollectionConfiguration:: fullTextSearchFallbackEnabled(
319 const QHelpEngineCore &helpEngine)
320 {
321 return helpEngine.customValue(FullTextSearchFallbackKey, false).toBool();
322 }
323
setFullTextSearchFallbackEnabled(QHelpEngineCore & helpEngine,bool on)324 void CollectionConfiguration::setFullTextSearchFallbackEnabled(
325 QHelpEngineCore &helpEngine, bool on)
326 {
327 helpEngine.setCustomValue(FullTextSearchFallbackKey, on);
328 }
329
330 QT_END_NAMESPACE
331