diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2021-08-23 12:43:08 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-09-03 08:43:00 +0000 |
commit | ea1bd382ae450c2f05861e00e120e5b995f2e618 (patch) | |
tree | 7c5d025dcec13bb162f12ab737f4a12ffc2da0b1 | |
parent | 7ccc122d77165470af873dcb50331442f3d877c2 (diff) |
Show Assistant Quick Guide page on first run
Fixes: QTBUG-95125
Change-Id: I8a2344af7c0d1d2bd409fdd1d06f1e30fd7e049b
Reviewed-by: Robert Löhning <robert.loehning@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
(cherry picked from commit 187dee78347500ee9c3a0915f88e42793690f461)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/assistant/assistant/helpviewer.cpp | 41 | ||||
-rw-r--r-- | src/assistant/assistant/helpviewer.h | 2 | ||||
-rw-r--r-- | src/assistant/assistant/helpviewerimpl.cpp | 5 | ||||
-rw-r--r-- | src/assistant/assistant/mainwindow.cpp | 1 | ||||
-rw-r--r-- | src/assistant/assistant/openpagesmanager.cpp | 8 | ||||
-rw-r--r-- | src/assistant/assistant/openpagesmanager.h | 5 | ||||
-rw-r--r-- | src/assistant/assistant/openpagesmodel.cpp | 3 | ||||
-rw-r--r-- | src/assistant/assistant/openpagesmodel.h | 2 |
8 files changed, 46 insertions, 21 deletions
diff --git a/src/assistant/assistant/helpviewer.cpp b/src/assistant/assistant/helpviewer.cpp index d30ab58a4..a81a253ae 100644 --- a/src/assistant/assistant/helpviewer.cpp +++ b/src/assistant/assistant/helpviewer.cpp @@ -104,15 +104,12 @@ static QByteArray getData(const QUrl &url) actualUrl.setPath(path); } - bool helpOrAbout = (actualUrl.toString() == QLatin1String("help")); - const QUrl resolvedUrl = (helpOrAbout ? HelpViewerImpl::LocalHelpFile - : HelpEngineWrapper::instance().findFile(actualUrl)); - if (resolvedUrl.isValid()) - return HelpEngineWrapper::instance().fileData(resolvedUrl); + if (actualUrl.isValid()) + return HelpEngineWrapper::instance().fileData(actualUrl); - helpOrAbout = (actualUrl.toString() == QLatin1String("about:blank")); - return helpOrAbout ? HelpViewerImpl::AboutBlank.toUtf8() - : HelpViewerImpl::PageNotFoundMessage.arg(url.toString()).toUtf8(); + const bool isAbout = (actualUrl.toString() == QLatin1String("about:blank")); + return isAbout ? HelpViewerImpl::AboutBlank.toUtf8() + : HelpViewerImpl::PageNotFoundMessage.arg(url.toString()).toUtf8(); } class HelpViewerPrivate @@ -125,7 +122,7 @@ public: int vscroll; }; HistoryItem currentHistoryItem() const; - void setSourceInternal(const QUrl &url, int *vscroll = nullptr); + void setSourceInternal(const QUrl &url, int *vscroll = nullptr, bool reload = false); void incrementZoom(int steps); void applyZoom(int percentage); @@ -141,21 +138,26 @@ HelpViewerPrivate::HistoryItem HelpViewerPrivate::currentHistoryItem() const return { m_viewer->url(), m_viewer->title(), m_viewer->verticalScrollBar()->value() }; } -void HelpViewerPrivate::setSourceInternal(const QUrl &url, int *vscroll) +void HelpViewerPrivate::setSourceInternal(const QUrl &url, int *vscroll, bool reload) { QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); + const bool isHelp = (url.toString() == QLatin1String("help")); + const QUrl resolvedUrl = (isHelp ? HelpViewerImpl::LocalHelpFile + : HelpEngineWrapper::instance().findFile(url)); + QUrl currentUrlWithoutFragment = m_viewer->url(); currentUrlWithoutFragment.setFragment({}); - QUrl newUrlWithoutFragment = url; + QUrl newUrlWithoutFragment = resolvedUrl; newUrlWithoutFragment.setFragment({}); - m_viewer->setUrl(url); - if (currentUrlWithoutFragment != newUrlWithoutFragment) - m_viewer->setHtml(QString::fromUtf8(getData(url))); + + m_viewer->setUrl(resolvedUrl); + if (currentUrlWithoutFragment != newUrlWithoutFragment || reload) + m_viewer->setHtml(QString::fromUtf8(getData(resolvedUrl))); if (vscroll) m_viewer->verticalScrollBar()->setValue(*vscroll); else - m_viewer->scrollToAnchor(url.fragment(QUrl::FullyEncoded)); + m_viewer->scrollToAnchor(resolvedUrl.fragment(QUrl::FullyEncoded)); QGuiApplication::restoreOverrideCursor(); @@ -248,11 +250,16 @@ QUrl HelpViewer::source() const void HelpViewer::reload() { - setSource(source()); + doSetSource(source(), true); } void HelpViewer::setSource(const QUrl &url) { + doSetSource(url, false); +} + +void HelpViewer::doSetSource(const QUrl &url, bool reload) +{ if (launchWithExternalApp(url)) return; @@ -265,7 +272,7 @@ void HelpViewer::setSource(const QUrl &url) emit backwardAvailable(true); } - d->setSourceInternal(url); + d->setSourceInternal(url, nullptr, reload); } void HelpViewer::print(QPagedPaintDevice *printer) diff --git a/src/assistant/assistant/helpviewer.h b/src/assistant/assistant/helpviewer.h index 4c57cab20..7cb2c187d 100644 --- a/src/assistant/assistant/helpviewer.h +++ b/src/assistant/assistant/helpviewer.h @@ -104,6 +104,8 @@ signals: void printRequested(); void loadFinished(); private: + void doSetSource(const QUrl &url, bool reload); + HelpViewerPrivate *d; }; diff --git a/src/assistant/assistant/helpviewerimpl.cpp b/src/assistant/assistant/helpviewerimpl.cpp index 41ee47573..459009002 100644 --- a/src/assistant/assistant/helpviewerimpl.cpp +++ b/src/assistant/assistant/helpviewerimpl.cpp @@ -42,7 +42,10 @@ const QString HelpViewerImpl::AboutBlank = QCoreApplication::translate("HelpViewer", "<title>about:blank</title>"); const QString HelpViewerImpl::LocalHelpFile = QLatin1String("qthelp://" - "org.qt-project.assistantinternal-1.0.0/assistant/assistant-quick-guide.html"); + "org.qt-project.qtassistant.%1%2%3/qtassistant/assistant-quick-guide.html") + .arg(QString::number(QT_VERSION_MAJOR), + QString::number(QT_VERSION_MINOR), + QString::number(QT_VERSION_PATCH)); const QString HelpViewerImpl::PageNotFoundMessage = QCoreApplication::translate("HelpViewer", "<title>Error 404...</title><div " diff --git a/src/assistant/assistant/mainwindow.cpp b/src/assistant/assistant/mainwindow.cpp index dbc1debc0..e9b2f758e 100644 --- a/src/assistant/assistant/mainwindow.cpp +++ b/src/assistant/assistant/mainwindow.cpp @@ -431,6 +431,7 @@ void MainWindow::lookForNewQtDocumentation() void MainWindow::qtDocumentationInstalled() { TRACE_OBJ + OpenPagesManager::instance()->resetHelpPage(); statusBar()->clearMessage(); checkInitState(); } diff --git a/src/assistant/assistant/openpagesmanager.cpp b/src/assistant/assistant/openpagesmanager.cpp index f3acb4656..8e9d4913c 100644 --- a/src/assistant/assistant/openpagesmanager.cpp +++ b/src/assistant/assistant/openpagesmanager.cpp @@ -120,7 +120,7 @@ void OpenPagesManager::setupInitialPages(bool defaultCollection, const int pageCount = lastShownPageList.count(); if (pageCount == 0) { if (defaultCollection) - m_model->addPage(QUrl(QLatin1String("help"))); + m_helpPageViewer = m_model->addPage(QUrl(QLatin1String("help"))); else m_model->addPage(QUrl(QLatin1String("about:blank"))); } else { @@ -268,6 +268,12 @@ void OpenPagesManager::setCurrentPage(int index) setCurrentPage(m_model->pageAt(index)); } +void OpenPagesManager::resetHelpPage() +{ + if (m_helpPageViewer) + m_helpPageViewer->reload(); +} + void OpenPagesManager::setCurrentPage(HelpViewer *page) { TRACE_OBJ diff --git a/src/assistant/assistant/openpagesmanager.h b/src/assistant/assistant/openpagesmanager.h index 10f97f1bb..efb638e52 100644 --- a/src/assistant/assistant/openpagesmanager.h +++ b/src/assistant/assistant/openpagesmanager.h @@ -30,6 +30,7 @@ #define OPENPAGESMANAGER_H #include <QtCore/QObject> +#include <QtCore/QPointer> QT_BEGIN_NAMESPACE @@ -59,6 +60,8 @@ public: int pageCount() const; void setCurrentPage(int index); + void resetHelpPage(); + public slots: HelpViewer *createPage(const QUrl &url, bool fromSearch = false); HelpViewer *createNewPageFromSearch(const QUrl &url); @@ -101,6 +104,8 @@ private: OpenPagesWidget *m_openPagesWidget = nullptr; OpenPagesSwitcher *m_openPagesSwitcher = nullptr; + QPointer<HelpViewer> m_helpPageViewer; + static OpenPagesManager *m_instance; }; diff --git a/src/assistant/assistant/openpagesmodel.cpp b/src/assistant/assistant/openpagesmodel.cpp index 41a4504e7..6efc46bcb 100644 --- a/src/assistant/assistant/openpagesmodel.cpp +++ b/src/assistant/assistant/openpagesmodel.cpp @@ -64,7 +64,7 @@ QVariant OpenPagesModel::data(const QModelIndex &index, int role) const return title.isEmpty() ? QLatin1String("(Untitled)") : title; } -void OpenPagesModel::addPage(const QUrl &url, qreal zoom) +HelpViewer *OpenPagesModel::addPage(const QUrl &url, qreal zoom) { TRACE_OBJ beginInsertRows(QModelIndex(), rowCount(), rowCount()); @@ -74,6 +74,7 @@ void OpenPagesModel::addPage(const QUrl &url, qreal zoom) m_pages << page; endInsertRows(); page->setSource(url); + return page; } void OpenPagesModel::removePage(int index) diff --git a/src/assistant/assistant/openpagesmodel.h b/src/assistant/assistant/openpagesmodel.h index 781a65127..36f45c4fc 100644 --- a/src/assistant/assistant/openpagesmodel.h +++ b/src/assistant/assistant/openpagesmodel.h @@ -48,7 +48,7 @@ public: int columnCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - void addPage(const QUrl &url, qreal zoom = 0); + HelpViewer *addPage(const QUrl &url, qreal zoom = 0); void removePage(int index); HelpViewer *pageAt(int index) const; |