39 auto *layout =
new QVBoxLayout(
this);
40 layout->setSpacing(0);
41 layout->setContentsMargins(0, 0, 0, 0);
45 model->setFilterPinnedTabs(
false);
46 model->setRejectDropOnLastIndex(
true);
47 model->setSourceModel(m_window->
tabModel());
48 m_pinnedView->setModel(model);
52 m_pinnedView->setFocusProxy(m_normalView);
55 buttonAddTab->setObjectName(
QSL(
"verticaltabs-button-addtab"));
56 buttonAddTab->setAutoRaise(
true);
57 buttonAddTab->setFocusPolicy(Qt::NoFocus);
58 buttonAddTab->setToolTip(tr(
"New Tab"));
59 buttonAddTab->setIcon(QIcon::fromTheme(
QSL(
"list-add")));
60 buttonAddTab->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
64 m_groupMenu =
new QMenu(
this);
65 buttonAddTab->setMenu(m_groupMenu);
66 connect(m_groupMenu, &QMenu::aboutToShow,
this, &VerticalTabsWidget::updateGroupMenu);
68 layout->addWidget(m_pinnedView);
69 layout->addWidget(m_normalView);
70 layout->addWidget(buttonAddTab);
76 model->setFilterPinnedTabs(
true);
78 delete m_normalView->model();
82 model->setSourceModel(m_window->
tabModel());
90 m_treeModel->setSourceModel(m_window->
tabModel());
91 model->setSourceModel(m_treeModel);
112 WebTab *tab = previousTab();
118WebTab *VerticalTabsWidget::nextTab()
const
122 next = m_pinnedView->
indexAfter(m_pinnedView->currentIndex());
123 if (!next.isValid()) {
124 next = m_normalView->model()->index(0, 0);
127 next = m_normalView->indexBelow(m_normalView->currentIndex());
128 if (!next.isValid()) {
129 next = m_pinnedView->model()->index(0, 0);
135WebTab *VerticalTabsWidget::previousTab()
const
137 QModelIndex previous;
139 previous = m_pinnedView->
indexBefore(m_pinnedView->currentIndex());
140 if (!previous.isValid()) {
141 previous = m_normalView->model()->index(m_normalView->model()->rowCount() - 1, 0);
142 while (previous.isValid()) {
143 const QModelIndex below = m_normalView->indexBelow(previous);
144 if (below.isValid()) {
152 previous = m_normalView->indexAbove(m_normalView->currentIndex());
153 if (!previous.isValid()) {
154 previous = m_pinnedView->model()->index(m_pinnedView->model()->rowCount() - 1, 0);
160void VerticalTabsWidget::wheelEvent(QWheelEvent *event)
162 if (m_normalView->verticalScrollBar()->isVisible()) {
186void VerticalTabsWidget::updateGroupMenu()
188 m_groupMenu->clear();
190 for (
int i = 0;
i < m_window->
tabWidget()->count(); ++
i) {
192 if (tab->
url().toString(QUrl::RemoveFragment) ==
QL1S(
"extension://verticaltabs/group")) {
193 m_groupMenu->addAction(tab->
url().fragment(),
this, [=]() {
194 QMetaObject::invokeMethod(m_window,
"addTab");
195 m_window->tabWidget()->webTab()->setParentTab(tab);
200 m_groupMenu->addSeparator();
201 m_groupMenu->addAction(tr(
"Add New Group..."),
this, [
this]() {
TabWidget * tabWidget() const
TabModel * tabModel() const
QModelIndex indexBefore(const QModelIndex &index) const
QModelIndex indexAfter(const QModelIndex &index) const
void setHideWhenEmpty(bool enable)
void setModel(QAbstractItemModel *model) override
void setHaveTreeModel(bool enable)
void setTabsInOrder(bool enable)
void setParentTab(WebTab *tab)
Direction takeDirection()
void processEvent(QWheelEvent *event)