forked from qt-creator/qt-creator
Initial support for showing help in external window.
Task-number: QTCREATORBUG-1473
This commit is contained in:
82
src/plugins/help/externalhelpwindow.cpp
Normal file
82
src/plugins/help/externalhelpwindow.cpp
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator
|
||||||
|
**
|
||||||
|
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
**
|
||||||
|
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||||
|
**
|
||||||
|
** Commercial Usage
|
||||||
|
**
|
||||||
|
** Licensees holding valid Qt Commercial licenses may use this file in
|
||||||
|
** accordance with the Qt Commercial License Agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Nokia.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
**
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** If you are unsure which license is appropriate for your use, please
|
||||||
|
** contact the sales department at http://qt.nokia.com/contact.
|
||||||
|
**
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
#include "externalhelpwindow.h"
|
||||||
|
#include "helpconstants.h"
|
||||||
|
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
|
#include <QtGui/QKeyEvent>
|
||||||
|
|
||||||
|
using namespace Help::Internal;
|
||||||
|
|
||||||
|
ExternalHelpWindow::ExternalHelpWindow(QWidget *parent)
|
||||||
|
: QMainWindow(parent)
|
||||||
|
{
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
settings->beginGroup(Help::Constants::ID_MODE_HELP);
|
||||||
|
|
||||||
|
const QVariant geometry = settings->value(QLatin1String("geometry"));
|
||||||
|
if (geometry.isValid())
|
||||||
|
restoreGeometry(geometry.toByteArray());
|
||||||
|
else
|
||||||
|
resize(640, 480);
|
||||||
|
|
||||||
|
settings->endGroup();
|
||||||
|
installEventFilter(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
ExternalHelpWindow::~ExternalHelpWindow()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExternalHelpWindow::closeEvent(QCloseEvent *event)
|
||||||
|
{
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
settings->beginGroup(Help::Constants::ID_MODE_HELP);
|
||||||
|
settings->setValue(QLatin1String("geometry"), saveGeometry());
|
||||||
|
settings->endGroup();
|
||||||
|
|
||||||
|
QMainWindow::closeEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ExternalHelpWindow::eventFilter(QObject *obj, QEvent *event)
|
||||||
|
{
|
||||||
|
if (obj == this) {
|
||||||
|
if (QKeyEvent *keyEvent = static_cast<QKeyEvent*> (event)) {
|
||||||
|
switch (keyEvent->key()) {
|
||||||
|
case Qt::Key_Escape:
|
||||||
|
Core::ICore::instance()->mainWindow()->activateWindow();
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return QMainWindow::eventFilter(obj, event);
|
||||||
|
}
|
||||||
54
src/plugins/help/externalhelpwindow.h
Normal file
54
src/plugins/help/externalhelpwindow.h
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator
|
||||||
|
**
|
||||||
|
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
**
|
||||||
|
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||||
|
**
|
||||||
|
** Commercial Usage
|
||||||
|
**
|
||||||
|
** Licensees holding valid Qt Commercial licenses may use this file in
|
||||||
|
** accordance with the Qt Commercial License Agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and Nokia.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
**
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** If you are unsure which license is appropriate for your use, please
|
||||||
|
** contact the sales department at http://qt.nokia.com/contact.
|
||||||
|
**
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
#ifndef EXTERNALHELPWINDOW
|
||||||
|
#define EXTERNALHELPWINDOW
|
||||||
|
|
||||||
|
#include <QtGui/QMainWindow>
|
||||||
|
|
||||||
|
QT_FORWARD_DECLARE_CLASS(QCloseEvent)
|
||||||
|
|
||||||
|
namespace Help {
|
||||||
|
namespace Internal {
|
||||||
|
|
||||||
|
class ExternalHelpWindow : public QMainWindow
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ExternalHelpWindow(QWidget *parent = 0);
|
||||||
|
virtual ~ExternalHelpWindow();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void closeEvent(QCloseEvent *event);
|
||||||
|
bool eventFilter(QObject *obj, QEvent *event);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // Internal
|
||||||
|
} // Help
|
||||||
|
|
||||||
|
#endif // EXTERNALHELPWINDOW
|
||||||
@@ -37,8 +37,10 @@
|
|||||||
#include "xbelsupport.h"
|
#include "xbelsupport.h"
|
||||||
|
|
||||||
#include <coreplugin/coreconstants.h>
|
#include <coreplugin/coreconstants.h>
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
#include <QtCore/QCoreApplication>
|
#include <QtCore/QCoreApplication>
|
||||||
|
#include <QtCore/QSettings>
|
||||||
#include <QtCore/QTextStream>
|
#include <QtCore/QTextStream>
|
||||||
|
|
||||||
#include <QtGui/QApplication>
|
#include <QtGui/QApplication>
|
||||||
@@ -53,6 +55,7 @@
|
|||||||
using namespace Help::Internal;
|
using namespace Help::Internal;
|
||||||
|
|
||||||
GeneralSettingsPage::GeneralSettingsPage()
|
GeneralSettingsPage::GeneralSettingsPage()
|
||||||
|
: m_helpManager(0)
|
||||||
{
|
{
|
||||||
m_font = qApp->font();
|
m_font = qApp->font();
|
||||||
#if !defined(QT_NO_WEBKIT)
|
#if !defined(QT_NO_WEBKIT)
|
||||||
@@ -94,6 +97,7 @@ QWidget *GeneralSettingsPage::createPage(QWidget *parent)
|
|||||||
m_ui.sizeComboBox->setEditable(false);
|
m_ui.sizeComboBox->setEditable(false);
|
||||||
m_ui.styleComboBox->setEditable(false);
|
m_ui.styleComboBox->setEditable(false);
|
||||||
|
|
||||||
|
m_helpManager->setupGuiHelpEngine();
|
||||||
const QHelpEngineCore &engine = LocalHelpManager::helpEngine();
|
const QHelpEngineCore &engine = LocalHelpManager::helpEngine();
|
||||||
m_font = qVariantValue<QFont>(engine.customValue(QLatin1String("font"), m_font));
|
m_font = qVariantValue<QFont>(engine.customValue(QLatin1String("font"), m_font));
|
||||||
|
|
||||||
@@ -112,9 +116,9 @@ QWidget *GeneralSettingsPage::createPage(QWidget *parent)
|
|||||||
Help::Constants::ShowLastPages).toInt();
|
Help::Constants::ShowLastPages).toInt();
|
||||||
m_ui.helpStartComboBox->setCurrentIndex(startOption);
|
m_ui.helpStartComboBox->setCurrentIndex(startOption);
|
||||||
|
|
||||||
const int helpOption = engine.customValue(QLatin1String("ContextHelpOption"),
|
m_contextOption = engine.customValue(QLatin1String("ContextHelpOption"),
|
||||||
Help::Constants::SideBySideIfPossible).toInt();
|
Help::Constants::SideBySideIfPossible).toInt();
|
||||||
m_ui.contextHelpComboBox->setCurrentIndex(helpOption);
|
m_ui.contextHelpComboBox->setCurrentIndex(m_contextOption);
|
||||||
|
|
||||||
connect(m_ui.currentPageButton, SIGNAL(clicked()), this, SLOT(setCurrentPage()));
|
connect(m_ui.currentPageButton, SIGNAL(clicked()), this, SLOT(setCurrentPage()));
|
||||||
connect(m_ui.blankPageButton, SIGNAL(clicked()), this, SLOT(setBlankPage()));
|
connect(m_ui.blankPageButton, SIGNAL(clicked()), this, SLOT(setBlankPage()));
|
||||||
@@ -166,10 +170,11 @@ void GeneralSettingsPage::apply()
|
|||||||
newFont.setWeight(weight);
|
newFont.setWeight(weight);
|
||||||
|
|
||||||
QHelpEngineCore *engine = &LocalHelpManager::helpEngine();
|
QHelpEngineCore *engine = &LocalHelpManager::helpEngine();
|
||||||
|
if (newFont != m_font) {
|
||||||
|
m_font = newFont;
|
||||||
engine->setCustomValue(QLatin1String("font"), newFont);
|
engine->setCustomValue(QLatin1String("font"), newFont);
|
||||||
|
|
||||||
if (newFont != m_font)
|
|
||||||
emit fontChanged();
|
emit fontChanged();
|
||||||
|
}
|
||||||
|
|
||||||
QString homePage = m_ui.homePageLineEdit->text();
|
QString homePage = m_ui.homePageLineEdit->text();
|
||||||
if (homePage.isEmpty())
|
if (homePage.isEmpty())
|
||||||
@@ -180,7 +185,17 @@ void GeneralSettingsPage::apply()
|
|||||||
engine->setCustomValue(QLatin1String("StartOption"), startOption);
|
engine->setCustomValue(QLatin1String("StartOption"), startOption);
|
||||||
|
|
||||||
const int helpOption = m_ui.contextHelpComboBox->currentIndex();
|
const int helpOption = m_ui.contextHelpComboBox->currentIndex();
|
||||||
|
if (m_contextOption != helpOption) {
|
||||||
|
m_contextOption = helpOption;
|
||||||
engine->setCustomValue(QLatin1String("ContextHelpOption"), helpOption);
|
engine->setCustomValue(QLatin1String("ContextHelpOption"), helpOption);
|
||||||
|
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
settings->beginGroup(Help::Constants::ID_MODE_HELP);
|
||||||
|
settings->setValue(QLatin1String("ContextHelpOption"), helpOption);
|
||||||
|
settings->endGroup();
|
||||||
|
|
||||||
|
emit contextHelpOptionChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::setCurrentPage()
|
void GeneralSettingsPage::setCurrentPage()
|
||||||
@@ -327,3 +342,8 @@ bool GeneralSettingsPage::matches(const QString &s) const
|
|||||||
{
|
{
|
||||||
return m_searchKeywords.contains(s, Qt::CaseInsensitive);
|
return m_searchKeywords.contains(s, Qt::CaseInsensitive);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GeneralSettingsPage::setHelpManager(LocalHelpManager *manager)
|
||||||
|
{
|
||||||
|
m_helpManager = manager;
|
||||||
|
}
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ namespace Help {
|
|||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class CentralWidget;
|
class CentralWidget;
|
||||||
|
class LocalHelpManager;
|
||||||
|
|
||||||
class GeneralSettingsPage : public Core::IOptionsPage
|
class GeneralSettingsPage : public Core::IOptionsPage
|
||||||
{
|
{
|
||||||
@@ -56,8 +57,11 @@ public:
|
|||||||
void finish() {}
|
void finish() {}
|
||||||
virtual bool matches(const QString &s) const;
|
virtual bool matches(const QString &s) const;
|
||||||
|
|
||||||
|
void setHelpManager(LocalHelpManager *manager);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void fontChanged();
|
void fontChanged();
|
||||||
|
void contextHelpOptionChanged();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void setCurrentPage();
|
void setCurrentPage();
|
||||||
@@ -77,9 +81,12 @@ private:
|
|||||||
QFontDatabase m_fontDatabase;
|
QFontDatabase m_fontDatabase;
|
||||||
|
|
||||||
QString m_homePage;
|
QString m_homePage;
|
||||||
|
int m_contextOption;
|
||||||
|
|
||||||
QString m_searchKeywords;
|
QString m_searchKeywords;
|
||||||
Ui::GeneralSettingsPage m_ui;
|
Ui::GeneralSettingsPage m_ui;
|
||||||
|
|
||||||
|
LocalHelpManager *m_helpManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // Internal
|
} // Internal
|
||||||
|
|||||||
@@ -2,6 +2,14 @@
|
|||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>GeneralSettingsPage</class>
|
<class>GeneralSettingsPage</class>
|
||||||
<widget class="QWidget" name="GeneralSettingsPage">
|
<widget class="QWidget" name="GeneralSettingsPage">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>498</width>
|
||||||
|
<height>304</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Form</string>
|
<string>Form</string>
|
||||||
</property>
|
</property>
|
||||||
@@ -169,6 +177,11 @@
|
|||||||
<string>Always Start Full Help</string>
|
<string>Always Start Full Help</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Always Show Help in External Window</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ HEADERS += \
|
|||||||
openpageswidget.h \
|
openpageswidget.h \
|
||||||
remotehelpfilter.h \
|
remotehelpfilter.h \
|
||||||
searchwidget.h \
|
searchwidget.h \
|
||||||
xbelsupport.h
|
xbelsupport.h \
|
||||||
|
externalhelpwindow.h
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
centralwidget.cpp \
|
centralwidget.cpp \
|
||||||
@@ -49,7 +50,8 @@ SOURCES += \
|
|||||||
openpageswidget.cpp \
|
openpageswidget.cpp \
|
||||||
remotehelpfilter.cpp \
|
remotehelpfilter.cpp \
|
||||||
searchwidget.cpp \
|
searchwidget.cpp \
|
||||||
xbelsupport.cpp
|
xbelsupport.cpp \
|
||||||
|
externalhelpwindow.cpp
|
||||||
|
|
||||||
FORMS += docsettingspage.ui \
|
FORMS += docsettingspage.ui \
|
||||||
filtersettingspage.ui \
|
filtersettingspage.ui \
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
#include "centralwidget.h"
|
#include "centralwidget.h"
|
||||||
#include "contentwindow.h"
|
#include "contentwindow.h"
|
||||||
#include "docsettingspage.h"
|
#include "docsettingspage.h"
|
||||||
|
#include "externalhelpwindow.h"
|
||||||
#include "filtersettingspage.h"
|
#include "filtersettingspage.h"
|
||||||
#include "generalsettingspage.h"
|
#include "generalsettingspage.h"
|
||||||
#include "helpconstants.h"
|
#include "helpconstants.h"
|
||||||
@@ -68,6 +69,7 @@
|
|||||||
#include <QtCore/QDir>
|
#include <QtCore/QDir>
|
||||||
#include <QtCore/QFileInfo>
|
#include <QtCore/QFileInfo>
|
||||||
#include <QtCore/QLibraryInfo>
|
#include <QtCore/QLibraryInfo>
|
||||||
|
#include <QtCore/QTimer>
|
||||||
#include <QtCore/QTranslator>
|
#include <QtCore/QTranslator>
|
||||||
#include <QtCore/qplugin.h>
|
#include <QtCore/qplugin.h>
|
||||||
|
|
||||||
@@ -75,6 +77,7 @@
|
|||||||
#include <QtGui/QComboBox>
|
#include <QtGui/QComboBox>
|
||||||
#include <QtGui/QDesktopServices>
|
#include <QtGui/QDesktopServices>
|
||||||
#include <QtGui/QShortcut>
|
#include <QtGui/QShortcut>
|
||||||
|
#include <QtGui/QStackedLayout>
|
||||||
#include <QtGui/QSplitter>
|
#include <QtGui/QSplitter>
|
||||||
#include <QtGui/QToolBar>
|
#include <QtGui/QToolBar>
|
||||||
|
|
||||||
@@ -113,7 +116,9 @@ HelpPlugin::HelpPlugin()
|
|||||||
m_searchItem(0),
|
m_searchItem(0),
|
||||||
m_bookmarkItem(0),
|
m_bookmarkItem(0),
|
||||||
m_sideBar(0),
|
m_sideBar(0),
|
||||||
m_firstModeChange(true)
|
m_firstModeChange(true),
|
||||||
|
m_oldMode(0),
|
||||||
|
m_externalWindow(new ExternalHelpWindow(0))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,8 +155,11 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
|
|||||||
addAutoReleasedObject(m_filterSettingsPage = new FilterSettingsPage());
|
addAutoReleasedObject(m_filterSettingsPage = new FilterSettingsPage());
|
||||||
addAutoReleasedObject(m_generalSettingsPage = new GeneralSettingsPage());
|
addAutoReleasedObject(m_generalSettingsPage = new GeneralSettingsPage());
|
||||||
|
|
||||||
|
m_generalSettingsPage->setHelpManager(m_helpManager);
|
||||||
connect(m_generalSettingsPage, SIGNAL(fontChanged()), this,
|
connect(m_generalSettingsPage, SIGNAL(fontChanged()), this,
|
||||||
SLOT(fontChanged()));
|
SLOT(fontChanged()));
|
||||||
|
connect(m_generalSettingsPage, SIGNAL(contextHelpOptionChanged()), this,
|
||||||
|
SLOT(contextHelpOptionChanged()));
|
||||||
connect(Core::HelpManager::instance(), SIGNAL(helpRequested(QUrl)), this,
|
connect(Core::HelpManager::instance(), SIGNAL(helpRequested(QUrl)), this,
|
||||||
SLOT(handleHelpRequest(QUrl)));
|
SLOT(handleHelpRequest(QUrl)));
|
||||||
m_filterSettingsPage->setHelpManager(m_helpManager);
|
m_filterSettingsPage->setHelpManager(m_helpManager);
|
||||||
@@ -315,9 +323,20 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
|
|||||||
connect(m_core->modeManager(), SIGNAL(currentModeChanged(Core::IMode*,
|
connect(m_core->modeManager(), SIGNAL(currentModeChanged(Core::IMode*,
|
||||||
Core::IMode*)), this, SLOT(modeChanged(Core::IMode*, Core::IMode*)));
|
Core::IMode*)), this, SLOT(modeChanged(Core::IMode*, Core::IMode*)));
|
||||||
|
|
||||||
addAutoReleasedObject(m_mode = new HelpMode(m_splitter));
|
if (contextHelpOption() == Help::Constants::ExternalHelpAlways) {
|
||||||
|
m_mode = new HelpMode(new QWidget);
|
||||||
|
m_mode->setEnabled(false);
|
||||||
|
m_externalWindow->setCentralWidget(m_splitter);
|
||||||
|
QTimer::singleShot(0, this, SLOT(showExternalWindow()));
|
||||||
|
} else {
|
||||||
|
m_mode = new HelpMode(m_splitter);
|
||||||
|
}
|
||||||
|
addAutoReleasedObject(m_mode);
|
||||||
m_mode->setContext(modecontext);
|
m_mode->setContext(modecontext);
|
||||||
|
|
||||||
|
connect(Core::ICore::instance(), SIGNAL(coreAboutToClose()),
|
||||||
|
m_externalWindow, SLOT(close()));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,6 +370,8 @@ ExtensionSystem::IPlugin::ShutdownFlag HelpPlugin::aboutToShutdown()
|
|||||||
{
|
{
|
||||||
if (m_sideBar)
|
if (m_sideBar)
|
||||||
m_sideBar->saveSettings(m_core->settings(), QLatin1String("HelpSideBar"));
|
m_sideBar->saveSettings(m_core->settings(), QLatin1String("HelpSideBar"));
|
||||||
|
delete m_externalWindow;
|
||||||
|
|
||||||
return SynchronousShutdown;
|
return SynchronousShutdown;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -555,7 +576,10 @@ void HelpPlugin::createRightPaneContextViewer()
|
|||||||
|
|
||||||
void HelpPlugin::activateHelpMode()
|
void HelpPlugin::activateHelpMode()
|
||||||
{
|
{
|
||||||
|
if (contextHelpOption() != Help::Constants::ExternalHelpAlways)
|
||||||
m_core->modeManager()->activateMode(QLatin1String(Constants::ID_MODE_HELP));
|
m_core->modeManager()->activateMode(QLatin1String(Constants::ID_MODE_HELP));
|
||||||
|
else
|
||||||
|
showExternalWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HelpPlugin::switchToHelpMode()
|
void HelpPlugin::switchToHelpMode()
|
||||||
@@ -575,10 +599,17 @@ void HelpPlugin::slotHideRightPane()
|
|||||||
Core::RightPaneWidget::instance()->setShown(false);
|
Core::RightPaneWidget::instance()->setShown(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HelpPlugin::showExternalWindow()
|
||||||
|
{
|
||||||
|
setup();
|
||||||
|
m_externalWindow->show();
|
||||||
|
m_externalWindow->activateWindow();
|
||||||
|
}
|
||||||
|
|
||||||
void HelpPlugin::modeChanged(Core::IMode *mode, Core::IMode *old)
|
void HelpPlugin::modeChanged(Core::IMode *mode, Core::IMode *old)
|
||||||
{
|
{
|
||||||
Q_UNUSED(old)
|
|
||||||
if (mode == m_mode) {
|
if (mode == m_mode) {
|
||||||
|
m_oldMode = old;
|
||||||
qApp->setOverrideCursor(Qt::WaitCursor);
|
qApp->setOverrideCursor(Qt::WaitCursor);
|
||||||
setup();
|
setup();
|
||||||
qApp->restoreOverrideCursor();
|
qApp->restoreOverrideCursor();
|
||||||
@@ -622,10 +653,65 @@ void HelpPlugin::fontChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStackedLayout * layoutForWidget(QWidget *parent, QWidget *widget)
|
||||||
|
{
|
||||||
|
QList<QStackedLayout*> list = parent->findChildren<QStackedLayout*>();
|
||||||
|
foreach (QStackedLayout *layout, list) {
|
||||||
|
const int index = layout->indexOf(widget);
|
||||||
|
if (index >= 0)
|
||||||
|
return layout;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HelpPlugin::contextHelpOptionChanged()
|
||||||
|
{
|
||||||
|
setup();
|
||||||
|
QWidget *modeWidget = m_mode->widget();
|
||||||
|
if (modeWidget == m_splitter
|
||||||
|
&& contextHelpOption() == Help::Constants::ExternalHelpAlways) {
|
||||||
|
if (QWidget *widget = m_splitter->parentWidget()) {
|
||||||
|
if (QStackedLayout *layout = layoutForWidget(widget, m_splitter)) {
|
||||||
|
const int index = layout->indexOf(m_splitter);
|
||||||
|
layout->removeWidget(m_splitter);
|
||||||
|
m_mode->setWidget(new QWidget);
|
||||||
|
layout->insertWidget(index, m_mode->widget());
|
||||||
|
m_externalWindow->setCentralWidget(m_splitter);
|
||||||
|
m_splitter->show();
|
||||||
|
|
||||||
|
slotHideRightPane();
|
||||||
|
m_mode->setEnabled(false);
|
||||||
|
m_externalWindow->show();
|
||||||
|
|
||||||
|
if (m_oldMode && m_mode == m_core->modeManager()->currentMode())
|
||||||
|
m_core->modeManager()->activateMode(m_oldMode->id());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (modeWidget != m_splitter
|
||||||
|
&& contextHelpOption() != Help::Constants::ExternalHelpAlways) {
|
||||||
|
QStackedLayout *wLayout = layoutForWidget(modeWidget->parentWidget(),
|
||||||
|
modeWidget);
|
||||||
|
if (wLayout && m_splitter->parentWidget()->layout()) {
|
||||||
|
const int index = wLayout->indexOf(modeWidget);
|
||||||
|
QWidget *tmp = wLayout->widget(index);
|
||||||
|
wLayout->removeWidget(modeWidget);
|
||||||
|
delete tmp;
|
||||||
|
|
||||||
|
m_splitter->parentWidget()->layout()->removeWidget(m_splitter);
|
||||||
|
m_mode->setWidget(m_splitter);
|
||||||
|
wLayout->insertWidget(index, m_splitter);
|
||||||
|
|
||||||
|
m_mode->setEnabled(true);
|
||||||
|
m_externalWindow->close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void HelpPlugin::setupHelpEngineIfNeeded()
|
void HelpPlugin::setupHelpEngineIfNeeded()
|
||||||
{
|
{
|
||||||
m_helpManager->setEngineNeedsUpdate();
|
m_helpManager->setEngineNeedsUpdate();
|
||||||
if (Core::ModeManager::instance()->currentMode() == m_mode)
|
if (Core::ModeManager::instance()->currentMode() == m_mode
|
||||||
|
|| contextHelpOption() == Help::Constants::ExternalHelpAlways)
|
||||||
m_helpManager->setupGuiHelpEngine();
|
m_helpManager->setupGuiHelpEngine();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -905,6 +991,11 @@ void HelpPlugin::setup()
|
|||||||
|
|
||||||
int HelpPlugin::contextHelpOption() const
|
int HelpPlugin::contextHelpOption() const
|
||||||
{
|
{
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
const QString key = Help::Constants::ID_MODE_HELP + QLatin1String("/ContextHelpOption");
|
||||||
|
if (settings->contains(key))
|
||||||
|
return settings->value(key, Help::Constants::SideBySideIfPossible).toInt();
|
||||||
|
|
||||||
const QHelpEngineCore &engine = LocalHelpManager::helpEngine();
|
const QHelpEngineCore &engine = LocalHelpManager::helpEngine();
|
||||||
return engine.customValue(QLatin1String("ContextHelpOption"),
|
return engine.customValue(QLatin1String("ContextHelpOption"),
|
||||||
Help::Constants::SideBySideIfPossible).toInt();
|
Help::Constants::SideBySideIfPossible).toInt();
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ namespace Help {
|
|||||||
namespace Internal {
|
namespace Internal {
|
||||||
class CentralWidget;
|
class CentralWidget;
|
||||||
class DocSettingsPage;
|
class DocSettingsPage;
|
||||||
|
class ExternalHelpWindow;
|
||||||
class FilterSettingsPage;
|
class FilterSettingsPage;
|
||||||
class GeneralSettingsPage;
|
class GeneralSettingsPage;
|
||||||
class HelpMode;
|
class HelpMode;
|
||||||
@@ -73,6 +74,7 @@ public:
|
|||||||
ShutdownFlag aboutToShutdown();
|
ShutdownFlag aboutToShutdown();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void showExternalWindow();
|
||||||
void modeChanged(Core::IMode *mode, Core::IMode *old);
|
void modeChanged(Core::IMode *mode, Core::IMode *old);
|
||||||
|
|
||||||
void activateContext();
|
void activateContext();
|
||||||
@@ -94,6 +96,8 @@ private slots:
|
|||||||
void updateSideBarSource(const QUrl &newUrl);
|
void updateSideBarSource(const QUrl &newUrl);
|
||||||
|
|
||||||
void fontChanged();
|
void fontChanged();
|
||||||
|
void contextHelpOptionChanged();
|
||||||
|
|
||||||
void updateCloseButton();
|
void updateCloseButton();
|
||||||
void setupHelpEngineIfNeeded();
|
void setupHelpEngineIfNeeded();
|
||||||
|
|
||||||
@@ -141,6 +145,9 @@ private:
|
|||||||
QString m_oldAttrValue;
|
QString m_oldAttrValue;
|
||||||
QString m_styleProperty;
|
QString m_styleProperty;
|
||||||
QString m_idFromContext;
|
QString m_idFromContext;
|
||||||
|
|
||||||
|
Core::IMode* m_oldMode;
|
||||||
|
ExternalHelpWindow *m_externalWindow;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
Reference in New Issue
Block a user