From b748f99c6943f76153606d11c264423bde3b831a Mon Sep 17 00:00:00 2001 From: kh1 <qt-info@nokia.com> Date: Fri, 5 Mar 2010 16:06:41 +0100 Subject: [PATCH] Lazy start the full text search indexer. Fix missing progress for more the one run of the indexer. Reviewed-by: ck --- src/plugins/help/helpplugin.cpp | 36 ++++++++++++++++++++++++--------- src/plugins/help/helpplugin.h | 4 ++-- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 46e2806d579..87684b371b4 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -101,13 +101,14 @@ HelpPlugin::HelpPlugin() m_centralWidget(0), m_helpViewerForSideBar(0), m_mode(0), - m_shownLastPages(false), m_contentItem(0), m_indexItem(0), m_searchItem(0), m_bookmarkItem(0), m_rightPaneSideBar(0), - isInitialised(false) + m_progress(0), + isInitialised(false), + firstModeChange(true) { } @@ -636,6 +637,11 @@ void HelpPlugin::extensionsInitialized() connect(m_helpEngine, SIGNAL(setupFinished()), this, SLOT(updateFilterComboBox())); + + // explicit disconnect the full text search indexer, we connect and start + // it later once we really need it, e.g. the full text search is opened... + disconnect(m_helpEngine, SIGNAL(setupFinished()), m_helpEngine->searchEngine(), + SLOT(indexDocumentation())); connect(m_helpEngine->searchEngine(), SIGNAL(indexingStarted()), this, SLOT(indexingStarted())); connect(m_helpEngine->searchEngine(), SIGNAL(indexingFinished()), this, @@ -720,11 +726,16 @@ QString HelpPlugin::indexFilter() const void HelpPlugin::modeChanged(Core::IMode *mode) { - if (mode == m_mode && !m_shownLastPages) { - m_shownLastPages = true; + if (mode == m_mode && firstModeChange) { + firstModeChange = false; + qApp->processEvents(); qApp->setOverrideCursor(Qt::WaitCursor); + m_centralWidget->setLastShownPages(); + connect(m_helpEngine, SIGNAL(setupFinished()), m_helpEngine->searchEngine(), + SLOT(indexDocumentation())); + QMetaObject::invokeMethod(m_helpEngine, "setupFinished", Qt::QueuedConnection); qApp->restoreOverrideCursor(); } } @@ -789,20 +800,25 @@ void HelpPlugin::updateViewerComboBoxIndex(int index) void HelpPlugin::indexingStarted() { - Core::ICore::instance()->progressManager() ->addTask(m_progress.future(), + Q_ASSERT(!m_progress); + m_progress = new QFutureInterface<void>(); + Core::ICore::instance()->progressManager() ->addTask(m_progress->future(), tr("Indexing"), QLatin1String("Help.Indexer")); - m_progress.setProgressRange(0, 2); - m_progress.setProgressValueAndText(1, tr("Indexing Documentation...")); - m_progress.reportStarted(); + m_progress->setProgressRange(0, 2); + m_progress->setProgressValueAndText(1, tr("Indexing Documentation...")); + m_progress->reportStarted(); - m_watcher.setFuture(m_progress.future()); + m_watcher.setFuture(m_progress->future()); connect(&m_watcher, SIGNAL(canceled()), m_helpEngine->searchEngine(), SLOT(cancelIndexing())); } void HelpPlugin::indexingFinished() { - m_progress.reportFinished(); + m_progress->reportFinished(); + + delete m_progress; + m_progress = NULL; } HelpViewer* HelpPlugin::viewerForContextMode() diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h index 2d7abed23e8..ac84679461d 100644 --- a/src/plugins/help/helpplugin.h +++ b/src/plugins/help/helpplugin.h @@ -154,7 +154,6 @@ private: CentralWidget *m_centralWidget; HelpViewer *m_helpViewerForSideBar; HelpMode *m_mode; - bool m_shownLastPages; Core::SideBarItem *m_contentItem; Core::SideBarItem *m_indexItem; @@ -176,9 +175,10 @@ private: QStringList filesToRegister; QFutureWatcher<void> m_watcher; - QFutureInterface<void> m_progress; + QFutureInterface<void> *m_progress; bool isInitialised; + bool firstModeChange; }; } // namespace Internal -- GitLab