Commit 597ceed2 authored by kh1's avatar kh1
Browse files

Make the side bar able to hide, implement missing shortcuts.

Reviewed-by: ck
parent 955196c7
......@@ -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()
......
......@@ -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);
......
......@@ -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)
......@@ -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;
......
......@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment