X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fbufferwidget.cpp;h=bfda813323a763644a6dbb95d05383a41e830429;hp=f9b698672c9eff48f24b094998c19efdc01dc658;hb=96ba1da0cfa2a22be6fe8cea8d32a7212dcfa86a;hpb=49f966fd9c04f3aa3149be73bb61b8e1781ce1c2 diff --git a/src/qtui/bufferwidget.cpp b/src/qtui/bufferwidget.cpp index f9b69867..bfda8133 100644 --- a/src/qtui/bufferwidget.cpp +++ b/src/qtui/bufferwidget.cpp @@ -25,7 +25,13 @@ #include "settings.h" #include "client.h" +#include "action.h" +#include "actioncollection.h" +#include "qtui.h" + #include +#include +#include BufferWidget::BufferWidget(QWidget *parent) : AbstractBufferContainer(parent), @@ -58,6 +64,23 @@ BufferWidget::BufferWidget(QWidget *parent) connect(_chatViewSearchController, SIGNAL(newCurrentHighlight(QGraphicsItem *)), this, SLOT(scrollToHighlight(QGraphicsItem *))); + + ActionCollection *coll = QtUi::actionCollection(); + + Action *zoomChatview = coll->add("ZoomChatView"); + connect(zoomChatview, SIGNAL(triggered()), SLOT(zoomIn())); + zoomChatview->setText(tr("Enlarge Chat View")); + zoomChatview->setShortcut(tr("Ctrl++")); + + Action *zoomOutChatview = coll->add("ZoomOutChatView"); + connect(zoomOutChatview, SIGNAL(triggered()), SLOT(zoomOut())); + zoomOutChatview->setText(tr("Demagnify Chat View")); + zoomOutChatview->setShortcut(tr("Ctrl+-")); + + Action *zoomNormalChatview = coll->add("ZoomNormalChatView"); + connect(zoomNormalChatview, SIGNAL(triggered()), SLOT(zoomNormal())); + zoomNormalChatview->setText(tr("Normalize zoom of Chat View")); + zoomNormalChatview->setShortcut(tr("Ctrl+0")); } BufferWidget::~BufferWidget() { @@ -99,3 +122,51 @@ void BufferWidget::scrollToHighlight(QGraphicsItem *highlightItem) { view->centerOn(highlightItem); } } + + +void BufferWidget::zoomIn() { + ChatView *view = qobject_cast(ui.stackedWidget->currentWidget()); + if(!view) return; + view->zoomIn(); +} + +void BufferWidget::zoomOut() { + ChatView *view = qobject_cast(ui.stackedWidget->currentWidget()); + if(!view) return; + view->zoomOut(); +} + +void BufferWidget::zoomNormal() { + ChatView *view = qobject_cast(ui.stackedWidget->currentWidget()); + if(!view) return; + view->zoomNormal(); +} + +bool BufferWidget::eventFilter(QObject *watched, QEvent *event) { + Q_UNUSED(watched); + if(event->type() != QEvent::KeyPress) + return false; + + QKeyEvent *keyEvent = static_cast(event); + + int direction = 1; + switch(keyEvent->key()) { + case Qt::Key_PageUp: + case Qt::Key_PageDown: + // static cast to access public qobject::event + return static_cast(ui.stackedWidget->currentWidget())->event(event); + + case Qt::Key_Up: + direction = -1; + case Qt::Key_Down: + if(keyEvent->modifiers() == Qt::ShiftModifier) { + QAbstractScrollArea *scrollArea = qobject_cast(ui.stackedWidget->currentWidget()); + if(!scrollArea) + return false; + int sliderPosition = scrollArea->verticalScrollBar()->value(); + scrollArea->verticalScrollBar()->setValue(sliderPosition + (direction * 12)); + } + default: + return false; + } +}