Falkon Develop
Cross-platform Qt-based web browser
verticaltabscontroller.cpp
Go to the documentation of this file.
1/* ============================================================
2* VerticalTabs plugin for Falkon
3* Copyright (C) 2018 David Rosca <nowrep@gmail.com>
4*
5* This program is free software: you can redistribute it and/or modify
6* it under the terms of the GNU General Public License as published by
7* the Free Software Foundation, either version 3 of the License, or
8* (at your option) any later version.
9*
10* This program is distributed in the hope that it will be useful,
11* but WITHOUT ANY WARRANTY; without even the implied warranty of
12* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13* GNU General Public License for more details.
14*
15* You should have received a copy of the GNU General Public License
16* along with this program. If not, see <http://www.gnu.org/licenses/>.
17* ============================================================ */
19#include "verticaltabsplugin.h"
20#include "verticaltabswidget.h"
21
22#include "tabwidget.h"
23
24#include <QAction>
25#include <QKeyEvent>
26
28 : SideBarInterface(plugin)
29 , m_plugin(plugin)
30{
31}
32
34{
35 return tr("Vertical Tabs");
36}
37
39{
40 auto *act = new QAction(title(), this);
41 act->setCheckable(true);
42 return act;
43}
44
46{
47 auto *widget = new VerticalTabsWidget(window);
48 widget->setViewType(m_plugin->viewType());
49 widget->setStyleSheet(m_plugin->styleSheet());
51 connect(m_plugin, &VerticalTabsPlugin::styleSheetChanged, widget, &VerticalTabsWidget::setStyleSheet);
52
53 m_widgets[window] = widget;
54 return widget;
55}
56
57bool VerticalTabsController::handleKeyPress(QKeyEvent *event, TabWidget *tabWidget)
58{
59 auto switchToNextTab = [=]() {
60 VerticalTabsWidget *widget = m_widgets.value(tabWidget->browserWindow());
61 if (widget) {
62 widget->switchToNextTab();
63 return true;
64 }
65 return false;
66 };
67
68 auto switchToPreviousTab = [=]() {
69 VerticalTabsWidget *widget = m_widgets.value(tabWidget->browserWindow());
70 if (widget) {
71 widget->switchToPreviousTab();
72 return true;
73 }
74 return false;
75 };
76
77 switch (event->key()) {
78 case Qt::Key_Tab:
79 case Qt::Key_PageDown:
80 if (event->modifiers() == Qt::ControlModifier) {
81 if (switchToNextTab()) {
82 return true;
83 }
84 }
85 break;
86
87 case Qt::Key_Backtab:
88 if (event->modifiers() == (Qt::ShiftModifier | Qt::ControlModifier)) {
89 if (switchToPreviousTab()) {
90 return true;
91 }
92 }
93 break;
94
95 case Qt::Key_PageUp:
96 if (event->modifiers() == Qt::ControlModifier) {
97 if (switchToPreviousTab()) {
98 return true;
99 }
100 }
101 break;
102
103 default:
104 break;
105 }
106
107 return false;
108}
BrowserWindow * browserWindow() const
Definition: tabwidget.cpp:152
VerticalTabsController(VerticalTabsPlugin *plugin)
bool handleKeyPress(QKeyEvent *event, TabWidget *tabWidget)
QWidget * createSideBarWidget(BrowserWindow *window) override
QAction * createMenuAction() override
QString title() const override
void viewTypeChanged(VerticalTabsPlugin::ViewType type)
void styleSheetChanged(const QString &styleSheet)
ViewType viewType() const
QString styleSheet() const
void setViewType(VerticalTabsPlugin::ViewType type)