+void BufferWidget::scrollToHighlight(QGraphicsItem *highlightItem) {
+ ChatView *view = qobject_cast<ChatView *>(ui.stackedWidget->currentWidget());
+ if(view) {
+ view->centerOn(highlightItem);
+ }
+}
+
+
+void BufferWidget::zoomIn() {
+ ChatView *view = qobject_cast<ChatView *>(ui.stackedWidget->currentWidget());
+ if(view)
+ view->zoomIn();
+}
+
+void BufferWidget::zoomOut() {
+ ChatView *view = qobject_cast<ChatView *>(ui.stackedWidget->currentWidget());
+ if(view)
+ view->zoomOut();
+}
+
+void BufferWidget::zoomOriginal() {
+ ChatView *view = qobject_cast<ChatView *>(ui.stackedWidget->currentWidget());
+ if(view)
+ view->zoomOriginal();
+}
+
+void BufferWidget::addActionsToMenu(QMenu *menu, const QPointF &pos) {
+ Q_UNUSED(pos);
+ ActionCollection *coll = QtUi::actionCollection();
+ menu->addSeparator();
+ menu->addAction(coll->action("ZoomInChatView"));
+ menu->addAction(coll->action("ZoomOutChatView"));
+ menu->addAction(coll->action("ZoomOriginalChatView"));
+}
+
+bool BufferWidget::eventFilter(QObject *watched, QEvent *event) {
+ if(event->type() != QEvent::KeyPress)
+ return false;
+
+ QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
+
+ // Intercept copy key presses
+ if(keyEvent == QKeySequence::Copy) {
+ InputLine *inputLine = qobject_cast<InputLine *>(watched);
+ if(!inputLine)
+ return false;
+ if(inputLine->hasSelectedText())
+ return false;
+ ChatView *view = qobject_cast<ChatView *>(ui.stackedWidget->currentWidget());
+ if(view)
+ view->scene()->selectionToClipboard();
+ return true;
+ }
+
+ switch(keyEvent->key()) {
+ case Qt::Key_Up:
+ case Qt::Key_Down:
+ if(!(keyEvent->modifiers() & Qt::ShiftModifier))
+ return false;
+ case Qt::Key_PageUp:
+ case Qt::Key_PageDown:
+ // static cast to access public qobject::event
+ return static_cast<QObject*>(ui.stackedWidget->currentWidget())->event(event);
+ default:
+ return false;
+ }
+}