Lazy start the full text search indexer. Fix missing progress for more

the one run of the indexer.

Reviewed-by: ck
This commit is contained in:
kh1
2010-03-05 16:06:41 +01:00
parent 2e25571edb
commit b748f99c69
2 changed files with 28 additions and 12 deletions

View File

@@ -101,13 +101,14 @@ HelpPlugin::HelpPlugin()
m_centralWidget(0), m_centralWidget(0),
m_helpViewerForSideBar(0), m_helpViewerForSideBar(0),
m_mode(0), m_mode(0),
m_shownLastPages(false),
m_contentItem(0), m_contentItem(0),
m_indexItem(0), m_indexItem(0),
m_searchItem(0), m_searchItem(0),
m_bookmarkItem(0), m_bookmarkItem(0),
m_rightPaneSideBar(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, connect(m_helpEngine, SIGNAL(setupFinished()), this,
SLOT(updateFilterComboBox())); 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, connect(m_helpEngine->searchEngine(), SIGNAL(indexingStarted()), this,
SLOT(indexingStarted())); SLOT(indexingStarted()));
connect(m_helpEngine->searchEngine(), SIGNAL(indexingFinished()), this, connect(m_helpEngine->searchEngine(), SIGNAL(indexingFinished()), this,
@@ -720,11 +726,16 @@ QString HelpPlugin::indexFilter() const
void HelpPlugin::modeChanged(Core::IMode *mode) void HelpPlugin::modeChanged(Core::IMode *mode)
{ {
if (mode == m_mode && !m_shownLastPages) { if (mode == m_mode && firstModeChange) {
m_shownLastPages = true; firstModeChange = false;
qApp->processEvents(); qApp->processEvents();
qApp->setOverrideCursor(Qt::WaitCursor); qApp->setOverrideCursor(Qt::WaitCursor);
m_centralWidget->setLastShownPages(); m_centralWidget->setLastShownPages();
connect(m_helpEngine, SIGNAL(setupFinished()), m_helpEngine->searchEngine(),
SLOT(indexDocumentation()));
QMetaObject::invokeMethod(m_helpEngine, "setupFinished", Qt::QueuedConnection);
qApp->restoreOverrideCursor(); qApp->restoreOverrideCursor();
} }
} }
@@ -789,20 +800,25 @@ void HelpPlugin::updateViewerComboBoxIndex(int index)
void HelpPlugin::indexingStarted() 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")); tr("Indexing"), QLatin1String("Help.Indexer"));
m_progress.setProgressRange(0, 2); m_progress->setProgressRange(0, 2);
m_progress.setProgressValueAndText(1, tr("Indexing Documentation...")); m_progress->setProgressValueAndText(1, tr("Indexing Documentation..."));
m_progress.reportStarted(); m_progress->reportStarted();
m_watcher.setFuture(m_progress.future()); m_watcher.setFuture(m_progress->future());
connect(&m_watcher, SIGNAL(canceled()), m_helpEngine->searchEngine(), connect(&m_watcher, SIGNAL(canceled()), m_helpEngine->searchEngine(),
SLOT(cancelIndexing())); SLOT(cancelIndexing()));
} }
void HelpPlugin::indexingFinished() void HelpPlugin::indexingFinished()
{ {
m_progress.reportFinished(); m_progress->reportFinished();
delete m_progress;
m_progress = NULL;
} }
HelpViewer* HelpPlugin::viewerForContextMode() HelpViewer* HelpPlugin::viewerForContextMode()

View File

@@ -154,7 +154,6 @@ private:
CentralWidget *m_centralWidget; CentralWidget *m_centralWidget;
HelpViewer *m_helpViewerForSideBar; HelpViewer *m_helpViewerForSideBar;
HelpMode *m_mode; HelpMode *m_mode;
bool m_shownLastPages;
Core::SideBarItem *m_contentItem; Core::SideBarItem *m_contentItem;
Core::SideBarItem *m_indexItem; Core::SideBarItem *m_indexItem;
@@ -176,9 +175,10 @@ private:
QStringList filesToRegister; QStringList filesToRegister;
QFutureWatcher<void> m_watcher; QFutureWatcher<void> m_watcher;
QFutureInterface<void> m_progress; QFutureInterface<void> *m_progress;
bool isInitialised; bool isInitialised;
bool firstModeChange;
}; };
} // namespace Internal } // namespace Internal