summaryrefslogtreecommitdiff
path: root/src/plugins/help
diff options
context:
space:
mode:
authorkh1 <qt-info@nokia.com>2010-08-04 15:34:25 +0200
committerkh1 <qt-info@nokia.com>2010-08-04 15:35:29 +0200
commit597ceed2c42afd2a14145eedb960114ab7b1495c (patch)
treeb75207d168ffdacb3b40a8fe3ff52ba242c6a0e7 /src/plugins/help
parent955196c7c019423549d346d36c2da065e0cb320c (diff)
downloadqt-creator-597ceed2c42afd2a14145eedb960114ab7b1495c.tar.gz
Make the side bar able to hide, implement missing shortcuts.
Reviewed-by: ck
Diffstat (limited to 'src/plugins/help')
-rw-r--r--src/plugins/help/externalhelpwindow.cpp87
-rw-r--r--src/plugins/help/externalhelpwindow.h11
-rw-r--r--src/plugins/help/helpplugin.cpp42
-rw-r--r--src/plugins/help/helpplugin.h2
-rw-r--r--src/plugins/help/openpagesswitcher.cpp10
5 files changed, 143 insertions, 9 deletions
diff --git a/src/plugins/help/externalhelpwindow.cpp b/src/plugins/help/externalhelpwindow.cpp
index 36e0113d41..edc2a2dc84 100644
--- a/src/plugins/help/externalhelpwindow.cpp
+++ b/src/plugins/help/externalhelpwindow.cpp
@@ -28,11 +28,19 @@
**************************************************************************/
#include "externalhelpwindow.h"
+
+#include "centralwidget.h"
#include "helpconstants.h"
+#include "openpagesmanager.h"
+#include <coreplugin/coreconstants.h>
#include <coreplugin/icore.h>
+#include <QtGui/QAction>
+#include <QtGui/QHBoxLayout>
#include <QtGui/QKeyEvent>
+#include <QtGui/QStatusBar>
+#include <QtGui/QToolButton>
using namespace Help::Internal;
@@ -49,7 +57,86 @@ ExternalHelpWindow::ExternalHelpWindow(QWidget *parent)
resize(640, 480);
settings->endGroup();
+
+ QAction *action = new QAction(this);
+ action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_I));
+ connect(action, SIGNAL(triggered()), this, SIGNAL(activateIndex()));
+ addAction(action);
+
+ action = new QAction(this);
+ action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_C));
+ connect(action, SIGNAL(triggered()), this, SIGNAL(activateContents()));
+ addAction(action);
+
+ action = new QAction(this);
+ action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Slash));
+ connect(action, SIGNAL(triggered()), this, SIGNAL(activateSearch()));
+ addAction(action);
+
+ action = new QAction(this);
+ action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_B));
+ connect(action, SIGNAL(triggered()), this, SIGNAL(activateBookmarks()));
+ addAction(action);
+
+ action = new QAction(this);
+ action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_O));
+ connect(action, SIGNAL(triggered()), this, SIGNAL(activateOpenPages()));
+ addAction(action);
+
+ action = new QAction(this);
+ action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Plus));
+ connect(action, SIGNAL(triggered()), CentralWidget::instance(), SLOT(zoomIn()));
+ addAction(action);
+
+ action = new QAction(this);
+ action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Minus));
+ connect(action, SIGNAL(triggered()), CentralWidget::instance(), SLOT(zoomOut()));
+ addAction(action);
+
+ action = new QAction(this);
+ action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_0));
+ connect(action, SIGNAL(triggered()), CentralWidget::instance(), SLOT(resetZoom()));
+ addAction(action);
+
+ QAction *ctrlTab = new QAction(this);
+ connect(ctrlTab, SIGNAL(triggered()), &OpenPagesManager::instance(),
+ SLOT(gotoPreviousPage()));
+ addAction(ctrlTab);
+
+ QAction *ctrlShiftTab = new QAction(this);
+ connect(ctrlShiftTab, SIGNAL(triggered()), &OpenPagesManager::instance(),
+ SLOT(gotoNextPage()));
+ addAction(ctrlShiftTab);
+
+ action = new QAction(QIcon(Core::Constants::ICON_TOGGLE_SIDEBAR),
+ tr("Show Sidebar"), this);
+ connect(action, SIGNAL(triggered()), this, SIGNAL(showHideSidebar()));
+
+#ifdef Q_WS_MAC
+ action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_0));
+ ctrlTab->setShortcut(QKeySequence(tr("Alt+Tab")));
+ ctrlShiftTab->setShortcut(QKeySequence(tr("Alt+Shift+Tab")));
+#else
+ action->setShortcut(QKeySequence(Qt::ALT + Qt::Key_0));
+ ctrlTab->setShortcut(QKeySequence(tr("Ctrl+Tab")));
+ ctrlShiftTab->setShortcut(QKeySequence(tr("Ctrl+Shift+Tab")));
+#endif
+
+ QToolButton *button = new QToolButton;
+ button->setDefaultAction(action);
+
+ QStatusBar *statusbar = statusBar();
+ statusbar->show();
+ statusbar->setProperty("p_styled", true);
+ statusbar->addPermanentWidget(button);
+
+ QWidget *w = new QWidget;
+ QHBoxLayout *layout = new QHBoxLayout(w);
+ layout->addStretch(1);
+ statusbar->insertWidget(1, w, 1);
+
installEventFilter(this);
+ setWindowTitle(tr("Qt Creator Offline Help"));
}
ExternalHelpWindow::~ExternalHelpWindow()
diff --git a/src/plugins/help/externalhelpwindow.h b/src/plugins/help/externalhelpwindow.h
index f96117f01f..8dd72e2185 100644
--- a/src/plugins/help/externalhelpwindow.h
+++ b/src/plugins/help/externalhelpwindow.h
@@ -33,16 +33,27 @@
#include <QtGui/QMainWindow>
QT_FORWARD_DECLARE_CLASS(QCloseEvent)
+QT_FORWARD_DECLARE_CLASS(QToolButton)
namespace Help {
namespace Internal {
class ExternalHelpWindow : public QMainWindow
{
+ Q_OBJECT
+
public:
ExternalHelpWindow(QWidget *parent = 0);
virtual ~ExternalHelpWindow();
+signals:
+ void activateIndex();
+ void activateContents();
+ void activateSearch();
+ void activateBookmarks();
+ void activateOpenPages();
+ void showHideSidebar();
+
protected:
void closeEvent(QCloseEvent *event);
bool eventFilter(QObject *obj, QEvent *event);
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index dc6fa523ae..9d549a2f91 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -117,8 +117,7 @@ HelpPlugin::HelpPlugin()
m_bookmarkItem(0),
m_sideBar(0),
m_firstModeChange(true),
- m_oldMode(0),
- m_externalWindow(new ExternalHelpWindow(0))
+ m_oldMode(0)
{
}
@@ -208,7 +207,8 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
connect(action, SIGNAL(triggered()), this, SLOT(addBookmark()));
// Add Contents, Index, and Context menu items and a separator to the Help menu
- action = new QAction(QIcon::fromTheme(QLatin1String("help-contents")), tr(SB_CONTENTS), this);
+ action = new QAction(QIcon::fromTheme(QLatin1String("help-contents")),
+ tr(SB_CONTENTS), this);
cmd = am->registerAction(action, QLatin1String("Help.Contents"), globalcontext);
am->actionContainer(M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP);
connect(action, SIGNAL(triggered()), this, SLOT(activateContents()));
@@ -324,6 +324,7 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
connect(m_core->modeManager(), SIGNAL(currentModeChanged(Core::IMode*,
Core::IMode*)), this, SLOT(modeChanged(Core::IMode*, Core::IMode*)));
+ m_externalWindow = new ExternalHelpWindow;
if (contextHelpOption() == Help::Constants::ExternalHelpAlways) {
m_mode = new HelpMode(new QWidget);
m_mode->setEnabled(false);
@@ -334,9 +335,6 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
}
addAutoReleasedObject(m_mode);
m_mode->setContext(modecontext);
-
- connect(Core::ICore::instance(), SIGNAL(coreAboutToClose()),
- m_externalWindow, SLOT(close()));
return true;
}
@@ -561,8 +559,8 @@ void HelpPlugin::createRightPaneContextViewer()
Core::Context(Constants::C_HELP_SIDEBAR), this));
QAction *copy = new QAction(this);
- Core::Command *cmd = m_core->actionManager()->registerAction(copy, Core::Constants::COPY,
- Core::Context(Constants::C_HELP_SIDEBAR));
+ Core::Command *cmd = m_core->actionManager()->registerAction(copy,
+ Core::Constants::COPY, Core::Context(Constants::C_HELP_SIDEBAR));
copy->setText(cmd->action()->text());
copy->setIcon(cmd->action()->icon());
@@ -600,14 +598,21 @@ void HelpPlugin::slotHideRightPane()
Core::RightPaneWidget::instance()->setShown(false);
}
+void HelpPlugin::showHideSidebar()
+{
+ m_sideBar->setVisible(!m_sideBar->isVisible());
+}
+
void HelpPlugin::showExternalWindow()
{
bool firstTime = m_firstModeChange;
setup();
m_externalWindow->show();
m_externalWindow->activateWindow();
- if (firstTime)
+ if (firstTime) {
+ connectExternalHelpWindow();
Core::ICore::instance()->mainWindow()->activateWindow();
+ }
}
void HelpPlugin::modeChanged(Core::IMode *mode, Core::IMode *old)
@@ -707,6 +712,7 @@ void HelpPlugin::contextHelpOptionChanged()
m_mode->setEnabled(true);
m_externalWindow->close();
+ m_sideBar->setVisible(true);
}
}
}
@@ -1005,4 +1011,22 @@ int HelpPlugin::contextHelpOption() const
Help::Constants::SideBySideIfPossible).toInt();
}
+void HelpPlugin::connectExternalHelpWindow()
+{
+ connect(Core::ICore::instance(), SIGNAL(coreAboutToClose()),
+ m_externalWindow, SLOT(close()));
+ connect(m_externalWindow, SIGNAL(activateIndex()), this,
+ SLOT(activateIndex()));
+ connect(m_externalWindow, SIGNAL(activateContents()), this,
+ SLOT(activateContents()));
+ connect(m_externalWindow, SIGNAL(activateSearch()), this,
+ SLOT(activateSearch()));
+ connect(m_externalWindow, SIGNAL(activateBookmarks()), this,
+ SLOT(activateBookmarks()));
+ connect(m_externalWindow, SIGNAL(activateOpenPages()), this,
+ SLOT(activateOpenPages()));
+ connect(m_externalWindow, SIGNAL(showHideSidebar()), this,
+ SLOT(showHideSidebar()));
+}
+
Q_EXPORT_PLUGIN(HelpPlugin)
diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h
index 8ba4457b77..08171f1aab 100644
--- a/src/plugins/help/helpplugin.h
+++ b/src/plugins/help/helpplugin.h
@@ -91,6 +91,7 @@ private slots:
void switchToHelpMode();
void switchToHelpMode(const QUrl &source);
void slotHideRightPane();
+ void showHideSidebar();
void updateSideBarSource();
void updateSideBarSource(const QUrl &newUrl);
@@ -114,6 +115,7 @@ private:
void setup();
int contextHelpOption() const;
+ void connectExternalHelpWindow();
private:
HelpMode *m_mode;
diff --git a/src/plugins/help/openpagesswitcher.cpp b/src/plugins/help/openpagesswitcher.cpp
index 9cdf4bfacf..9c5705c5f5 100644
--- a/src/plugins/help/openpagesswitcher.cpp
+++ b/src/plugins/help/openpagesswitcher.cpp
@@ -124,6 +124,16 @@ bool OpenPagesSwitcher::eventFilter(QObject *object, QEvent *event)
emit setCurrentPage(m_openPagesWidget->currentIndex());
return true;
}
+
+ Qt::KeyboardModifier modifier = Qt::ControlModifier;
+#ifdef Q_WS_MAC
+ modifier = Qt::AltModifier;
+#endif
+ if (key == Qt::Key_Backtab
+ && (ke->modifiers() == (modifier | Qt::ShiftModifier)))
+ gotoNextPage();
+ else if (key == Qt::Key_Tab && (ke->modifiers() == modifier))
+ gotoPreviousPage();
} else if (event->type() == QEvent::KeyRelease) {
QKeyEvent *ke = static_cast<QKeyEvent*>(event);
if (ke->modifiers() == 0