From fa32d9a9d0169a63c064da9dde24bd1b5d2a5028 Mon Sep 17 00:00:00 2001
From: kh1 <qt-info@nokia.com>
Date: Tue, 23 Mar 2010 16:56:59 +0100
Subject: [PATCH] Make use of the core engine, no need for gui stuff.

---
 src/plugins/help/centralwidget.cpp | 35 +++++++++-----------
 src/plugins/help/centralwidget.h   |  2 --
 src/plugins/help/helpplugin.cpp    |  2 +-
 src/shared/help/helpviewer.cpp     | 52 ++++++++++++++----------------
 src/shared/help/helpviewer.h       |  6 ++--
 5 files changed, 44 insertions(+), 53 deletions(-)

diff --git a/src/plugins/help/centralwidget.cpp b/src/plugins/help/centralwidget.cpp
index a7a5b71594e..6879da77003 100644
--- a/src/plugins/help/centralwidget.cpp
+++ b/src/plugins/help/centralwidget.cpp
@@ -28,6 +28,7 @@
 **************************************************************************/
 
 #include "centralwidget.h"
+#include "helpmanager.h"
 #include "helpviewer.h"
 #include "topicchooser.h"
 
@@ -78,12 +79,10 @@ CentralWidget::CentralWidget(QHelpEngine *engine, QWidget *parent)
     : QWidget(parent)
     , findBar(0)
     , tabWidget(0)
-    , helpEngine(engine)
     , printer(0)
 {
     lastTabPage = 0;
     globalActionList.clear();
-    collectionFile = helpEngine->collectionFile();
 
     tabWidget = new QTabWidget;
     tabWidget->setDocumentMode(true);
@@ -126,11 +125,6 @@ CentralWidget::~CentralWidget()
     delete printer;
 #endif
 
-
-    QHelpEngineCore engine(collectionFile, 0);
-    if (!engine.setupData())
-        return;
-
     QString zoomCount;
     QString currentPages;
     for (int i = 0; i < tabWidget->count(); ++i) {
@@ -140,9 +134,11 @@ CentralWidget::~CentralWidget()
             zoomCount += QString::number(viewer->zoom()) + QLatin1Char('|');
         }
     }
-    engine.setCustomValue(QLatin1String("LastTabPage"), lastTabPage);
-    engine.setCustomValue(QLatin1String("LastShownPages"), currentPages);
-    engine.setCustomValue(QLatin1String("LastShownPagesZoom"), zoomCount);
+
+    QHelpEngineCore *engine = &HelpManager::helpEngineCore();
+    engine->setCustomValue(QLatin1String("LastTabPage"), lastTabPage);
+    engine->setCustomValue(QLatin1String("LastShownPages"), currentPages);
+    engine->setCustomValue(QLatin1String("LastShownPagesZoom"), zoomCount);
 }
 
 CentralWidget *CentralWidget::instance()
@@ -222,7 +218,7 @@ void CentralWidget::setSource(const QUrl &url)
         qobject_cast<HelpViewer*>(tabWidget->widget(lastTabPage));
 
     if (!viewer && !lastViewer) {
-        viewer = new HelpViewer(helpEngine, this, this);
+        viewer = new HelpViewer(this, this);
         viewer->installEventFilter(this);
         lastTabPage = tabWidget->addTab(viewer, QString());
         tabWidget->setCurrentIndex(lastTabPage);
@@ -241,19 +237,20 @@ void CentralWidget::setSource(const QUrl &url)
 
 void CentralWidget::setLastShownPages()
 {
-    QString value = helpEngine->customValue(QLatin1String("LastShownPages"),
+    const QHelpEngineCore &engine = HelpManager::helpEngineCore();
+    QString value = engine.customValue(QLatin1String("LastShownPages"),
         QString()).toString();
     const QStringList lastShownPageList = value.split(QLatin1Char('|'),
         QString::SkipEmptyParts);
     const int pageCount = lastShownPageList.count();
 
-    QString homePage = helpEngine->customValue(QLatin1String("DefaultHomePage"),
+    QString homePage = engine.customValue(QLatin1String("DefaultHomePage"),
         QLatin1String("about:blank")).toString();
 
-    int option = helpEngine->customValue(QLatin1String("StartOption"), 2).toInt();
+    int option = engine.customValue(QLatin1String("StartOption"), 2).toInt();
     if (option == 0 || option == 1 || pageCount <= 0) {
         if (option == 0) {
-            homePage = helpEngine->customValue(QLatin1String("HomePage"),
+            homePage = engine.customValue(QLatin1String("HomePage"),
                 homePage).toString();
         } else if (option == 1) {
             homePage = QLatin1String("about:blank");
@@ -262,7 +259,7 @@ void CentralWidget::setLastShownPages()
         return;
     }
 
-    value = helpEngine->customValue(QLatin1String("LastShownPagesZoom"),
+    value = engine.customValue(QLatin1String("LastShownPagesZoom"),
         QString()).toString();
     QVector<QString> zoomVector = value.split(QLatin1Char('|'),
         QString::SkipEmptyParts).toVector();
@@ -275,7 +272,7 @@ void CentralWidget::setLastShownPages()
     for (; it != lastShownPageList.constEnd(); ++it, ++zIt)
         setSourceInNewTab((*it), (*zIt).toInt());
 
-    int tab = helpEngine->customValue(QLatin1String("LastTabPage"), 0).toInt();
+    int tab = engine.customValue(QLatin1String("LastTabPage"), 0).toInt();
     tabWidget->setCurrentIndex(tab);
 }
 
@@ -430,7 +427,7 @@ void CentralWidget::setGlobalActions(const QList<QAction*> &actions)
 
 void CentralWidget::setSourceInNewTab(const QUrl &url, int zoom)
 {
-    HelpViewer* viewer = new HelpViewer(helpEngine, this, this);
+    HelpViewer* viewer = new HelpViewer(this, this);
     viewer->installEventFilter(this);
     viewer->setZoom(zoom);
     viewer->setSource(url);
@@ -450,7 +447,7 @@ void CentralWidget::setSourceInNewTab(const QUrl &url, int zoom)
 
 HelpViewer *CentralWidget::newEmptyTab()
 {
-    HelpViewer* viewer = new HelpViewer(helpEngine, this, this);
+    HelpViewer* viewer = new HelpViewer(this, this);
     viewer->installEventFilter(this);
     viewer->setFocus(Qt::OtherFocusReason);
 #if defined(QT_NO_WEBKIT)
diff --git a/src/plugins/help/centralwidget.h b/src/plugins/help/centralwidget.h
index ed30eb1ad1e..31ce011aabc 100644
--- a/src/plugins/help/centralwidget.h
+++ b/src/plugins/help/centralwidget.h
@@ -134,12 +134,10 @@ private:
 
 private:
     int lastTabPage;
-    QString collectionFile;
     QList<QAction*> globalActionList;
 
     QWidget *findBar;
     QTabWidget* tabWidget;
-    QHelpEngine *helpEngine;
     QPrinter *printer;
 };
 
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index b963e14175d..dc3e9909f7a 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -536,7 +536,7 @@ void HelpPlugin::createRightPaneContextViewer()
     rightPaneStyledBar->setLayout(hboxLayout);
     rightPaneLayout->addWidget(rightPaneStyledBar);
 
-    m_helpViewerForSideBar = new HelpViewer(m_helpEngine, 0, rightPaneSideBar);
+    m_helpViewerForSideBar = new HelpViewer(0, rightPaneSideBar);
     rightPaneLayout->addWidget(m_helpViewerForSideBar);
     rightPaneLayout->addWidget(new Core::FindToolBarPlaceHolder(rightPaneSideBar));
     rightPaneSideBar->setFocusProxy(m_helpViewerForSideBar);
diff --git a/src/shared/help/helpviewer.cpp b/src/shared/help/helpviewer.cpp
index aae50b2ec99..43b0bc2a06b 100644
--- a/src/shared/help/helpviewer.cpp
+++ b/src/shared/help/helpviewer.cpp
@@ -28,7 +28,9 @@
 **************************************************************************/
 
 #include "helpviewer.h"
+
 #include "centralwidget.h"
+#include "helpmanager.h"
 
 #include <QtCore/QDir>
 #include <QtCore/QEvent>
@@ -43,7 +45,7 @@
 #include <QtGui/QMessageBox>
 #include <QtGui/QDesktopServices>
 
-#include <QtHelp/QHelpEngine>
+#include <QtHelp/QHelpEngineCore>
 
 #include <QNetworkAccessManager>
 #include <QNetworkReply>
@@ -104,19 +106,15 @@ qint64 HelpNetworkReply::readData(char *buffer, qint64 maxlen)
 class HelpNetworkAccessManager : public QNetworkAccessManager
 {
 public:
-    HelpNetworkAccessManager(QHelpEngine *engine, QObject *parent);
+    HelpNetworkAccessManager(QObject *parent);
 
 protected:
     virtual QNetworkReply *createRequest(Operation op,
         const QNetworkRequest &request, QIODevice *outgoingData = 0);
-
-private:
-    QHelpEngine *helpEngine;
 };
 
-HelpNetworkAccessManager::HelpNetworkAccessManager(QHelpEngine *engine,
-        QObject *parent)
-    : QNetworkAccessManager(parent), helpEngine(engine)
+HelpNetworkAccessManager::HelpNetworkAccessManager(QObject *parent)
+    : QNetworkAccessManager(parent)
 {
 }
 
@@ -138,8 +136,9 @@ QNetworkReply *HelpNetworkAccessManager::createRequest(Operation /*op*/,
         mimeType = QLatin1String("text/html");
     }
 
-    const QByteArray &data = helpEngine->findFile(url).isValid()
-        ? helpEngine->fileData(url) : QByteArray("The page could not be found");
+    const QHelpEngineCore &engine = Help::HelpManager::helpEngineCore();
+    const QByteArray &data = engine.findFile(url).isValid()
+        ? engine.fileData(url) : QByteArray("The page could not be found");
     return new HelpNetworkReply(request, data, mimeType);
 }
 
@@ -147,7 +146,7 @@ class HelpPage : public QWebPage
 {
     friend class HelpViewer;
 public:
-    HelpPage(Help::Internal::CentralWidget *central, QHelpEngine *engine, QObject *parent);
+    HelpPage(Help::Internal::CentralWidget *central, QObject *parent);
 
 protected:
     virtual QWebPage *createWindow(QWebPage::WebWindowType);
@@ -157,15 +156,13 @@ protected:
 
 private:
     Help::Internal::CentralWidget *centralWidget;
-    QHelpEngine *helpEngine;
     Qt::MouseButtons m_pressedButtons;
     Qt::KeyboardModifiers m_keyboardModifiers;
 };
 
-HelpPage::HelpPage(Help::Internal::CentralWidget *central, QHelpEngine *engine, QObject *parent)
+HelpPage::HelpPage(Help::Internal::CentralWidget *central, QObject *parent)
     : QWebPage(parent)
     , centralWidget(central)
-    , helpEngine(engine)
     , m_pressedButtons(Qt::NoButton)
     , m_keyboardModifiers(Qt::NoModifier)
 {
@@ -205,7 +202,7 @@ bool HelpPage::acceptNavigationRequest(QWebFrame *,
 
             QFile tmpFile(QDir::cleanPath(fileName));
             if (tmpFile.open(QIODevice::ReadWrite)) {
-                tmpFile.write(helpEngine->fileData(url));
+                tmpFile.write(Help::HelpManager::helpEngineCore().fileData(url));
                 tmpFile.close();
             }
             QDesktopServices::openUrl(QUrl(tmpFile.fileName()));
@@ -229,14 +226,13 @@ bool HelpPage::acceptNavigationRequest(QWebFrame *,
     return false;
 }
 
-HelpViewer::HelpViewer(QHelpEngine *engine, Help::Internal::CentralWidget *central, QWidget *parent)
+HelpViewer::HelpViewer(Help::Internal::CentralWidget *central, QWidget *parent)
     : QWebView(parent)
-    , helpEngine(engine)
     , parentWidget(central)
     , multiTabsAllowed(true)
     , loadFinished(false)
 {
-    setPage(new HelpPage(central, helpEngine, this));
+    setPage(new HelpPage(central, this));
     settings()->setAttribute(QWebSettings::PluginsEnabled, false);
     settings()->setAttribute(QWebSettings::JavaEnabled, false);
 
@@ -297,11 +293,12 @@ int HelpViewer::zoom() const
 
 void HelpViewer::home()
 {
-    QString homepage = helpEngine->customValue(QLatin1String("HomePage"),
+    const QHelpEngineCore &engine = Help::HelpManager::helpEngineCore();
+    QString homepage = engine.customValue(QLatin1String("HomePage"),
         QLatin1String("")).toString();
 
     if (homepage.isEmpty()) {
-        homepage = helpEngine->customValue(QLatin1String("DefaultHomePage"),
+        homepage = engine.customValue(QLatin1String("DefaultHomePage"),
             QLatin1String("about:blank")).toString();
     }
 
@@ -392,12 +389,11 @@ void HelpViewer::setLoadFinished(bool ok)
 
 #else  // !defined(QT_NO_WEBKIT)
 
-HelpViewer::HelpViewer(QHelpEngine *engine, Help::Internal::CentralWidget *central, QWidget *parent)
+HelpViewer::HelpViewer(Help::Internal::CentralWidget *central, QWidget *parent)
     : QTextBrowser(parent)
     , zoomCount(0)
     , controlPressed(false)
     , lastAnchor(QString())
-    , helpEngine(engine)
     , parentWidget(central)
 {
    document()->setDocumentMargin(8);
@@ -410,7 +406,7 @@ void HelpViewer::setSource(const QUrl &url)
         if (launchedWithExternalApp(url))
             return;
 
-        QUrl u = helpEngine->findFile(url);
+        QUrl u = Help::HelpManager::helpEngineCore().findFile(url);
         if (u.isValid()) {
             if (!homeUrl.isValid())
                 homeUrl = url;
@@ -472,7 +468,7 @@ bool HelpViewer::launchedWithExternalApp(const QUrl &url)
 
             QFile tmpFile(QDir::cleanPath(fileName));
             if (tmpFile.open(QIODevice::ReadWrite)) {
-                tmpFile.write(helpEngine->fileData(url));
+                tmpFile.write(Help::HelpManager::helpEngineCore().fileData(url));
                 tmpFile.close();
             }
             launched = QDesktopServices::openUrl(QUrl(tmpFile.fileName()));
@@ -493,7 +489,7 @@ QVariant HelpViewer::loadResource(int type, const QUrl &name)
 {
     QByteArray ba;
     if (type < 4) {
-        ba = helpEngine->fileData(name);
+        ba = Help::HelpManager::helpEngineCore().fileData(name);
         if (name.toString().endsWith(QLatin1String(".svg"), Qt::CaseInsensitive)) {
             QImage image;
             image.loadFromData(ba, "svg");
@@ -578,6 +574,7 @@ void HelpViewer::mousePressEvent(QMouseEvent *e)
     if (handleForwardBackwardMouseButtons(e))
         return;
 #endif
+    QTextBrowser::mousePressEvent(e);
 }
 
 void HelpViewer::mouseReleaseEvent(QMouseEvent *e)
@@ -610,11 +607,12 @@ void HelpViewer::keyPressEvent(QKeyEvent *e)
 
 void HelpViewer::home()
 {
-    QString homepage = helpEngine->customValue(QLatin1String("HomePage"),
+    const QHelpEngineCore &engine = Help::HelpManager::helpEngineCore();
+    QString homepage = engine.customValue(QLatin1String("HomePage"),
         QLatin1String("")).toString();
 
     if (homepage.isEmpty()) {
-        homepage = helpEngine->customValue(QLatin1String("DefaultHomePage"),
+        homepage = engine.customValue(QLatin1String("DefaultHomePage"),
             QLatin1String("about:blank")).toString();
     }
 
diff --git a/src/shared/help/helpviewer.h b/src/shared/help/helpviewer.h
index 32ad060d276..3a052810f8d 100644
--- a/src/shared/help/helpviewer.h
+++ b/src/shared/help/helpviewer.h
@@ -41,7 +41,6 @@
 
 QT_BEGIN_NAMESPACE
 
-class QHelpEngine;
 
 class QPoint;
 class QString;
@@ -64,7 +63,7 @@ class HelpViewer : public QWebView
     Q_OBJECT
 
 public:
-    HelpViewer(QHelpEngine *helpEngine, Help::Internal::CentralWidget *central, QWidget *parent);
+    HelpViewer(Help::Internal::CentralWidget *central, QWidget *parent);
     void setSource(const QUrl &url);
 
     inline QUrl source() const
@@ -132,7 +131,7 @@ class HelpViewer : public QTextBrowser
     Q_OBJECT
 
 public:
-    HelpViewer(QHelpEngine *helpEngine, Help::Internal::CentralWidget *central, QWidget *parent);
+    HelpViewer(Help::Internal::CentralWidget *central, QWidget *parent);
     void setSource(const QUrl &url);
 
     void zoomIn(int range = 1);
@@ -171,7 +170,6 @@ private:
     int zoomCount;
     bool controlPressed;
     QString lastAnchor;
-    QHelpEngine *helpEngine;
     Help::Internal::CentralWidget* parentWidget;
     QUrl homeUrl;
 };
-- 
GitLab