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