diff options
author | Morten Johan Sørvig <morten.sorvig@nokia.com> | 2009-11-24 12:58:13 (GMT) |
---|---|---|
committer | Morten Johan Sørvig <morten.sorvig@nokia.com> | 2009-11-24 12:58:13 (GMT) |
commit | c086dc9056ee9777938026aec47dccb239a328a7 (patch) | |
tree | e0170f0236f4d67920e14ce80e7b4028408d7650 | |
parent | a51ccecc887c38fe9d067e52ca99d3ec78e64c2a (diff) | |
parent | af651b725ea2a666bff20a749d40549820a62050 (diff) | |
download | Qt-c086dc9056ee9777938026aec47dccb239a328a7.zip Qt-c086dc9056ee9777938026aec47dccb239a328a7.tar.gz Qt-c086dc9056ee9777938026aec47dccb239a328a7.tar.bz2 |
Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt
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 ¤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<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 ¤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 |