summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@nokia.com>2009-11-24 12:58:13 (GMT)
committerMorten Johan Sørvig <morten.sorvig@nokia.com>2009-11-24 12:58:13 (GMT)
commitc086dc9056ee9777938026aec47dccb239a328a7 (patch)
treee0170f0236f4d67920e14ce80e7b4028408d7650
parenta51ccecc887c38fe9d067e52ca99d3ec78e64c2a (diff)
parentaf651b725ea2a666bff20a749d40549820a62050 (diff)
downloadQt-c086dc9056ee9777938026aec47dccb239a328a7.zip
Qt-c086dc9056ee9777938026aec47dccb239a328a7.tar.gz
Qt-c086dc9056ee9777938026aec47dccb239a328a7.tar.bz2
Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt
-rw-r--r--tools/assistant/tools/assistant/assistant.pro115
-rw-r--r--tools/assistant/tools/assistant/bookmarkmanager.cpp6
-rw-r--r--tools/assistant/tools/assistant/centralwidget.cpp78
-rw-r--r--tools/assistant/tools/assistant/helpviewer.cpp35
-rw-r--r--tools/assistant/tools/assistant/main.cpp97
-rw-r--r--tools/assistant/tools/assistant/mainwindow.cpp125
-rw-r--r--tools/assistant/tools/assistant/mainwindow.h3
-rw-r--r--tools/assistant/tools/assistant/preferencesdialog.cpp108
-rw-r--r--tools/assistant/tools/assistant/preferencesdialog.h5
-rw-r--r--tools/assistant/tools/assistant/qtdocinstaller.cpp38
-rw-r--r--tools/assistant/tools/assistant/qtdocinstaller.h4
-rw-r--r--tools/assistant/tools/assistant/remotecontrol.cpp22
-rw-r--r--tools/assistant/tools/assistant/remotecontrol.h5
-rw-r--r--tools/assistant/tools/qcollectiongenerator/main.cpp50
-rw-r--r--tools/assistant/tools/qcollectiongenerator/qcollectiongenerator.pro19
-rw-r--r--tools/assistant/tools/shared/collectionconfiguration.cpp509
-rw-r--r--tools/assistant/tools/shared/collectionconfiguration.h198
17 files changed, 1041 insertions, 376 deletions
diff --git a/tools/assistant/tools/assistant/assistant.pro b/tools/assistant/tools/assistant/assistant.pro
index 4b69060..81677c3 100644
--- a/tools/assistant/tools/assistant/assistant.pro
+++ b/tools/assistant/tools/assistant/assistant.pro
@@ -1,88 +1,75 @@
include($$QT_SOURCE_TREE/tools/shared/fontpanel/fontpanel.pri)
-
TEMPLATE = app
LANGUAGE = C++
TARGET = assistant
-
-contains(QT_CONFIG, webkit) {
- QT += webkit
-}
-
-CONFIG += qt warn_on help
-
+contains(QT_CONFIG, webkit):QT += webkit
+CONFIG += qt \
+ warn_on \
+ help
QT += network
-
PROJECTNAME = Assistant
DESTDIR = ../../../../bin
-
-target.path=$$[QT_INSTALL_BINS]
+target.path = $$[QT_INSTALL_BINS]
INSTALLS += target
-### Work around a qmake issue when statically linking to
-### not-yet-installed plugins
+# ## Work around a qmake issue when statically linking to
+# ## not-yet-installed plugins
LIBS += -L$$QT_BUILD_TREE/plugins/sqldrivers
-
HEADERS += helpviewer.h \
- mainwindow.h \
- indexwindow.h \
- topicchooser.h \
- contentwindow.h \
- searchwidget.h \
- preferencesdialog.h \
- filternamedialog.h \
- centralwidget.h \
- installdialog.h \
- bookmarkmanager.h \
- remotecontrol.h \
- cmdlineparser.h \
- aboutdialog.h \
- qtdocinstaller.h \
- xbelsupport.h
-
-win32 {
- HEADERS += remotecontrol_win.h
-}
-
+ mainwindow.h \
+ indexwindow.h \
+ topicchooser.h \
+ contentwindow.h \
+ searchwidget.h \
+ preferencesdialog.h \
+ filternamedialog.h \
+ centralwidget.h \
+ installdialog.h \
+ bookmarkmanager.h \
+ remotecontrol.h \
+ cmdlineparser.h \
+ aboutdialog.h \
+ qtdocinstaller.h \
+ xbelsupport.h \
+ ../shared/collectionconfiguration.h
+win32:HEADERS += remotecontrol_win.h
SOURCES += helpviewer.cpp \
- main.cpp \
- mainwindow.cpp \
- indexwindow.cpp \
- topicchooser.cpp \
- contentwindow.cpp \
- searchwidget.cpp \
- preferencesdialog.cpp \
- filternamedialog.cpp \
- centralwidget.cpp \
- installdialog.cpp \
- bookmarkmanager.cpp \
- remotecontrol.cpp \
- cmdlineparser.cpp \
- aboutdialog.cpp \
- qtdocinstaller.cpp \
- xbelsupport.cpp
-
+ main.cpp \
+ mainwindow.cpp \
+ indexwindow.cpp \
+ topicchooser.cpp \
+ contentwindow.cpp \
+ searchwidget.cpp \
+ preferencesdialog.cpp \
+ filternamedialog.cpp \
+ centralwidget.cpp \
+ installdialog.cpp \
+ bookmarkmanager.cpp \
+ remotecontrol.cpp \
+ cmdlineparser.cpp \
+ aboutdialog.cpp \
+ qtdocinstaller.cpp \
+ xbelsupport.cpp \
+ ../shared/collectionconfiguration.cpp
FORMS += topicchooser.ui \
- preferencesdialog.ui \
- filternamedialog.ui \
- installdialog.ui \
- bookmarkdialog.ui
-
-RESOURCES += assistant.qrc assistant_images.qrc
-
-win32 {
+ preferencesdialog.ui \
+ filternamedialog.ui \
+ installdialog.ui \
+ bookmarkdialog.ui
+RESOURCES += assistant.qrc \
+ assistant_images.qrc
+win32 {
!wince*:LIBS += -lshell32
RC_FILE = assistant.rc
}
-
-mac {
+mac {
ICON = assistant.icns
TARGET = Assistant
QMAKE_INFO_PLIST = Info_mac.plist
}
-
-contains(CONFIG, static): {
+contains(CONFIG, static): {
SQLPLUGINS = $$unique(sql-plugins)
- contains(SQLPLUGINS, sqlite): {
+ contains(SQLPLUGINS, sqlite): {
QTPLUGIN += qsqlite
DEFINES += USE_STATIC_SQLITE_PLUGIN
}
diff --git a/tools/assistant/tools/assistant/bookmarkmanager.cpp b/tools/assistant/tools/assistant/bookmarkmanager.cpp
index 7c7029a..03fff96 100644
--- a/tools/assistant/tools/assistant/bookmarkmanager.cpp
+++ b/tools/assistant/tools/assistant/bookmarkmanager.cpp
@@ -41,6 +41,7 @@
#include "bookmarkmanager.h"
#include "centralwidget.h"
+#include "../shared/collectionconfiguration.h"
#include <QtGui/QMenu>
#include <QtGui/QIcon>
@@ -662,7 +663,7 @@ void BookmarkManager::saveBookmarks()
QDataStream stream(&bookmarks, QIODevice::WriteOnly);
readBookmarksRecursive(treeModel->invisibleRootItem(), stream, 0);
- helpEngine->setCustomValue(QLatin1String("Bookmarks"), bookmarks);
+ CollectionConfiguration::setBookmarks(*helpEngine, bookmarks);
}
QStringList BookmarkManager::bookmarkFolders() const
@@ -814,8 +815,7 @@ void BookmarkManager::setupBookmarkModels()
QList<int> lastDepths;
QList<QStandardItem*> parents;
- QByteArray ba =
- helpEngine->customValue(QLatin1String("Bookmarks")).toByteArray();
+ QByteArray ba = CollectionConfiguration::bookmarks(*helpEngine);
QDataStream stream(ba);
while (!stream.atEnd()) {
stream >> depth >> name >> type >> expanded;
diff --git a/tools/assistant/tools/assistant/centralwidget.cpp b/tools/assistant/tools/assistant/centralwidget.cpp
index 1c62954..f8b8c44 100644
--- a/tools/assistant/tools/assistant/centralwidget.cpp
+++ b/tools/assistant/tools/assistant/centralwidget.cpp
@@ -44,6 +44,7 @@
#include "searchwidget.h"
#include "mainwindow.h"
#include "preferencesdialog.h"
+#include "../shared/collectionconfiguration.h"
#include <QtCore/QDir>
#include <QtCore/QEvent>
@@ -296,28 +297,23 @@ CentralWidget::~CentralWidget()
if (!engine.setupData())
return;
- QString zoomCount;
- QString currentPages;
- QLatin1Char separator('|');
+ QStringList zoomFactors;
+ QStringList currentPages;
bool searchAttached = m_searchWidget->isAttached();
int i = searchAttached ? 1 : 0;
for (; i < tabWidget->count(); ++i) {
HelpViewer *viewer = qobject_cast<HelpViewer*>(tabWidget->widget(i));
if (viewer && viewer->source().isValid()) {
- currentPages += viewer->source().toString() + separator;
- zoomCount += QString::number(viewer->zoom()) + separator;
+ currentPages << viewer->source().toString();
+ zoomFactors << QString::number(viewer->zoom());
}
}
- engine.setCustomValue(QLatin1String("LastTabPage"), lastTabPage);
- engine.setCustomValue(QLatin1String("LastShownPages"), currentPages);
- engine.setCustomValue(QLatin1String("SearchWasAttached"), searchAttached);
-#if !defined(QT_NO_WEBKIT)
- engine.setCustomValue(QLatin1String("LastPagesZoomWebView"), zoomCount);
-#else
- engine.setCustomValue(QLatin1String("LastPagesZoomTextBrowser"), zoomCount);
-#endif
+ CollectionConfiguration::setLastTabPage(engine, lastTabPage);
+ CollectionConfiguration::setLastShownPages(engine, currentPages);
+ CollectionConfiguration::setSearchWasAttached(engine, searchAttached);
+ CollectionConfiguration::setLastZoomFactors(engine, zoomFactors);
}
CentralWidget *CentralWidget::instance()
@@ -427,16 +423,14 @@ void CentralWidget::setSource(const QUrl &url)
void CentralWidget::setupWidget()
{
- int option = helpEngine->customValue(QLatin1String("StartOption"),
- ShowLastPages).toInt();
-
+ int option = CollectionConfiguration::startOption(*helpEngine);
if (option != ShowLastPages) {
QString homePage;
if (option == ShowHomePage) {
- homePage = helpEngine->customValue(QLatin1String("defaultHomepage"),
- QLatin1String("help")).toString();
- homePage = helpEngine->customValue(QLatin1String("homepage"),
- homePage).toString();
+ // TODO: Can this fall-back logic go into the wrapper class?
+ homePage = CollectionConfiguration::homePage(*helpEngine);
+ if (homePage.isEmpty())
+ homePage = CollectionConfiguration::defaultHomePage(*helpEngine);
}
if (option == ShowBlankPage)
homePage = QLatin1String("about:blank");
@@ -448,11 +442,8 @@ void CentralWidget::setupWidget()
void CentralWidget::setLastShownPages()
{
- const QLatin1String key("LastShownPages");
- QString value = helpEngine->customValue(key, QString()).toString();
- const QStringList lastShownPageList = value.split(QLatin1Char('|'),
- QString::SkipEmptyParts);
-
+ const QStringList lastShownPageList =
+ CollectionConfiguration::lastShownPages(*helpEngine);
const int pageCount = lastShownPageList.count();
if (pageCount == 0) {
if (usesDefaultCollection)
@@ -462,37 +453,27 @@ void CentralWidget::setLastShownPages()
return;
}
-#if !defined(QT_NO_WEBKIT)
- const QLatin1String zoom("LastPagesZoomWebView");
-#else
- const QLatin1String zoom("LastPagesZoomTextBrowser");
-#endif
-
- value = helpEngine->customValue(zoom, QString()).toString();
- QVector<QString> zoomVector = value.split(QLatin1Char('|'),
- QString::SkipEmptyParts).toVector();
-
- const int zoomCount = zoomVector.count();
- zoomVector.insert(zoomCount, pageCount - zoomCount, QLatin1String("0.0"));
+ QStringList zoomFactors =
+ CollectionConfiguration::lastZoomFactors(*helpEngine);
+ while (zoomFactors.count() < pageCount)
+ zoomFactors.append(CollectionConfiguration::DefaultZoomFactor);
- QVector<QString>::const_iterator zIt = zoomVector.constBegin();
+ QStringList::const_iterator zIt = zoomFactors.constBegin();
QStringList::const_iterator it = lastShownPageList.constBegin();
for (; it != lastShownPageList.constEnd(); ++it, ++zIt)
setSourceInNewTab((*it), (*zIt).toFloat());
- const QLatin1String lastTab("LastTabPage");
- int tab = helpEngine->customValue(lastTab, 1).toInt();
+ int tab = CollectionConfiguration::lastTabPage(*helpEngine);
- const QLatin1String searchKey("SearchWasAttached");
const bool searchIsAttached = m_searchWidget->isAttached();
- const bool searchWasAttached = helpEngine->customValue(searchKey).toBool();
+ const bool searchWasAttached =
+ CollectionConfiguration::searchWasAttached(*helpEngine);
if (searchWasAttached && !searchIsAttached)
- tabWidget->setCurrentIndex(--tab);
+ --tab;
else if (!searchWasAttached && searchIsAttached)
- tabWidget->setCurrentIndex(++tab);
- else
- tabWidget->setCurrentIndex(tab);
+ ++tab;
+ tabWidget->setCurrentIndex(tab);
}
bool CentralWidget::hasSelection() const
@@ -1174,7 +1155,7 @@ QMap<int, QString> CentralWidget::currentSourceFileList() const
void CentralWidget::getBrowserFontFor(QWidget *viewer, QFont *font)
{
const QLatin1String key("useBrowserFont");
- if (!helpEngine->customValue(key, false).toBool()) {
+ if (!CollectionConfiguration::usesBrowserFont(*helpEngine)) {
*font = qApp->font(); // case for QTextBrowser and SearchWidget
#if !defined(QT_NO_WEBKIT)
QWebView *view = qobject_cast<QWebView*> (viewer);
@@ -1185,8 +1166,7 @@ void CentralWidget::getBrowserFontFor(QWidget *viewer, QFont *font)
}
#endif
} else {
- *font = qVariantValue<QFont>(helpEngine->customValue(
- QLatin1String("browserFont")));
+ *font = CollectionConfiguration::browserFont(*helpEngine);
}
}
diff --git a/tools/assistant/tools/assistant/helpviewer.cpp b/tools/assistant/tools/assistant/helpviewer.cpp
index 157f5ab..4b81d99 100644
--- a/tools/assistant/tools/assistant/helpviewer.cpp
+++ b/tools/assistant/tools/assistant/helpviewer.cpp
@@ -41,6 +41,7 @@
#include "helpviewer.h"
#include "centralwidget.h"
+#include "../shared/collectionconfiguration.h"
#include <QtCore/QDir>
#include <QtCore/QEvent>
@@ -333,19 +334,6 @@ void HelpViewer::zoomOut(qreal range)
setTextSizeMultiplier(qMax(0.0, textSizeMultiplier() - range / 10.0));
}
-void HelpViewer::home()
-{
- QString homepage = helpEngine->customValue(QLatin1String("homepage"),
- QLatin1String("")).toString();
-
- if (homepage.isEmpty()) {
- homepage = helpEngine->customValue(QLatin1String("defaultHomepage"),
- QLatin1String("help")).toString();
- }
-
- setSource(homepage);
-}
-
void HelpViewer::wheelEvent(QWheelEvent *e)
{
if (e->modifiers() & Qt::ControlModifier) {
@@ -603,19 +591,6 @@ void HelpViewer::keyPressEvent(QKeyEvent *e)
QTextBrowser::keyPressEvent(e);
}
-void HelpViewer::home()
-{
- QString homepage = helpEngine->customValue(QLatin1String("homepage"),
- QLatin1String("")).toString();
-
- if (homepage.isEmpty()) {
- homepage = helpEngine->customValue(QLatin1String("defaultHomepage"),
- QLatin1String("help")).toString();
- }
-
- setSource(homepage);
-}
-
void HelpViewer::wheelEvent(QWheelEvent *e)
{
if (e->modifiers() == Qt::CTRL) {
@@ -629,4 +604,12 @@ void HelpViewer::wheelEvent(QWheelEvent *e)
#endif // !defined(QT_NO_WEBKIT)
+void HelpViewer::home()
+{
+ QString homePage = CollectionConfiguration::homePage(*helpEngine);
+ if (homePage.isEmpty())
+ homePage = CollectionConfiguration::defaultHomePage(*helpEngine);
+ setSource(homePage);
+}
+
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/main.cpp b/tools/assistant/tools/assistant/main.cpp
index a5a9ef5..e259d4f 100644
--- a/tools/assistant/tools/assistant/main.cpp
+++ b/tools/assistant/tools/assistant/main.cpp
@@ -56,6 +56,7 @@
#include <QtSql/QSqlDatabase>
+#include "../shared/collectionconfiguration.h"
#include "mainwindow.h"
#include "cmdlineparser.h"
@@ -71,94 +72,33 @@ namespace {
void
updateLastPagesOnUnregister(QHelpEngineCore& helpEngine, const QString& nsName)
{
- int lastPage = helpEngine.customValue(QLatin1String("LastTabPage")).toInt();
-
- QLatin1String sep("|");
- QLatin1String pages("LastShownPages");
-#if !defined(QT_NO_WEBKIT)
- QLatin1String zoom("LastPagesZoomWebView");
-#else
- QLatin1String zoom("LastPagesZoomTextBrowser");
-#endif
-
- QStringList currentPages =
- helpEngine.customValue(pages).toString().
- split(QLatin1Char('|'), QString::SkipEmptyParts);
-
+ int lastPage = CollectionConfiguration::lastTabPage(helpEngine);
+ QStringList currentPages = CollectionConfiguration::lastShownPages(helpEngine);
if (!currentPages.isEmpty()) {
- QVector<QString>zoomList = helpEngine.customValue(zoom).toString().
- split(sep, QString::SkipEmptyParts).toVector();
- if (zoomList.isEmpty())
- zoomList.fill(QLatin1String("0.0"), currentPages.size());
- else if(zoomList.count() < currentPages.count()) {
- zoomList.insert(zoomList.count(),
- currentPages.count() - zoomList.count(), QLatin1String("0.0"));
- }
+ QStringList zoomList = CollectionConfiguration::lastZoomFactors(helpEngine);
+ while (zoomList.count() < currentPages.count())
+ zoomList.append(CollectionConfiguration::DefaultZoomFactor);
for (int i = currentPages.count(); --i >= 0;) {
if (QUrl(currentPages.at(i)).host() == nsName) {
- zoomList.remove(i);
+ zoomList.removeAt(i);
currentPages.removeAt(i);
lastPage = (lastPage == (i + 1)) ? 1 : lastPage;
}
}
- helpEngine.setCustomValue(pages, currentPages.join(sep));
- helpEngine.setCustomValue(QLatin1String("LastTabPage"), lastPage);
- helpEngine.setCustomValue(zoom, QStringList(zoomList.toList()).join(sep));
+ CollectionConfiguration::setLastShownPages(helpEngine, currentPages);
+ CollectionConfiguration::setLastTabPage(helpEngine, lastPage);
+ CollectionConfiguration::setLastZoomFactors(helpEngine, zoomList);
}
}
bool
updateUserCollection(QHelpEngineCore& user, const QHelpEngineCore& caller)
{
- const uint callerCollectionCreationTime = caller.
- customValue(QLatin1String("CreationTime"), 0).toUInt();
- const uint userCollectionCreationTime = user.
- customValue(QLatin1String("CreationTime"), 1).toUInt();
-
- if (callerCollectionCreationTime <= userCollectionCreationTime)
+ if (!CollectionConfiguration::isNewer(caller, user))
return false;
-
- user.setCustomValue(QLatin1String("CreationTime"),
- callerCollectionCreationTime);
- user.setCustomValue(QLatin1String("WindowTitle"),
- caller.customValue(QLatin1String("WindowTitle")));
- user.setCustomValue(QLatin1String("LastShownPages"),
- caller.customValue(QLatin1String("LastShownPages")));
-#if !defined(QT_NO_WEBKIT)
- const QLatin1String zoomKey("LastPagesZoomWebView");
-#else
- const QLatin1String zoomKey("LastPagesZoomTextBrowser");
-#endif
- user.setCustomValue(zoomKey, caller.customValue(zoomKey));
- user.setCustomValue(QLatin1String("CurrentFilter"),
- caller.customValue(QLatin1String("CurrentFilter")));
- user.setCustomValue(QLatin1String("CacheDirectory"),
- caller.customValue(QLatin1String("CacheDirectory")));
- user.setCustomValue(QLatin1String("EnableFilterFunctionality"),
- caller.customValue(QLatin1String("EnableFilterFunctionality")));
- user.setCustomValue(QLatin1String("HideFilterFunctionality"),
- caller.customValue(QLatin1String("HideFilterFunctionality")));
- user.setCustomValue(QLatin1String("EnableDocumentationManager"),
- caller.customValue(QLatin1String("EnableDocumentationManager")));
- user.setCustomValue(QLatin1String("EnableAddressBar"),
- caller.customValue(QLatin1String("EnableAddressBar")));
- user.setCustomValue(QLatin1String("HideAddressBar"),
- caller.customValue(QLatin1String("HideAddressBar")));
- user.setCustomValue(QLatin1String("ApplicationIcon"),
- caller.customValue(QLatin1String("ApplicationIcon")));
- user.setCustomValue(QLatin1String("AboutMenuTexts"),
- caller.customValue(QLatin1String("AboutMenuTexts")));
- user.setCustomValue(QLatin1String("AboutIcon"),
- caller.customValue(QLatin1String("AboutIcon")));
- user.setCustomValue(QLatin1String("AboutTexts"),
- caller.customValue(QLatin1String("AboutTexts")));
- user.setCustomValue(QLatin1String("AboutImages"),
- caller.customValue(QLatin1String("AboutImages")));
- user.setCustomValue(QLatin1String("defaultHomepage"),
- caller.customValue(QLatin1String("defaultHomepage")));
-
+ CollectionConfiguration::copyConfiguration(caller, user);
return true;
}
@@ -247,7 +187,7 @@ int main(int argc, char *argv[])
return -1;
}
}
- help.setCustomValue(QLatin1String("DocUpdate"), true);
+ CollectionConfiguration::setDocUpdatePending(help, true);
return 0;
}
@@ -293,11 +233,9 @@ int main(int argc, char *argv[])
}
QString fileName = QFileInfo(cmdCollectionFile).fileName();
- const QString &cacheDir =
- caller.customValue(QLatin1String("CacheDirectory"),
- QString()).toString();
+ const QString &cacheDir = CollectionConfiguration::cacheDir(caller);
const QString dir = !cacheDir.isEmpty()
- && caller.customValue(QLatin1String("CacheDirRelativeToCollection")).toBool()
+ && CollectionConfiguration::cacheDirIsRelativeToCollection(caller)
? QFileInfo(cmdCollectionFile).dir().absolutePath()
+ QDir::separator() + cacheDir
: MainWindow::collectionFileDirectory(false, cacheDir);
@@ -316,8 +254,7 @@ int main(int argc, char *argv[])
QHelpEngineCore user(fi.absoluteFilePath());
if (user.setupData()) {
// some docs might have been un/registered
- bool docUpdate = caller.
- customValue(QLatin1String("DocUpdate"), false).toBool();
+ bool docUpdate = CollectionConfiguration::docUpdatePending(caller);
// update in case the passed collection file changed
if (updateUserCollection(user, caller))
@@ -343,7 +280,7 @@ int main(int argc, char *argv[])
user.unregisterDocumentation(doc);
}
- caller.setCustomValue(QLatin1String("DocUpdate"), false);
+ CollectionConfiguration::setDocUpdatePending(caller, false);
}
}
}
diff --git a/tools/assistant/tools/assistant/mainwindow.cpp b/tools/assistant/tools/assistant/mainwindow.cpp
index bc8b86f..1a129c3 100644
--- a/tools/assistant/tools/assistant/mainwindow.cpp
+++ b/tools/assistant/tools/assistant/mainwindow.cpp
@@ -53,10 +53,12 @@
#include "searchwidget.h"
#include "qtdocinstaller.h"
#include "xbelsupport.h"
+#include "../shared/collectionconfiguration.h"
#include <QtCore/QDir>
#include <QtCore/QTimer>
#include <QtCore/QDebug>
+#include <QtCore/QFileSystemWatcher>
#include <QtCore/QResource>
#include <QtCore/QByteArray>
#include <QtCore/QTextStream>
@@ -93,6 +95,7 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
, m_cmdLine(cmdLine)
, m_progressWidget(0)
, m_qtDocInstaller(0)
+ , m_qchWatcher(new QFileSystemWatcher(this))
, m_connectedInitSignals(false)
{
setToolButtonStyle(Qt::ToolButtonFollowStyle);
@@ -150,10 +153,11 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
connect(m_bookmarkManager, SIGNAL(bookmarksChanged()), this,
SLOT(updateBookmarkMenu()));
- setWindowTitle(m_helpEngine->customValue(QLatin1String("WindowTitle"),
- defWindowTitle).toString());
- QByteArray iconArray = m_helpEngine->customValue(QLatin1String("ApplicationIcon"),
- QByteArray()).toByteArray();
+ const QString windowTitle =
+ CollectionConfiguration::windowTitle(*m_helpEngine);
+ setWindowTitle(windowTitle.isEmpty() ? defWindowTitle : windowTitle);
+ QByteArray iconArray =
+ CollectionConfiguration::applicationIcon(*m_helpEngine);
if (iconArray.size() > 0) {
QPixmap pix;
pix.loadFromData(iconArray);
@@ -167,11 +171,11 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
// Show the widget here, otherwise the restore geometry and state won't work
// on x11.
show();
- QByteArray ba(m_helpEngine->customValue(QLatin1String("MainWindow")).toByteArray());
+ QByteArray ba(CollectionConfiguration::mainWindow(*m_helpEngine));
if (!ba.isEmpty())
restoreState(ba);
- ba = m_helpEngine->customValue(QLatin1String("MainWindowGeometry")).toByteArray();
+ ba = CollectionConfiguration::mainWindowGeometry(*m_helpEngine);
if (!ba.isEmpty()) {
restoreGeometry(ba);
} else {
@@ -181,14 +185,14 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
resize(QSize(800, 600));
}
- if (!m_helpEngine->customValue(QLatin1String("useAppFont")).isValid()) {
- m_helpEngine->setCustomValue(QLatin1String("useAppFont"), false);
- m_helpEngine->setCustomValue(QLatin1String("useBrowserFont"), false);
- m_helpEngine->setCustomValue(QLatin1String("appFont"), qApp->font());
- m_helpEngine->setCustomValue(QLatin1String("appWritingSystem"),
+ if (!CollectionConfiguration::hasFontSettings(*m_helpEngine)) {
+ CollectionConfiguration::setUseAppFont(*m_helpEngine, false);
+ CollectionConfiguration::setUseBrowserFont(*m_helpEngine, false);
+ CollectionConfiguration::setAppFont(*m_helpEngine, qApp->font());
+ CollectionConfiguration::setAppWritingSystem(*m_helpEngine,
QFontDatabase::Latin);
- m_helpEngine->setCustomValue(QLatin1String("browserFont"), qApp->font());
- m_helpEngine->setCustomValue(QLatin1String("browserWritingSystem"),
+ CollectionConfiguration::setBrowserFont(*m_helpEngine, qApp->font());
+ CollectionConfiguration::setBrowserWritingSystem(*m_helpEngine,
QFontDatabase::Latin);
} else {
updateApplicationFont();
@@ -198,7 +202,7 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
QTimer::singleShot(0, this, SLOT(insertLastPages()));
if (m_cmdLine->enableRemoteControl())
- (void)new RemoteControl(this, m_helpEngine);
+ (void)new RemoteControl(this, m_helpEngine, m_qchWatcher);
if (m_cmdLine->contents() == CmdLineParser::Show)
showContents();
@@ -237,6 +241,13 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
QTimer::singleShot(0, this, SLOT(lookForNewQtDocumentation()));
else
checkInitState();
+
+ foreach(const QString &ns, m_helpEngine->registeredDocumentations()) {
+ const QString &docFile = m_helpEngine->documentationFileName(ns);
+ m_qchWatcher->addPath(docFile);
+ connect(m_qchWatcher, SIGNAL(fileChanged(QString)), this,
+ SLOT(qchFileChanged(QString)));
+ }
}
setTabPosition(Qt::AllDockWidgetAreas, QTabWidget::North);
}
@@ -255,8 +266,8 @@ bool MainWindow::usesDefaultCollection() const
void MainWindow::closeEvent(QCloseEvent *e)
{
m_bookmarkManager->saveBookmarks();
- m_helpEngine->setCustomValue(QLatin1String("MainWindow"), saveState());
- m_helpEngine->setCustomValue(QLatin1String("MainWindowGeometry"),
+ CollectionConfiguration::setMainWindow(*m_helpEngine, saveState());
+ CollectionConfiguration::setMainWindowGeometry(*m_helpEngine,
saveGeometry());
QMainWindow::closeEvent(e);
@@ -297,18 +308,20 @@ bool MainWindow::initHelpDB()
}
QHelpEngineCore hc(fi.absoluteFilePath());
hc.setupData();
- hc.unregisterDocumentation(intern);
- hc.registerDocumentation(helpFile);
+ const QString internalFile = hc.documentationFileName(intern);
+ if (hc.unregisterDocumentation(intern))
+ m_qchWatcher->removePath(internalFile);
+ if (hc.registerDocumentation(helpFile))
+ m_qchWatcher->addPath(helpFile);
needsSetup = true;
}
- const QLatin1String unfiltered("UnfilteredFilterInserted");
- if (1 != m_helpEngine->customValue(unfiltered).toInt()) {
+ if (!CollectionConfiguration::unfilteredInserted(*m_helpEngine)) {
{
QHelpEngineCore hc(collectionFile);
hc.setupData();
hc.addCustomFilter(tr("Unfiltered"), QStringList());
- hc.setCustomValue(unfiltered, 1);
+ CollectionConfiguration::setUnfilteredInserted(hc);
}
m_helpEngine->blockSignals(true);
@@ -317,22 +330,25 @@ bool MainWindow::initHelpDB()
needsSetup = true;
}
- if (needsSetup)
+ if (needsSetup) {
m_helpEngine->setupData();
+ Q_ASSERT(m_qchWatcher->files().count()
+ == m_helpEngine->registeredDocumentations().count());
+ }
return true;
}
void MainWindow::lookForNewQtDocumentation()
{
- m_qtDocInstaller = new QtDocInstaller(m_helpEngine->collectionFile());
+ m_qtDocInstaller =
+ new QtDocInstaller(m_helpEngine->collectionFile(), m_qchWatcher);
connect(m_qtDocInstaller, SIGNAL(errorMessage(QString)), this,
SLOT(displayInstallationError(QString)));
connect(m_qtDocInstaller, SIGNAL(docsInstalled(bool)), this,
SLOT(qtDocumentationInstalled(bool)));
- QString versionKey = QString(QLatin1String("qtVersion%1$$$qt")).
- arg(QLatin1String(QT_VERSION_STR));
- if (m_helpEngine->customValue(versionKey, 0).toInt() != 1)
+ if (CollectionConfiguration::qtDocInfo(*m_helpEngine, QLatin1String("qt")).
+ count() != 2)
statusBar()->showMessage(tr("Looking for Qt Documentation..."));
m_qtDocInstaller->installDocs();
}
@@ -647,8 +663,7 @@ QMenu *MainWindow::toolBarMenu()
void MainWindow::setupFilterToolbar()
{
- if (!m_helpEngine->
- customValue(QLatin1String("EnableFilterFunctionality"), true).toBool())
+ if (!CollectionConfiguration::filterFunctionalityEnabled(*m_helpEngine))
return;
m_filterCombo = new QComboBox(this);
@@ -661,8 +676,7 @@ void MainWindow::setupFilterToolbar()
this));
filterToolBar->addWidget(m_filterCombo);
- const QLatin1String hideFilter("HideFilterFunctionality");
- if (m_helpEngine->customValue(hideFilter, true).toBool())
+ if (!CollectionConfiguration::filterToolbarVisible(*m_helpEngine))
filterToolBar->hide();
toolBarMenu()->addAction(filterToolBar->toggleViewAction());
@@ -678,7 +692,7 @@ void MainWindow::setupFilterToolbar()
void MainWindow::setupAddressToolbar()
{
- if (!m_helpEngine->customValue(QLatin1String("EnableAddressBar"), true).toBool())
+ if (!CollectionConfiguration::addressBarEnabled(*m_helpEngine))
return;
m_addressLineEdit = new QLineEdit(this);
@@ -690,7 +704,7 @@ void MainWindow::setupAddressToolbar()
this));
addressToolBar->addWidget(m_addressLineEdit);
- if (m_helpEngine->customValue(QLatin1String("HideAddressBar"), true).toBool())
+ if (!CollectionConfiguration::addressBarVisible(*m_helpEngine))
addressToolBar->hide();
toolBarMenu()->addAction(addressToolBar->toggleViewAction());
@@ -706,8 +720,7 @@ void MainWindow::setupAddressToolbar()
void MainWindow::updateAboutMenuText()
{
if (m_helpEngine) {
- QByteArray ba = m_helpEngine->customValue(QLatin1String("AboutMenuTexts"),
- QByteArray()).toByteArray();
+ QByteArray ba = CollectionConfiguration::aboutMenuTexts(*m_helpEngine);
if (ba.size() > 0) {
QString lang;
QString str;
@@ -783,7 +796,7 @@ void MainWindow::showTopicChooser(const QMap<QString, QUrl> &links,
void MainWindow::showPreferences()
{
- PreferencesDialog dia(m_helpEngine, this);
+ PreferencesDialog dia(m_helpEngine, m_qchWatcher, this);
connect(&dia, SIGNAL(updateApplicationFont()), this,
SLOT(updateApplicationFont()));
@@ -821,8 +834,7 @@ void MainWindow::showAboutDialog()
{
QByteArray contents;
if (m_helpEngine) {
- QByteArray ba = m_helpEngine->customValue(QLatin1String("AboutTexts"),
- QByteArray()).toByteArray();
+ QByteArray ba = CollectionConfiguration::aboutTexts(*m_helpEngine);
if (!ba.isEmpty()) {
QString lang;
QByteArray cba;
@@ -848,11 +860,9 @@ void MainWindow::showAboutDialog()
QByteArray iconArray;
if (!contents.isEmpty()) {
- iconArray = m_helpEngine->customValue(QLatin1String("AboutIcon"),
- QByteArray()).toByteArray();
+ iconArray = CollectionConfiguration::aboutIcon(*m_helpEngine);
QByteArray resources =
- m_helpEngine->customValue(QLatin1String("AboutImages"),
- QByteArray()).toByteArray();
+ CollectionConfiguration::aboutImages(*m_helpEngine);
QPixmap pix;
pix.loadFromData(iconArray);
aboutDia.setText(QString::fromUtf8(contents), resources);
@@ -981,8 +991,8 @@ void MainWindow::showSearchWidget()
void MainWindow::updateApplicationFont()
{
QFont font = qApp->font();
- if (m_helpEngine->customValue(QLatin1String("useAppFont")).toBool())
- font = qVariantValue<QFont>(m_helpEngine->customValue(QLatin1String("appFont")));
+ if (CollectionConfiguration::usesAppFont(*m_helpEngine))
+ font = CollectionConfiguration::appFont(*m_helpEngine);
qApp->setFont(font, "QWidget");
}
@@ -1125,4 +1135,33 @@ void MainWindow::currentFilterChanged(const QString &filter)
m_filterCombo->setCurrentIndex(index);
}
+void MainWindow::qchFileChanged(const QString &fileName)
+{
+ /*
+ * We don't use QHelpEngineCore::namespaceName(fileName), because the file
+ * may not exist anymore or contain a different namespace.
+ */
+ QString ns;
+ foreach (const QString &curNs, m_helpEngine->registeredDocumentations()) {
+ if (m_helpEngine->documentationFileName(curNs) == fileName) {
+ ns = curNs;
+ break;
+ }
+ }
+
+ /*
+ * We can't do an assertion here, because QFileSystemWatcher may send the
+ * signal more than once.
+ */
+ if (ns.isEmpty())
+ return;
+
+ CentralWidget* widget = CentralWidget::instance();
+ widget->closeTabs(widget->currentSourceFileList().keys(ns));
+ if (m_helpEngine->unregisterDocumentation(ns) &&
+ (!QFileInfo(fileName).exists()
+ || !m_helpEngine->registerDocumentation(fileName)))
+ m_qchWatcher->removePath(fileName);
+}
+
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/mainwindow.h b/tools/assistant/tools/assistant/mainwindow.h
index 96daf99..6a0ab58 100644
--- a/tools/assistant/tools/assistant/mainwindow.h
+++ b/tools/assistant/tools/assistant/mainwindow.h
@@ -48,6 +48,7 @@
QT_BEGIN_NAMESPACE
class QAction;
+class QFileSystemWatcher;
class QLineEdit;
class QComboBox;
class QMenu;
@@ -119,6 +120,7 @@ private slots:
void displayInstallationError(const QString &errorMessage);
void qtDocumentationInstalled(bool newDocsInstalled);
void checkInitState();
+ void qchFileChanged(const QString &fileName);
void updateBookmarkMenu();
void showBookmark(QAction *action);
@@ -177,6 +179,7 @@ private:
QWidget *m_progressWidget;
QtDocInstaller *m_qtDocInstaller;
+ QFileSystemWatcher * const m_qchWatcher;
bool m_connectedInitSignals;
};
diff --git a/tools/assistant/tools/assistant/preferencesdialog.cpp b/tools/assistant/tools/assistant/preferencesdialog.cpp
index 2aa451e..1fffacd 100644
--- a/tools/assistant/tools/assistant/preferencesdialog.cpp
+++ b/tools/assistant/tools/assistant/preferencesdialog.cpp
@@ -45,8 +45,10 @@
#include "fontpanel.h"
#include "centralwidget.h"
#include "aboutdialog.h"
+#include "../shared/collectionconfiguration.h"
-#include <QtAlgorithms>
+#include <QtCore/QtAlgorithms>
+#include <QtCore/QFileSystemWatcher>
#include <QtGui/QHeaderView>
#include <QtGui/QFileDialog>
@@ -60,11 +62,13 @@
QT_BEGIN_NAMESPACE
-PreferencesDialog::PreferencesDialog(QHelpEngineCore *helpEngine, QWidget *parent)
+PreferencesDialog::PreferencesDialog(QHelpEngineCore *helpEngine,
+ QFileSystemWatcher *qchWatcher, QWidget *parent)
: QDialog(parent)
, m_helpEngine(helpEngine)
, m_appFontChanged(false)
, m_browserFontChanged(false)
+ , m_qchWatcher(qchWatcher)
{
m_ui.setupUi(this);
@@ -73,11 +77,10 @@ PreferencesDialog::PreferencesDialog(QHelpEngineCore *helpEngine, QWidget *paren
connect(m_ui.buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()),
this, SLOT(reject()));
- QLatin1String key("EnableFilterFunctionality");
- m_hideFiltersTab = !m_helpEngine->customValue(key, true).toBool();
-
- key = QLatin1String("EnableDocumentationManager");
- m_hideDocsTab = !m_helpEngine->customValue(key, true).toBool();
+ m_hideFiltersTab =
+ !CollectionConfiguration::filterFunctionalityEnabled(*m_helpEngine);
+ m_hideDocsTab =
+ !CollectionConfiguration::documentationManagerEnabled(*m_helpEngine);
if (!m_hideFiltersTab) {
m_ui.attributeWidget->header()->hide();
@@ -118,27 +121,22 @@ PreferencesDialog::PreferencesDialog(QHelpEngineCore *helpEngine, QWidget *paren
PreferencesDialog::~PreferencesDialog()
{
- QLatin1String key("");
if (m_appFontChanged) {
- key = QLatin1String("appFont");
- m_helpEngine->setCustomValue(key, m_appFontPanel->selectedFont());
-
- key = QLatin1String("useAppFont");
- m_helpEngine->setCustomValue(key, m_appFontPanel->isChecked());
-
- key = QLatin1String("appWritingSystem");
- m_helpEngine->setCustomValue(key, m_appFontPanel->writingSystem());
+ CollectionConfiguration::setAppFont(*m_helpEngine,
+ m_appFontPanel->selectedFont());
+ CollectionConfiguration::setUseAppFont(*m_helpEngine,
+ m_appFontPanel->isChecked());
+ CollectionConfiguration::setAppWritingSystem(*m_helpEngine,
+ m_appFontPanel->writingSystem());
}
if (m_browserFontChanged) {
- key = QLatin1String("browserFont");
- m_helpEngine->setCustomValue(key, m_browserFontPanel->selectedFont());
-
- key = QLatin1String("useBrowserFont");
- m_helpEngine->setCustomValue(key, m_browserFontPanel->isChecked());
-
- key = QLatin1String("browserWritingSystem");
- m_helpEngine->setCustomValue(key, m_browserFontPanel->writingSystem());
+ CollectionConfiguration::setBrowserFont(*m_helpEngine,
+ m_browserFontPanel->selectedFont());
+ CollectionConfiguration::setUseBrowserFont(*m_helpEngine,
+ m_browserFontPanel->isChecked());
+ CollectionConfiguration::setBrowserWritingSystem(*m_helpEngine,
+ m_browserFontPanel->writingSystem());
}
if (m_appFontChanged || m_browserFontChanged) {
@@ -149,10 +147,10 @@ PreferencesDialog::~PreferencesDialog()
QString homePage = m_ui.homePageLineEdit->text();
if (homePage.isEmpty())
homePage = QLatin1String("help");
- m_helpEngine->setCustomValue(QLatin1String("homepage"), homePage);
+ CollectionConfiguration::setHomePage(*m_helpEngine, homePage);
int option = m_ui.helpStartComboBox->currentIndex();
- m_helpEngine->setCustomValue(QLatin1String("StartOption"), option);
+ CollectionConfiguration::setStartOption(*m_helpEngine, option);
}
void PreferencesDialog::showDialog()
@@ -275,7 +273,11 @@ void PreferencesDialog::addDocumentationLocal()
continue;
}
- m_helpEngine->registerDocumentation(fileName);
+ if (m_helpEngine->registerDocumentation(fileName)) {
+ m_qchWatcher->addPath(fileName);
+ Q_ASSERT(m_qchWatcher->files().count()
+ == m_helpEngine->registeredDocumentations().count());
+ }
m_ui.registeredDocsListWidget->addItem(nameSpace);
m_regDocs.append(nameSpace);
m_unregDocs.removeAll(nameSpace);
@@ -380,10 +382,13 @@ void PreferencesDialog::applyChanges()
CentralWidget::instance()->closeTabs(m_TabsToClose);
- if (m_unregDocs.count()) {
- foreach (const QString &doc, m_unregDocs)
- m_helpEngine->unregisterDocumentation(doc);
+ foreach (const QString &doc, m_unregDocs) {
+ const QString docFile = m_helpEngine->documentationFileName(doc);
+ if (m_helpEngine->unregisterDocumentation(doc))
+ m_qchWatcher->removePath(docFile);
}
+ Q_ASSERT(m_qchWatcher->files().count()
+ == m_helpEngine->registeredDocumentations().count());
if (filtersWereChanged || m_regDocs.count() || m_unregDocs.count())
m_helpEngine->setupData();
@@ -406,31 +411,26 @@ void PreferencesDialog::updateFontSettingsPage()
const QString customSettings(tr("Use custom settings"));
m_appFontPanel->setTitle(customSettings);
- QLatin1String key = QLatin1String("appFont");
- QFont font = qVariantValue<QFont>(m_helpEngine->customValue(key));
+ QFont font = CollectionConfiguration::appFont(*m_helpEngine);
m_appFontPanel->setSelectedFont(font);
- key = QLatin1String("appWritingSystem");
- QFontDatabase::WritingSystem system = static_cast<QFontDatabase::WritingSystem>
- (m_helpEngine->customValue(key).toInt());
+ QFontDatabase::WritingSystem system =
+ CollectionConfiguration::appWritingSystem(*m_helpEngine);
m_appFontPanel->setWritingSystem(system);
- key = QLatin1String("useAppFont");
- m_appFontPanel->setChecked(m_helpEngine->customValue(key).toBool());
+ m_appFontPanel->setChecked(CollectionConfiguration::
+ usesAppFont(*m_helpEngine));
m_browserFontPanel->setTitle(customSettings);
- key = QLatin1String("browserFont");
- font = qVariantValue<QFont>(m_helpEngine->customValue(key));
+ font = CollectionConfiguration::browserFont(*m_helpEngine);
m_browserFontPanel->setSelectedFont(font);
- key = QLatin1String("browserWritingSystem");
- system = static_cast<QFontDatabase::WritingSystem>
- (m_helpEngine->customValue(key).toInt());
+ system = CollectionConfiguration::browserWritingSystem(*m_helpEngine);
m_browserFontPanel->setWritingSystem(system);
- key = QLatin1String("useBrowserFont");
- m_browserFontPanel->setChecked(m_helpEngine->customValue(key).toBool());
+ m_browserFontPanel->setChecked(CollectionConfiguration::
+ usesBrowserFont(*m_helpEngine));
connect(m_appFontPanel, SIGNAL(toggled(bool)), this,
SLOT(appFontSettingToggled(bool)));
@@ -476,17 +476,12 @@ void PreferencesDialog::browserFontSettingChanged(int index)
void PreferencesDialog::updateOptionsPage()
{
- QString homepage = m_helpEngine->customValue(QLatin1String("homepage"),
- QLatin1String("")).toString();
-
- if (homepage.isEmpty()) {
- homepage = m_helpEngine->customValue(QLatin1String("defaultHomepage"),
- QLatin1String("help")).toString();
- }
- m_ui.homePageLineEdit->setText(homepage);
+ QString homePage = CollectionConfiguration::homePage(*m_helpEngine);
+ if (homePage.isEmpty())
+ homePage = CollectionConfiguration::defaultHomePage(*m_helpEngine);
+ m_ui.homePageLineEdit->setText(homePage);
- int option = m_helpEngine->customValue(QLatin1String("StartOption"),
- ShowLastPages).toInt();
+ int option = CollectionConfiguration::startOption(*m_helpEngine);
m_ui.helpStartComboBox->setCurrentIndex(option);
connect(m_ui.blankPageButton, SIGNAL(clicked()), this, SLOT(setBlankPage()));
@@ -510,9 +505,8 @@ void PreferencesDialog::setCurrentPage()
void PreferencesDialog::setDefaultPage()
{
- QString homepage = m_helpEngine->customValue(QLatin1String("defaultHomepage"),
- QLatin1String("help")).toString();
- m_ui.homePageLineEdit->setText(homepage);
+ QString homePage = CollectionConfiguration::defaultHomePage(*m_helpEngine);
+ m_ui.homePageLineEdit->setText(homePage);
}
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/preferencesdialog.h b/tools/assistant/tools/assistant/preferencesdialog.h
index c9d56ba..7abf431 100644
--- a/tools/assistant/tools/assistant/preferencesdialog.h
+++ b/tools/assistant/tools/assistant/preferencesdialog.h
@@ -48,6 +48,7 @@
QT_BEGIN_NAMESPACE
class FontPanel;
+class QFileSystemWatcher;
class QHelpEngineCore;
enum {
@@ -61,7 +62,8 @@ class PreferencesDialog : public QDialog
Q_OBJECT
public:
- PreferencesDialog(QHelpEngineCore *helpEngine, QWidget *parent = 0);
+ PreferencesDialog(QHelpEngineCore *helpEngine,
+ QFileSystemWatcher *qchWatcher, QWidget *parent = 0);
~PreferencesDialog();
void showDialog();
@@ -107,6 +109,7 @@ private:
FontPanel *m_browserFontPanel;
bool m_appFontChanged;
bool m_browserFontChanged;
+ QFileSystemWatcher * const m_qchWatcher;
};
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/qtdocinstaller.cpp b/tools/assistant/tools/assistant/qtdocinstaller.cpp
index b37e588..3f82786 100644
--- a/tools/assistant/tools/assistant/qtdocinstaller.cpp
+++ b/tools/assistant/tools/assistant/qtdocinstaller.cpp
@@ -42,12 +42,16 @@
#include <QtCore/QDir>
#include <QtCore/QLibraryInfo>
#include <QtCore/QDateTime>
+#include <QtCore/QFileSystemWatcher>
#include <QtHelp/QHelpEngineCore>
+#include "../shared/collectionconfiguration.h"
#include "qtdocinstaller.h"
QT_BEGIN_NAMESPACE
-QtDocInstaller::QtDocInstaller(const QString &collectionFile)
+QtDocInstaller::QtDocInstaller(const QString &collectionFile,
+ QFileSystemWatcher *qchWatcher)
+ : m_qchWatcher(qchWatcher)
{
m_abort = false;
m_collectionFile = collectionFile;
@@ -97,14 +101,10 @@ void QtDocInstaller::run()
bool QtDocInstaller::installDoc(const QString &name, QHelpEngineCore *helpEngine)
{
- QString versionKey = QString(QLatin1String("qtVersion%1$$$%2")).
- arg(QLatin1String(QT_VERSION_STR)).arg(name);
-
- QString info = helpEngine->customValue(versionKey, QString()).toString();
- QStringList lst = info.split(QLatin1String("|"));
+ QStringList lst = CollectionConfiguration::qtDocInfo(*helpEngine, name);
QDateTime dt;
- if (lst.count() && !lst.first().isEmpty())
+ if (!lst.isEmpty() && !lst.first().isEmpty())
dt = QDateTime::fromString(lst.first(), Qt::ISODate);
QString qchFile;
@@ -116,14 +116,14 @@ bool QtDocInstaller::installDoc(const QString &name, QHelpEngineCore *helpEngine
const QStringList files = dir.entryList(QStringList() << QLatin1String("*.qch"));
if (files.isEmpty()) {
- helpEngine->setCustomValue(versionKey, QDateTime().toString(Qt::ISODate)
- + QLatin1String("|"));
+ CollectionConfiguration::setQtDocInfo(*helpEngine, name,
+ QStringList(QDateTime().toString(Qt::ISODate)));
return false;
}
foreach (const QString &f, files) {
if (f.startsWith(name)) {
QFileInfo fi(dir.absolutePath() + QDir::separator() + f);
- if (dt.isValid() && fi.lastModified().toString(Qt::ISODate) == dt.toString(Qt::ISODate)
+ if (dt.isValid() && fi.lastModified().toTime_t() == dt.toTime_t()
&& qchFile == fi.absoluteFilePath())
return false;
@@ -131,17 +131,27 @@ bool QtDocInstaller::installDoc(const QString &name, QHelpEngineCore *helpEngine
if (namespaceName.isEmpty())
continue;
- if (helpEngine->registeredDocumentations().contains(namespaceName))
- helpEngine->unregisterDocumentation(namespaceName);
+ if (helpEngine->registeredDocumentations().contains(namespaceName)) {
+ const QString docFile =
+ helpEngine->documentationFileName(namespaceName);
+ if (helpEngine->unregisterDocumentation(namespaceName))
+ m_qchWatcher->removePath(docFile);
+ }
if (!helpEngine->registerDocumentation(fi.absoluteFilePath())) {
emit errorMessage(
tr("The file %1 could not be registered successfully!\n\nReason: %2")
.arg(fi.absoluteFilePath()).arg(helpEngine->error()));
+ } else {
+ m_qchWatcher->addPath(fi.absoluteFilePath());
}
- helpEngine->setCustomValue(versionKey, fi.lastModified().toString(Qt::ISODate)
- + QLatin1String("|") + fi.absoluteFilePath());
+ Q_ASSERT(m_qchWatcher->files().count()
+ == helpEngine->registeredDocumentations().count());
+
+ CollectionConfiguration::setQtDocInfo(*helpEngine, name,
+ QStringList() << fi.lastModified().toString(Qt::ISODate)
+ << fi.absoluteFilePath());
return true;
}
}
diff --git a/tools/assistant/tools/assistant/qtdocinstaller.h b/tools/assistant/tools/assistant/qtdocinstaller.h
index 987272b..0d503fd 100644
--- a/tools/assistant/tools/assistant/qtdocinstaller.h
+++ b/tools/assistant/tools/assistant/qtdocinstaller.h
@@ -47,6 +47,7 @@
QT_BEGIN_NAMESPACE
+class QFileSystemWatcher;
class QHelpEngineCore;
class QtDocInstaller : public QThread
@@ -54,7 +55,7 @@ class QtDocInstaller : public QThread
Q_OBJECT
public:
- QtDocInstaller(const QString &collectionFile);
+ QtDocInstaller(const QString &collectionFile, QFileSystemWatcher *qchWatcher);
~QtDocInstaller();
void installDocs();
@@ -70,6 +71,7 @@ private:
bool m_abort;
QString m_collectionFile;
QMutex m_mutex;
+ QFileSystemWatcher * const m_qchWatcher;
};
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/remotecontrol.cpp b/tools/assistant/tools/assistant/remotecontrol.cpp
index 0ccf743..3c123d6 100644
--- a/tools/assistant/tools/assistant/remotecontrol.cpp
+++ b/tools/assistant/tools/assistant/remotecontrol.cpp
@@ -45,6 +45,7 @@
#include <QtCore/QFile>
#include <QtCore/QFileInfo>
+#include <QtCore/QFileSystemWatcher>
#include <QtCore/QThread>
#include <QtCore/QTextStream>
#include <QtCore/QSocketNotifier>
@@ -105,7 +106,8 @@ void StdInListenerWin::run()
}
#endif
-RemoteControl::RemoteControl(MainWindow *mainWindow, QHelpEngine *helpEngine)
+RemoteControl::RemoteControl(MainWindow *mainWindow, QHelpEngine *helpEngine,
+ QFileSystemWatcher *qchWatcher)
: QObject(mainWindow)
, m_mainWindow(mainWindow)
, m_helpEngine(helpEngine)
@@ -113,6 +115,7 @@ RemoteControl::RemoteControl(MainWindow *mainWindow, QHelpEngine *helpEngine)
, m_caching(true)
, m_syncContents(false)
, m_expandTOC(-2)
+ , m_qchWatcher(qchWatcher)
{
connect(m_mainWindow, SIGNAL(initDone()), this, SLOT(applyCache()));
@@ -293,10 +296,14 @@ void RemoteControl::handleRegisterCommand(const QString &arg)
{
const QString &absFileName = QFileInfo(arg).absoluteFilePath();
if (m_helpEngine->registeredDocumentations().
- contains(QHelpEngineCore::namespaceName(absFileName)))
+ contains(QHelpEngineCore::namespaceName(absFileName)))
return;
- m_helpEngine->registerDocumentation(absFileName);
- m_helpEngine->setupData();
+ if (m_helpEngine->registerDocumentation(absFileName)) {
+ m_qchWatcher->addPath(absFileName);
+ m_helpEngine->setupData();
+ Q_ASSERT(m_qchWatcher->files().count()
+ == m_helpEngine->registeredDocumentations().count());
+ }
}
void RemoteControl::handleUnregisterCommand(const QString &arg)
@@ -306,8 +313,11 @@ void RemoteControl::handleUnregisterCommand(const QString &arg)
if (m_helpEngine->registeredDocumentations().contains(ns)) {
CentralWidget* widget = CentralWidget::instance();
widget->closeTabs(widget->currentSourceFileList().keys(ns));
- m_helpEngine->unregisterDocumentation(ns);
- m_helpEngine->setupData();
+ const QString docFile = m_helpEngine->documentationFileName(ns);
+ if (m_helpEngine->unregisterDocumentation(ns)) {
+ m_qchWatcher->removePath(docFile);
+ m_helpEngine->setupData();
+ }
}
}
diff --git a/tools/assistant/tools/assistant/remotecontrol.h b/tools/assistant/tools/assistant/remotecontrol.h
index c1c3105..6f7eb5f 100644
--- a/tools/assistant/tools/assistant/remotecontrol.h
+++ b/tools/assistant/tools/assistant/remotecontrol.h
@@ -49,6 +49,7 @@
QT_BEGIN_NAMESPACE
class MainWindow;
+class QFileSystemWatcher;
class QHelpEngine;
class RemoteControl : public QObject
@@ -56,7 +57,8 @@ class RemoteControl : public QObject
Q_OBJECT
public:
- RemoteControl(MainWindow *mainWindow, QHelpEngine *helpEngine);
+ RemoteControl(MainWindow *mainWindow, QHelpEngine *helpEngine,
+ QFileSystemWatcher *qchWatcher);
private slots:
void receivedData();
@@ -89,6 +91,7 @@ private:
QString m_activateIdentifier;
int m_expandTOC;
QString m_currentFilter;
+ QFileSystemWatcher * const m_qchWatcher;
};
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/qcollectiongenerator/main.cpp b/tools/assistant/tools/qcollectiongenerator/main.cpp
index a92cc56..2eb2b96 100644
--- a/tools/assistant/tools/qcollectiongenerator/main.cpp
+++ b/tools/assistant/tools/qcollectiongenerator/main.cpp
@@ -39,6 +39,7 @@
**
****************************************************************************/
+#include "../shared/collectionconfiguration.h"
#include "../shared/helpgenerator.h"
#include <QtCore/QDir>
@@ -453,36 +454,39 @@ int main(int argc, char *argv[])
}
if (!config.title().isEmpty())
- helpEngine.setCustomValue(QLatin1String("WindowTitle"), config.title());
+ CollectionConfiguration::setWindowTitle(helpEngine, config.title());
if (!config.homePage().isEmpty()) {
- helpEngine.setCustomValue(QLatin1String("defaultHomepage"),
- config.homePage());
+ CollectionConfiguration::setDefaultHomePage(helpEngine,
+ config.homePage());
}
- if (!config.startPage().isEmpty())
- helpEngine.setCustomValue(QLatin1String("LastShownPages"), config.startPage());
+ if (!config.startPage().isEmpty()) {
+ CollectionConfiguration::setLastShownPages(helpEngine,
+ QStringList(config.startPage()));
+ }
- if (!config.currentFilter().isEmpty())
- helpEngine.setCustomValue(QLatin1String("CurrentFilter"), config.currentFilter());
+ if (!config.currentFilter().isEmpty()) {
+ CollectionConfiguration::setCurrentFilter(helpEngine,
+ config.currentFilter());
+ }
if (!config.cacheDirectory().isEmpty()) {
- helpEngine.setCustomValue(QLatin1String("CacheDirectory"), config.cacheDirectory());
- helpEngine.setCustomValue(QLatin1String("CacheDirRelativeToCollection"),
- config.cacheDirRelativeToCollection());
+ CollectionConfiguration::setCacheDir(helpEngine, config.cacheDirectory(),
+ config.cacheDirRelativeToCollection());
}
- helpEngine.setCustomValue(QLatin1String("EnableFilterFunctionality"),
+ CollectionConfiguration::setFilterFunctionalityEnabled(helpEngine,
config.enableFilterFunctionality());
- helpEngine.setCustomValue(QLatin1String("HideFilterFunctionality"),
- config.hideFilterFunctionality());
- helpEngine.setCustomValue(QLatin1String("EnableDocumentationManager"),
+ CollectionConfiguration::setFilterToolbarVisible(helpEngine,
+ !config.hideFilterFunctionality());
+ CollectionConfiguration::setDocumentationManagerEnabled(helpEngine,
config.enableDocumentationManager());
- helpEngine.setCustomValue(QLatin1String("EnableAddressBar"),
+ CollectionConfiguration::setAddressBarEnabled(helpEngine,
config.enableAddressBar());
- helpEngine.setCustomValue(QLatin1String("HideAddressBar"),
- config.hideAddressBar());
- helpEngine.setCustomValue(QLatin1String("CreationTime"),
+ CollectionConfiguration::setAddressBarVisible(helpEngine,
+ !config.hideAddressBar());
+ CollectionConfiguration::setCreationTime(helpEngine,
QDateTime::currentDateTime().toTime_t());
if (!config.applicationIcon().isEmpty()) {
@@ -491,7 +495,7 @@ int main(int argc, char *argv[])
fprintf(stderr, "Cannot open %s!\n", qPrintable(icon.fileName()));
return -1;
}
- helpEngine.setCustomValue(QLatin1String("ApplicationIcon"), icon.readAll());
+ CollectionConfiguration::setApplicationIcon(helpEngine, icon.readAll());
}
if (config.aboutMenuTexts().count()) {
@@ -503,7 +507,7 @@ int main(int argc, char *argv[])
s << it.value();
++it;
}
- helpEngine.setCustomValue(QLatin1String("AboutMenuTexts"), ba);
+ CollectionConfiguration::setAboutMenuTexts(helpEngine, ba);
}
if (!config.aboutIcon().isEmpty()) {
@@ -512,7 +516,7 @@ int main(int argc, char *argv[])
fprintf(stderr, "Cannot open %s!\n", qPrintable(icon.fileName()));
return -1;
}
- helpEngine.setCustomValue(QLatin1String("AboutIcon"), icon.readAll());
+ CollectionConfiguration::setAboutIcon(helpEngine, icon.readAll());
}
if (config.aboutTextFiles().count()) {
@@ -560,14 +564,14 @@ int main(int argc, char *argv[])
}
++it;
}
- helpEngine.setCustomValue(QLatin1String("AboutTexts"), ba);
+ CollectionConfiguration::setAboutTexts(helpEngine, ba);
if (imgData.count()) {
QByteArray imageData;
QBuffer buffer(&imageData);
buffer.open(QIODevice::WriteOnly);
QDataStream out(&buffer);
out << imgData;
- helpEngine.setCustomValue(QLatin1String("AboutImages"), imageData);
+ CollectionConfiguration::setAboutImages(helpEngine, imageData);
}
}
diff --git a/tools/assistant/tools/qcollectiongenerator/qcollectiongenerator.pro b/tools/assistant/tools/qcollectiongenerator/qcollectiongenerator.pro
index cf70e48..98e6a31 100644
--- a/tools/assistant/tools/qcollectiongenerator/qcollectiongenerator.pro
+++ b/tools/assistant/tools/qcollectiongenerator/qcollectiongenerator.pro
@@ -1,14 +1,17 @@
-QT += xml network
+QT += xml \
+ network
TEMPLATE = app
DESTDIR = ../../../../bin
TARGET = qcollectiongenerator
-CONFIG += qt warn_on help console
+CONFIG += qt \
+ warn_on \
+ help \
+ console
CONFIG -= app_bundle
-
-target.path=$$[QT_INSTALL_BINS]
+target.path = $$[QT_INSTALL_BINS]
INSTALLS += target
-
SOURCES += ../shared/helpgenerator.cpp \
- main.cpp
-
-HEADERS += ../shared/helpgenerator.h
+ main.cpp \
+ ../shared/collectionconfiguration.cpp
+HEADERS += ../shared/helpgenerator.h \
+ ../shared/collectionconfiguration.h
diff --git a/tools/assistant/tools/shared/collectionconfiguration.cpp b/tools/assistant/tools/shared/collectionconfiguration.cpp
new file mode 100644
index 0000000..d0650e4
--- /dev/null
+++ b/tools/assistant/tools/shared/collectionconfiguration.cpp
@@ -0,0 +1,509 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Assistant of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "collectionconfiguration.h"
+
+#include <QtHelp/QHelpEngineCore>
+
+QT_BEGIN_NAMESPACE
+
+namespace {
+ const QString ListSeparator(QLatin1String("|"));
+
+ const QString AboutIconKey(QLatin1String("AboutIcon"));
+ const QString AboutImagesKey(QLatin1String("AboutImages"));
+ const QString AboutMenuTextsKey(QLatin1String("AboutMenuTexts"));
+ const QString AboutTextsKey(QLatin1String("AboutTexts"));
+ const QString AppFontKey(QLatin1String("appFont"));
+ const QString ApplicationIconKey(QLatin1String("ApplicationIcon"));
+ const QString AppWritingSystemKey(QLatin1String("appWritingSystem"));
+ const QString BookmarksKey(QLatin1String("Bookmarks"));
+ const QString BrowserFontKey(QLatin1String("browserFont"));
+ const QString BrowserWritingSystemKey(QLatin1String("browserWritingSystem"));
+ const QString CacheDirKey(QLatin1String("CacheDirectory"));
+ const QString CacheDirRelativeToCollectionKey(QLatin1String("CacheDirRelativeToCollection"));
+ const QString CreationTimeKey(QLatin1String("CreationTime"));
+ const QString CurrentFilterKey(QLatin1String("CurrentFilter"));
+ const QString DefaultHomePageKey(QLatin1String("defaultHomepage"));
+ const QString DocUpdatePendingKey(QLatin1String("DocUpdate"));
+ const QString EnableAddressBarKey(QLatin1String("EnableAddressBar"));
+ const QString EnableDocManagerKey(QLatin1String("EnableDocumentationManager"));
+ const QString EnableFilterKey(QLatin1String("EnableFilterFunctionality"));
+ const QString FilterToolbarHiddenKey(QLatin1String("HideFilterFunctionality"));
+ const QString HideAddressBarKey(QLatin1String("HideAddressBar"));
+ const QString HomePageKey(QLatin1String("homepage"));
+ const QString LastPageKey(QLatin1String("LastTabPage"));
+ const QString LastShownPagesKey(QLatin1String("LastShownPages"));
+ const QString LastZoomFactorsKey(QLatin1String(
+#if !defined(QT_NO_WEBKIT)
+ "LastPagesZoomWebView"
+#else
+ "LastPagesZoomTextBrowser"
+#endif
+ ));
+ const QString MainWindowKey(QLatin1String("MainWindow"));
+ const QString MainWindowGeometryKey(QLatin1String("MainWindowGeometry"));
+ const QString SearchWasAttachedKey(QLatin1String("SearchWasAttached"));
+ const QString StartOptionKey(QLatin1String("StartOption"));
+ const QString UnfilteredInsertedKey(QLatin1String("UnfilteredFilterInserted"));
+ const QString UseAppFontKey(QLatin1String("useAppFont"));
+ const QString UseBrowserFontKey(QLatin1String("useBrowserFont"));
+ const QString VersionKey(QString(QLatin1String("qtVersion%1$$$%2")).
+ arg(QLatin1String(QT_VERSION_STR)));
+ const QString WindowTitleKey(QLatin1String("WindowTitle"));
+} // anonymous namespace
+
+const QString CollectionConfiguration::DefaultZoomFactor(QLatin1String("0.0"));
+
+uint CollectionConfiguration::creationTime(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(CreationTimeKey, 0).toUInt();
+}
+
+void CollectionConfiguration::setCreationTime(QHelpEngineCore &helpEngine, uint time)
+{
+ helpEngine.setCustomValue(CreationTimeKey, time);
+}
+
+const QString CollectionConfiguration::windowTitle(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(WindowTitleKey).toString();
+}
+
+void CollectionConfiguration::setWindowTitle(QHelpEngineCore &helpEngine,
+ const QString &windowTitle)
+{
+ helpEngine.setCustomValue(WindowTitleKey, windowTitle);
+}
+
+
+int CollectionConfiguration::lastTabPage(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(LastPageKey, 1).toInt();
+}
+
+void CollectionConfiguration::setLastTabPage(QHelpEngineCore &helpEngine, int lastPage)
+{
+ helpEngine.setCustomValue(LastPageKey, lastPage);
+}
+
+
+const QStringList CollectionConfiguration::lastShownPages(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(LastShownPagesKey).toString().
+ split(ListSeparator, QString::SkipEmptyParts);
+}
+
+void CollectionConfiguration::setLastShownPages(QHelpEngineCore &helpEngine,
+ const QStringList &lastShownPages)
+{
+ helpEngine.
+ setCustomValue(LastShownPagesKey, lastShownPages.join(ListSeparator));
+}
+
+const QStringList CollectionConfiguration::lastZoomFactors(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(LastZoomFactorsKey).toString().
+ split(ListSeparator, QString::SkipEmptyParts);
+}
+
+void CollectionConfiguration::setLastZoomFactors(QHelpEngineCore &helpEngine,
+ const QStringList &lastZoomFactors)
+{
+ helpEngine.setCustomValue(LastZoomFactorsKey, lastZoomFactors.join(ListSeparator));
+}
+
+const QString CollectionConfiguration::currentFilter(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(CurrentFilterKey).toString();
+}
+
+void CollectionConfiguration::setCurrentFilter(QHelpEngineCore &helpEngine,
+ const QString &currentFilter)
+{
+ helpEngine.setCustomValue(CurrentFilterKey, currentFilter);
+}
+
+const QString CollectionConfiguration::cacheDir(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(CacheDirKey).toString();
+}
+
+bool CollectionConfiguration::cacheDirIsRelativeToCollection(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(CacheDirRelativeToCollectionKey).toBool();
+}
+
+void CollectionConfiguration::setCacheDir(QHelpEngineCore &helpEngine,
+ const QString &cacheDir, bool relativeToCollection)
+{
+ helpEngine.setCustomValue(CacheDirKey, cacheDir);
+ helpEngine.setCustomValue(CacheDirRelativeToCollectionKey,
+ relativeToCollection);
+}
+
+bool CollectionConfiguration::filterFunctionalityEnabled(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(EnableFilterKey, true).toBool();
+}
+
+void CollectionConfiguration::setFilterFunctionalityEnabled(QHelpEngineCore &helpEngine,
+ bool enabled)
+{
+ helpEngine.setCustomValue(EnableFilterKey, enabled);
+}
+
+bool CollectionConfiguration::filterToolbarVisible(const QHelpEngineCore &helpEngine)
+{
+ return !helpEngine.customValue(FilterToolbarHiddenKey, true).toBool();
+}
+
+void CollectionConfiguration::setFilterToolbarVisible(QHelpEngineCore &helpEngine,
+ bool visible)
+{
+ helpEngine.setCustomValue(FilterToolbarHiddenKey, !visible);
+}
+
+bool CollectionConfiguration::addressBarEnabled(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(EnableAddressBarKey, true).toBool();
+}
+
+void CollectionConfiguration::setAddressBarEnabled(QHelpEngineCore &helpEngine,
+ bool enabled)
+{
+ helpEngine.setCustomValue(EnableAddressBarKey, enabled);
+}
+
+bool CollectionConfiguration::addressBarVisible(const QHelpEngineCore &helpEngine)
+{
+ return !helpEngine.customValue(HideAddressBarKey, true).toBool();
+}
+
+void CollectionConfiguration::setAddressBarVisible(QHelpEngineCore &helpEngine,
+ bool visible)
+{
+ helpEngine.setCustomValue(HideAddressBarKey, !visible);
+}
+
+bool CollectionConfiguration::documentationManagerEnabled(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(EnableDocManagerKey, true).toBool();
+}
+
+void CollectionConfiguration::setDocumentationManagerEnabled(QHelpEngineCore &helpEngine,
+ bool enabled)
+{
+ helpEngine.setCustomValue(EnableDocManagerKey, enabled);
+}
+
+const QByteArray CollectionConfiguration::applicationIcon(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(ApplicationIconKey).toByteArray();
+}
+
+void CollectionConfiguration::setApplicationIcon(QHelpEngineCore &helpEngine,
+ const QByteArray &icon)
+{
+ helpEngine.setCustomValue(ApplicationIconKey, icon);
+}
+
+const QByteArray CollectionConfiguration::aboutMenuTexts(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(AboutMenuTextsKey).toByteArray();
+}
+
+void CollectionConfiguration::setAboutMenuTexts(QHelpEngineCore &helpEngine,
+ const QByteArray &texts)
+{
+ helpEngine.setCustomValue(AboutMenuTextsKey, texts);
+}
+
+const QByteArray CollectionConfiguration::aboutIcon(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(AboutIconKey).toByteArray();
+}
+
+void CollectionConfiguration::setAboutIcon(QHelpEngineCore &helpEngine,
+ const QByteArray &icon)
+{
+ helpEngine.setCustomValue(AboutIconKey, icon);
+}
+
+const QByteArray CollectionConfiguration::aboutTexts(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(AboutTextsKey).toByteArray();
+}
+
+void CollectionConfiguration::setAboutTexts(QHelpEngineCore &helpEngine,
+ const QByteArray &texts)
+{
+ helpEngine.setCustomValue(AboutTextsKey, texts);
+}
+
+const QByteArray CollectionConfiguration::aboutImages(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(AboutImagesKey).toByteArray();
+}
+
+void CollectionConfiguration::setAboutImages(QHelpEngineCore &helpEngine,
+ const QByteArray &images)
+{
+ helpEngine.setCustomValue(AboutImagesKey, images);
+}
+
+const QString CollectionConfiguration::defaultHomePage(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(DefaultHomePageKey, QLatin1String("help")).
+ toString();
+}
+
+void CollectionConfiguration::setDefaultHomePage(QHelpEngineCore &helpEngine,
+ const QString &page)
+{
+ helpEngine.setCustomValue(DefaultHomePageKey, page);
+}
+
+const QString CollectionConfiguration::homePage(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(HomePageKey).toString();
+}
+
+void CollectionConfiguration::setHomePage(QHelpEngineCore &helpEngine,
+ const QString &page)
+{
+ helpEngine.setCustomValue(HomePageKey, page);
+}
+
+int CollectionConfiguration::startOption(const QHelpEngineCore &helpEngine)
+{
+ // TODO: After moving to helpengine wrapper, put LastPages in that header file
+ // and use it here as default value.
+ return helpEngine.customValue(StartOptionKey).toInt();
+}
+
+void CollectionConfiguration::setStartOption(QHelpEngineCore &helpEngine,
+ int option)
+{
+ helpEngine.setCustomValue(StartOptionKey, option);
+}
+
+bool CollectionConfiguration::docUpdatePending(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(DocUpdatePendingKey, false).toBool();
+}
+
+void CollectionConfiguration::setDocUpdatePending(QHelpEngineCore &helpEngine,
+ bool pending)
+{
+ helpEngine.setCustomValue(DocUpdatePendingKey, pending);
+}
+
+const QByteArray CollectionConfiguration::bookmarks(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(BookmarksKey).toByteArray();
+}
+
+void CollectionConfiguration::setBookmarks(QHelpEngineCore &helpEngine,
+ const QByteArray &bookmarks)
+{
+ helpEngine.setCustomValue(BookmarksKey, bookmarks);
+}
+
+const QByteArray CollectionConfiguration::mainWindow(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(MainWindowKey).toByteArray();
+}
+
+void CollectionConfiguration::setMainWindow(QHelpEngineCore &helpEngine,
+ const QByteArray &mainWindow)
+{
+ helpEngine.setCustomValue(MainWindowKey, mainWindow);
+}
+
+const QByteArray CollectionConfiguration::mainWindowGeometry(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(MainWindowGeometryKey).toByteArray();
+}
+
+void CollectionConfiguration::setMainWindowGeometry(QHelpEngineCore &helpEngine,
+ const QByteArray &geometry)
+{
+ helpEngine.setCustomValue(MainWindowGeometryKey, geometry);
+}
+
+bool CollectionConfiguration::usesAppFont(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(UseAppFontKey).toBool();
+}
+
+void CollectionConfiguration::setUseAppFont(QHelpEngineCore &helpEngine,
+ bool useAppFont)
+{
+ helpEngine.setCustomValue(UseAppFontKey, useAppFont);
+}
+
+bool CollectionConfiguration::usesBrowserFont(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(UseBrowserFontKey, false).toBool();
+}
+
+void CollectionConfiguration::setUseBrowserFont(QHelpEngineCore &helpEngine,
+ bool useBrowserFont)
+{
+ helpEngine.setCustomValue(UseBrowserFontKey, useBrowserFont);
+}
+
+const QFont CollectionConfiguration::appFont(const QHelpEngineCore &helpEngine)
+{
+ return qVariantValue<QFont>(helpEngine.customValue(AppFontKey));
+}
+
+void CollectionConfiguration::setAppFont(QHelpEngineCore &helpEngine,
+ const QFont &font)
+{
+ helpEngine.setCustomValue(AppFontKey, font);
+}
+
+QFontDatabase::WritingSystem CollectionConfiguration::appWritingSystem(const QHelpEngineCore &helpEngine)
+{
+ return static_cast<QFontDatabase::WritingSystem>(
+ helpEngine.customValue(AppWritingSystemKey).toInt());
+}
+
+void CollectionConfiguration::setAppWritingSystem(QHelpEngineCore &helpEngine,
+ QFontDatabase::WritingSystem system)
+{
+ helpEngine.setCustomValue(AppWritingSystemKey, system);
+}
+
+const QFont CollectionConfiguration::browserFont(const QHelpEngineCore &helpEngine)
+{
+ return qVariantValue<QFont>(helpEngine.customValue(BrowserFontKey));
+}
+
+void CollectionConfiguration::setBrowserFont(QHelpEngineCore &helpEngine,
+ const QFont &font)
+{
+ helpEngine.setCustomValue(BrowserFontKey, font);
+}
+
+QFontDatabase::WritingSystem CollectionConfiguration::browserWritingSystem(const QHelpEngineCore &helpEngine)
+{
+ return static_cast<QFontDatabase::WritingSystem>(
+ helpEngine.customValue(BrowserWritingSystemKey).toInt());
+}
+
+void CollectionConfiguration::setBrowserWritingSystem(QHelpEngineCore &helpEngine,
+ QFontDatabase::WritingSystem system)
+{
+ helpEngine.setCustomValue(BrowserWritingSystemKey, system);
+}
+
+bool CollectionConfiguration::unfilteredInserted(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(UnfilteredInsertedKey).toInt() == 1;
+}
+
+void CollectionConfiguration::setUnfilteredInserted(QHelpEngineCore &helpEngine)
+{
+ helpEngine.setCustomValue(UnfilteredInsertedKey, 1);
+}
+
+const QStringList CollectionConfiguration::qtDocInfo(const QHelpEngineCore &helpEngine,
+ const QString &component)
+{
+ return helpEngine.customValue(VersionKey.arg(component)).toString().
+ split(ListSeparator);
+}
+
+void CollectionConfiguration::setQtDocInfo(QHelpEngineCore &helpEngine,
+ const QString &component, const QStringList &doc)
+{
+ helpEngine.setCustomValue(VersionKey.arg(component),
+ doc.join(ListSeparator));
+}
+
+bool CollectionConfiguration::searchWasAttached(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(SearchWasAttachedKey).toBool();
+}
+
+void CollectionConfiguration::setSearchWasAttached(QHelpEngineCore &helpEngine,
+ bool attached)
+{
+ helpEngine.setCustomValue(SearchWasAttachedKey, attached);
+}
+
+bool CollectionConfiguration::hasFontSettings(const QHelpEngineCore &helpEngine)
+{
+ return helpEngine.customValue(UseAppFontKey).isValid();
+}
+
+bool CollectionConfiguration::isNewer(const QHelpEngineCore &newer,
+ const QHelpEngineCore &older)
+{
+ return creationTime(newer) > creationTime(older);
+}
+
+void CollectionConfiguration::copyConfiguration(const QHelpEngineCore &source,
+ QHelpEngineCore &target)
+{
+ setCreationTime(target, creationTime(source));
+ setWindowTitle(target, windowTitle(source));
+ setLastShownPages(target, lastShownPages(source));
+ setLastZoomFactors(target, lastZoomFactors(source));
+ setCurrentFilter(target, currentFilter(source));
+ setCacheDir(target, cacheDir(source), cacheDirIsRelativeToCollection(source));
+ setFilterFunctionalityEnabled(target, filterFunctionalityEnabled(source));
+ setFilterToolbarVisible(target, filterToolbarVisible(source));
+ setAddressBarEnabled(target, addressBarEnabled(source));
+ setAddressBarVisible(target, addressBarVisible(source));
+ setDocumentationManagerEnabled(target, documentationManagerEnabled(source));
+ setApplicationIcon(target, applicationIcon(source));
+ setAboutMenuTexts(target, aboutMenuTexts(source));
+ setAboutIcon(target, aboutIcon(source));
+ setAboutTexts(target, aboutTexts(source));
+ setAboutImages(target, aboutImages(source));
+ setDefaultHomePage(target, defaultHomePage(source));
+}
+
+QT_END_NAMESPACE
diff --git a/tools/assistant/tools/shared/collectionconfiguration.h b/tools/assistant/tools/shared/collectionconfiguration.h
new file mode 100644
index 0000000..48d2803
--- /dev/null
+++ b/tools/assistant/tools/shared/collectionconfiguration.h
@@ -0,0 +1,198 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Assistant of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef COLLECTIONCONFIGURATION_H
+#define COLLECTIONCONFIGURATION_H
+
+#include <QtCore/QByteArray>
+#include <QtCore/QCoreApplication>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+#include <QtGui/QFont>
+#include <QtGui/QFontDatabase>
+
+QT_BEGIN_NAMESPACE
+
+class QHelpEngineCore;
+
+class CollectionConfiguration
+{
+public:
+ static int lastTabPage(const QHelpEngineCore &helpEngine);
+ static void setLastTabPage(QHelpEngineCore &helpEngine, int lastPage);
+
+ static const QStringList lastShownPages(const QHelpEngineCore &helpEngine);
+ static void setLastShownPages(QHelpEngineCore &helpEngine,
+ const QStringList &lastShownPages);
+
+
+ // TODO: Don't allow last pages and zoom factors to be set in isolation
+ // Perhaps also fill up missing elements automatically or assert.
+ static const QStringList lastZoomFactors(const QHelpEngineCore &helpEngine);
+ static void setLastZoomFactors(QHelpEngineCore &helpEngine,
+ const QStringList &lastZoomFactors);
+
+ static const QString currentFilter(const QHelpEngineCore &helpEngine);
+ static void setCurrentFilter(QHelpEngineCore &helpEngine,
+ const QString &currentFilter);
+
+ static const QString cacheDir(const QHelpEngineCore &helpEngine);
+ static bool cacheDirIsRelativeToCollection(const QHelpEngineCore &helpEngine);
+ static void setCacheDir(QHelpEngineCore &helpEngine,
+ const QString &cacheDir, bool relativeToCollection);
+
+ static bool filterFunctionalityEnabled(const QHelpEngineCore &helpEngine);
+ static void setFilterFunctionalityEnabled(QHelpEngineCore &helpEngine,
+ bool enabled);
+
+ static bool filterToolbarVisible(const QHelpEngineCore &helpEngine);
+ static void setFilterToolbarVisible(QHelpEngineCore &helpEngine,
+ bool visible);
+
+ static bool addressBarEnabled(const QHelpEngineCore &helpEngine);
+ static void setAddressBarEnabled(QHelpEngineCore &helpEngine, bool enabled);
+
+ static bool addressBarVisible(const QHelpEngineCore &helpEngine);
+ static void setAddressBarVisible(QHelpEngineCore &helpEngine, bool visible);
+
+ static uint creationTime(const QHelpEngineCore &helpEngine);
+ static void setCreationTime(QHelpEngineCore &helpEngine, uint time);
+
+ static const QString windowTitle(const QHelpEngineCore &helpEngine);
+ static void setWindowTitle(QHelpEngineCore &helpEngine,
+ const QString &windowTitle);
+
+ static bool documentationManagerEnabled(const QHelpEngineCore &helpEngine);
+ static void setDocumentationManagerEnabled(QHelpEngineCore &helpEngine,
+ bool enabled);
+
+ static const QByteArray applicationIcon(const QHelpEngineCore &helpEngine);
+ static void setApplicationIcon(QHelpEngineCore &helpEngine,
+ const QByteArray &icon);
+
+ static const QString homePage(const QHelpEngineCore &helpEngine);
+ static void setHomePage(QHelpEngineCore &helpEngine, const QString &page);
+
+ static int startOption(const QHelpEngineCore &helpEngine);
+ static void setStartOption(QHelpEngineCore &helpEngine, int option);
+
+ // TODO: Encapsulate encoding from/to QByteArray here
+ static const QByteArray aboutMenuTexts(const QHelpEngineCore &helpEngine);
+ static void setAboutMenuTexts(QHelpEngineCore &helpEngine,
+ const QByteArray &texts);
+
+ static const QByteArray aboutIcon(const QHelpEngineCore &helpEngine);
+ static void setAboutIcon(QHelpEngineCore &helpEngine,
+ const QByteArray &icon);
+
+ // TODO: Encapsulate encoding from/to QByteArray here
+ static const QByteArray aboutTexts(const QHelpEngineCore &helpEngine);
+ static void setAboutTexts(QHelpEngineCore &helpEngine,
+ const QByteArray &texts);
+
+ static const QByteArray aboutImages(const QHelpEngineCore &helpEngine);
+ static void setAboutImages(QHelpEngineCore &helpEngine,
+ const QByteArray &images);
+
+ static const QString defaultHomePage(const QHelpEngineCore &helpEngine);
+ static void setDefaultHomePage(QHelpEngineCore &helpEngine,
+ const QString &page);
+
+ static bool docUpdatePending(const QHelpEngineCore &helpEngine);
+ static void setDocUpdatePending(QHelpEngineCore &helpEngine, bool pending);
+
+ // TODO: Put these GUI-specific functions in the help engine wrapper
+ static const QByteArray bookmarks(const QHelpEngineCore &helpEngine);
+ static void setBookmarks(QHelpEngineCore &helpEngine,
+ const QByteArray &bookmarks);
+
+ static const QByteArray mainWindow(const QHelpEngineCore &helpEngine);
+ static void setMainWindow(QHelpEngineCore &helpEngine,
+ const QByteArray &mainWindow);
+
+ static const QByteArray mainWindowGeometry(const QHelpEngineCore &helpEngine);
+ static void setMainWindowGeometry(QHelpEngineCore &helpEngine,
+ const QByteArray &geometry);
+
+ static bool usesAppFont(const QHelpEngineCore &helpEngine);
+ static void setUseAppFont(QHelpEngineCore &helpEngine, bool useAppFont);
+
+ static bool usesBrowserFont(const QHelpEngineCore &helpEngine);
+ static void setUseBrowserFont(QHelpEngineCore &helpEngine,
+ bool useBrowserFont);
+
+ static const QFont appFont(const QHelpEngineCore &helpEngine);
+ static void setAppFont(QHelpEngineCore &helpEngine, const QFont &font);
+
+ static QFontDatabase::WritingSystem appWritingSystem(const QHelpEngineCore &helpEngine);
+ static void setAppWritingSystem(QHelpEngineCore &helpEngine,
+ QFontDatabase::WritingSystem system);
+
+ static const QFont browserFont(const QHelpEngineCore &helpEngine);
+ static void setBrowserFont(QHelpEngineCore &helpEngine, const QFont &font);
+
+ static QFontDatabase::WritingSystem browserWritingSystem(const QHelpEngineCore &helpEngine);
+ static void setBrowserWritingSystem(QHelpEngineCore &helpEngine,
+ QFontDatabase::WritingSystem system);
+
+ static bool unfilteredInserted(const QHelpEngineCore &helpEngine);
+ static void setUnfilteredInserted(QHelpEngineCore &helpEngine);
+
+ static const QStringList qtDocInfo(const QHelpEngineCore &helpEngine,
+ const QString &component);
+ static void setQtDocInfo(QHelpEngineCore &helpEngine,
+ const QString &component, const QStringList &doc);
+
+ static bool searchWasAttached(const QHelpEngineCore &helpEngine);
+ static void setSearchWasAttached(QHelpEngineCore &helpEngine, bool attached);
+
+ static bool hasFontSettings(const QHelpEngineCore &helpEngine);
+ static bool isNewer(const QHelpEngineCore &newer,
+ const QHelpEngineCore &older);
+ static void copyConfiguration(const QHelpEngineCore &source,
+ QHelpEngineCore &target);
+
+ static const QString DefaultZoomFactor;
+};
+
+QT_END_NAMESPACE
+
+#endif // COLLECTIONCONFIGURATION_H