Fix broken behavior for welcome page links if no docs are installed.

In case of split mode we did not check if the actual requested doc
exists and thus did fail to open the browser if it could not be found.

Reviewed-by: Daniel Molkentin
This commit is contained in:
kh1
2010-03-10 18:24:13 +01:00
parent 51c0913a73
commit 4e7bbbdaaf
5 changed files with 23 additions and 40 deletions

View File

@@ -41,16 +41,11 @@ HelpManager::HelpManager(HelpPlugin* plugin)
{ {
} }
void HelpManager::openHelpPage(const QString& url) void HelpManager::handleHelpRequest(const QString &url)
{ {
m_plugin->handleHelpRequest(url); m_plugin->handleHelpRequest(url);
} }
void HelpManager::openContextHelpPage(const QString& url)
{
m_plugin->openContextHelpPage(url);
}
void HelpManager::registerDocumentation(const QStringList &fileNames) void HelpManager::registerDocumentation(const QStringList &fileNames)
{ {
if (m_plugin) { if (m_plugin) {

View File

@@ -47,12 +47,11 @@ class HELP_EXPORT HelpManager : public QObject
public: public:
HelpManager(Internal::HelpPlugin*); HelpManager(Internal::HelpPlugin*);
void openHelpPage(const QString& url); void handleHelpRequest(const QString &url);
void openContextHelpPage(const QString &url);
void registerDocumentation(const QStringList &fileNames); void registerDocumentation(const QStringList &fileNames);
signals: signals:
void helpPluginUpdateDocumentation(); void registerDocumentation();
private: private:
Internal::HelpPlugin *m_plugin; Internal::HelpPlugin *m_plugin;

View File

@@ -998,35 +998,11 @@ void HelpPlugin::addNewBookmark(const QString &title, const QString &url)
m_bookmarkManager->showBookmarkDialog(m_centralWidget, title, url); m_bookmarkManager->showBookmarkDialog(m_centralWidget, title, url);
} }
void HelpPlugin::handleHelpRequest(const QUrl& url) void HelpPlugin::handleHelpRequest(const QString &address)
{
if (url.queryItemValue(QLatin1String("view")) == QLatin1String("split"))
openContextHelpPage(url.toString());
else
openHelpPage(url.toString());
}
void HelpPlugin::openHelpPage(const QString& url)
{
if (m_helpEngine->findFile(url).isValid()) {
activateHelpMode();
m_centralWidget->setSource(url);
} else {
// local help not installed, resort to external web help
QString urlPrefix;
if (url.startsWith(QLatin1String("qthelp://com.nokia.qtcreator"))) {
urlPrefix = QString::fromLatin1("http://doc.trolltech.com/qtcreator"
"-%1.%2/").arg(IDE_VERSION_MAJOR).arg(IDE_VERSION_MINOR);
} else {
urlPrefix = QLatin1String("http://doc.trolltech.com/latest/");
}
QDesktopServices::openUrl(QUrl(urlPrefix + url.mid(url
.lastIndexOf(QLatin1Char('/')) + 1)));
}
}
void HelpPlugin::openContextHelpPage(const QString &url)
{ {
if (m_helpEngine->findFile(address).isValid()) {
const QUrl url(address);
if (url.queryItemValue(QLatin1String("view")) == QLatin1String("split")) {
using namespace Core::Constants; using namespace Core::Constants;
Core::ModeManager *modeManager = Core::ICore::instance()->modeManager(); Core::ModeManager *modeManager = Core::ICore::instance()->modeManager();
@@ -1034,7 +1010,23 @@ void HelpPlugin::openContextHelpPage(const QString &url)
modeManager->activateMode(MODE_EDIT); modeManager->activateMode(MODE_EDIT);
if (HelpViewer* viewer = viewerForContextMode()) if (HelpViewer* viewer = viewerForContextMode())
viewer->setSource(QUrl(url)); viewer->setSource(url);
} else {
activateHelpMode();
m_centralWidget->setSource(url);
}
} else {
// local help not installed, resort to external web help
QString urlPrefix;
if (address.startsWith(QLatin1String("qthelp://com.nokia.qtcreator"))) {
urlPrefix = QString::fromLatin1("http://doc.trolltech.com/qtcreator"
"-%1.%2/").arg(IDE_VERSION_MAJOR).arg(IDE_VERSION_MINOR);
} else {
urlPrefix = QLatin1String("http://doc.trolltech.com/latest/");
}
QDesktopServices::openUrl(QUrl(urlPrefix + address.mid(address
.lastIndexOf(QLatin1Char('/')) + 1)));
}
} }
Q_EXPORT_PLUGIN(HelpPlugin) Q_EXPORT_PLUGIN(HelpPlugin)

View File

@@ -91,16 +91,13 @@ public:
void setIndexFilter(const QString &filter); void setIndexFilter(const QString &filter);
QString indexFilter() const; QString indexFilter() const;
void openHelpPage(const QString& url);
void openContextHelpPage(const QString &url);
QHelpEngine* helpEngine() const; QHelpEngine* helpEngine() const;
void setFilesToRegister(const QStringList &files); void setFilesToRegister(const QStringList &files);
public slots: public slots:
void pluginUpdateDocumentation(); void pluginUpdateDocumentation();
void handleHelpRequest(const QUrl &url); void handleHelpRequest(const QString &url);
private slots: private slots:
void modeChanged(Core::IMode *mode); void modeChanged(Core::IMode *mode);

View File

@@ -265,14 +265,14 @@ void GettingStartedWelcomePageWidget::slotOpenHelpPage(const QString& url)
Help::HelpManager *helpManager Help::HelpManager *helpManager
= ExtensionSystem::PluginManager::instance()->getObject<Help::HelpManager>(); = ExtensionSystem::PluginManager::instance()->getObject<Help::HelpManager>();
Q_ASSERT(helpManager); Q_ASSERT(helpManager);
helpManager->openHelpPage(url); helpManager->handleHelpRequest(url);
} }
void GettingStartedWelcomePageWidget::slotOpenContextHelpPage(const QString& url) void GettingStartedWelcomePageWidget::slotOpenContextHelpPage(const QString& url)
{ {
Help::HelpManager *helpManager Help::HelpManager *helpManager
= ExtensionSystem::PluginManager::instance()->getObject<Help::HelpManager>(); = ExtensionSystem::PluginManager::instance()->getObject<Help::HelpManager>();
Q_ASSERT(helpManager); Q_ASSERT(helpManager);
helpManager->openContextHelpPage(url); helpManager->handleHelpRequest(url);
} }
void GettingStartedWelcomePageWidget::slotNextTip() void GettingStartedWelcomePageWidget::slotNextTip()