From 079f090ffbb9af349b376d3a080304228eab43e6 Mon Sep 17 00:00:00 2001 From: ck Date: Thu, 19 Nov 2009 16:14:54 +0100 Subject: Assistant: Check qch files for update. We install watchers on the current collection's help files and react accordingly when they are deleted or replaced. Note that this has no effect on Windows, because opened files cannot be written or deleted by another application. Task-number: QTBUG-2348 Reviewed-by: kh1 --- tools/assistant/tools/assistant/mainwindow.cpp | 57 +++++++++++++++++++--- tools/assistant/tools/assistant/mainwindow.h | 3 ++ .../tools/assistant/preferencesdialog.cpp | 22 ++++++--- .../assistant/tools/assistant/preferencesdialog.h | 5 +- tools/assistant/tools/assistant/qtdocinstaller.cpp | 18 +++++-- tools/assistant/tools/assistant/qtdocinstaller.h | 4 +- tools/assistant/tools/assistant/remotecontrol.cpp | 22 ++++++--- tools/assistant/tools/assistant/remotecontrol.h | 5 +- 8 files changed, 112 insertions(+), 24 deletions(-) diff --git a/tools/assistant/tools/assistant/mainwindow.cpp b/tools/assistant/tools/assistant/mainwindow.cpp index bc8b86f..9a2a5bd 100644 --- a/tools/assistant/tools/assistant/mainwindow.cpp +++ b/tools/assistant/tools/assistant/mainwindow.cpp @@ -57,6 +57,7 @@ #include #include #include +#include #include #include #include @@ -93,6 +94,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); @@ -198,7 +200,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 +239,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); } @@ -297,8 +306,11 @@ 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; } @@ -317,14 +329,18 @@ 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, @@ -783,7 +799,7 @@ void MainWindow::showTopicChooser(const QMap &links, void MainWindow::showPreferences() { - PreferencesDialog dia(m_helpEngine, this); + PreferencesDialog dia(m_helpEngine, m_qchWatcher, this); connect(&dia, SIGNAL(updateApplicationFont()), this, SLOT(updateApplicationFont())); @@ -1125,4 +1141,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..d63c109 100644 --- a/tools/assistant/tools/assistant/preferencesdialog.cpp +++ b/tools/assistant/tools/assistant/preferencesdialog.cpp @@ -46,7 +46,8 @@ #include "centralwidget.h" #include "aboutdialog.h" -#include +#include +#include #include #include @@ -60,11 +61,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); @@ -275,7 +278,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 +387,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(); 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..42085cb 100644 --- a/tools/assistant/tools/assistant/qtdocinstaller.cpp +++ b/tools/assistant/tools/assistant/qtdocinstaller.cpp @@ -42,12 +42,15 @@ #include #include #include +#include #include #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; @@ -131,15 +134,24 @@ 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()); } + Q_ASSERT(m_qchWatcher->files().count() + == helpEngine->registeredDocumentations().count()); + helpEngine->setCustomValue(versionKey, fi.lastModified().toString(Qt::ISODate) + QLatin1String("|") + 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 #include +#include #include #include #include @@ -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 -- cgit v0.12 From af651b725ea2a666bff20a749d40549820a62050 Mon Sep 17 00:00:00 2001 From: ck Date: Mon, 23 Nov 2009 11:39:00 +0100 Subject: Assistant: Add dedicated class for access to custom values. Reviewed-by: kh1 --- tools/assistant/tools/assistant/assistant.pro | 115 +++-- .../assistant/tools/assistant/bookmarkmanager.cpp | 6 +- tools/assistant/tools/assistant/centralwidget.cpp | 78 ++-- tools/assistant/tools/assistant/helpviewer.cpp | 35 +- tools/assistant/tools/assistant/main.cpp | 97 +--- tools/assistant/tools/assistant/mainwindow.cpp | 68 ++- .../tools/assistant/preferencesdialog.cpp | 86 ++-- tools/assistant/tools/assistant/qtdocinstaller.cpp | 20 +- .../assistant/tools/qcollectiongenerator/main.cpp | 50 +- .../qcollectiongenerator/qcollectiongenerator.pro | 19 +- .../tools/shared/collectionconfiguration.cpp | 509 +++++++++++++++++++++ .../tools/shared/collectionconfiguration.h | 198 ++++++++ 12 files changed, 929 insertions(+), 352 deletions(-) create mode 100644 tools/assistant/tools/shared/collectionconfiguration.cpp create mode 100644 tools/assistant/tools/shared/collectionconfiguration.h 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 #include @@ -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 lastDepths; QList 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 #include @@ -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(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 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::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 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 (viewer); @@ -1185,8 +1166,7 @@ void CentralWidget::getBrowserFontFor(QWidget *viewer, QFont *font) } #endif } else { - *font = qVariantValue(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 #include @@ -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 +#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()) { - QVectorzoomList = 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 9a2a5bd..1a129c3 100644 --- a/tools/assistant/tools/assistant/mainwindow.cpp +++ b/tools/assistant/tools/assistant/mainwindow.cpp @@ -53,6 +53,7 @@ #include "searchwidget.h" #include "qtdocinstaller.h" #include "xbelsupport.h" +#include "../shared/collectionconfiguration.h" #include #include @@ -152,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); @@ -169,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 { @@ -183,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(); @@ -264,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); @@ -314,13 +316,12 @@ bool MainWindow::initHelpDB() 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); @@ -346,9 +347,8 @@ void MainWindow::lookForNewQtDocumentation() 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(); } @@ -663,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); @@ -677,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()); @@ -694,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); @@ -706,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()); @@ -722,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; @@ -837,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; @@ -864,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); @@ -997,8 +991,8 @@ void MainWindow::showSearchWidget() void MainWindow::updateApplicationFont() { QFont font = qApp->font(); - if (m_helpEngine->customValue(QLatin1String("useAppFont")).toBool()) - font = qVariantValue(m_helpEngine->customValue(QLatin1String("appFont"))); + if (CollectionConfiguration::usesAppFont(*m_helpEngine)) + font = CollectionConfiguration::appFont(*m_helpEngine); qApp->setFont(font, "QWidget"); } diff --git a/tools/assistant/tools/assistant/preferencesdialog.cpp b/tools/assistant/tools/assistant/preferencesdialog.cpp index d63c109..1fffacd 100644 --- a/tools/assistant/tools/assistant/preferencesdialog.cpp +++ b/tools/assistant/tools/assistant/preferencesdialog.cpp @@ -45,6 +45,7 @@ #include "fontpanel.h" #include "centralwidget.h" #include "aboutdialog.h" +#include "../shared/collectionconfiguration.h" #include #include @@ -76,11 +77,10 @@ PreferencesDialog::PreferencesDialog(QHelpEngineCore *helpEngine, 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(); @@ -121,27 +121,22 @@ PreferencesDialog::PreferencesDialog(QHelpEngineCore *helpEngine, 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) { @@ -152,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() @@ -416,31 +411,26 @@ void PreferencesDialog::updateFontSettingsPage() const QString customSettings(tr("Use custom settings")); m_appFontPanel->setTitle(customSettings); - QLatin1String key = QLatin1String("appFont"); - QFont font = qVariantValue(m_helpEngine->customValue(key)); + QFont font = CollectionConfiguration::appFont(*m_helpEngine); m_appFontPanel->setSelectedFont(font); - key = QLatin1String("appWritingSystem"); - QFontDatabase::WritingSystem system = static_cast - (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(m_helpEngine->customValue(key)); + font = CollectionConfiguration::browserFont(*m_helpEngine); m_browserFontPanel->setSelectedFont(font); - key = QLatin1String("browserWritingSystem"); - system = static_cast - (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))); @@ -486,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())); @@ -520,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/qtdocinstaller.cpp b/tools/assistant/tools/assistant/qtdocinstaller.cpp index 42085cb..3f82786 100644 --- a/tools/assistant/tools/assistant/qtdocinstaller.cpp +++ b/tools/assistant/tools/assistant/qtdocinstaller.cpp @@ -44,6 +44,7 @@ #include #include #include +#include "../shared/collectionconfiguration.h" #include "qtdocinstaller.h" QT_BEGIN_NAMESPACE @@ -100,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; @@ -119,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; @@ -152,8 +149,9 @@ bool QtDocInstaller::installDoc(const QString &name, QHelpEngineCore *helpEngine Q_ASSERT(m_qchWatcher->files().count() == helpEngine->registeredDocumentations().count()); - helpEngine->setCustomValue(versionKey, fi.lastModified().toString(Qt::ISODate) - + QLatin1String("|") + fi.absoluteFilePath()); + CollectionConfiguration::setQtDocInfo(*helpEngine, name, + QStringList() << fi.lastModified().toString(Qt::ISODate) + << fi.absoluteFilePath()); return true; } } 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 @@ -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 + +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 ¤tFilter) +{ + 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(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( + 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(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( + 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 +#include +#include +#include +#include +#include + +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 ¤tFilter); + + 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 -- cgit v0.12