Libksieve

sievescripttabwidget.cpp
1 /*
2  Copyright (C) 2013-2020 Laurent Montel <[email protected]>
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License as published by the Free Software Foundation; either
7  version 2 of the License, or (at your option) any later version.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  Library General Public License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to
16  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  Boston, MA 02110-1301, USA.
18 */
19 
20 #include "sievescripttabwidget.h"
21 #include "sievewidgetpageabstract.h"
22 
23 #include <QMenu>
24 #include <KLocalizedString>
25 #include <QIcon>
26 
27 #include <QTabBar>
28 
29 using namespace KSieveUi;
30 
31 SieveScriptTabWidget::SieveScriptTabWidget(QWidget *parent)
32  : QTabWidget(parent)
33 {
34  setElideMode(Qt::ElideRight);
35  tabBar()->setSelectionBehaviorOnRemove(QTabBar::SelectPreviousTab);
36  setDocumentMode(true);
38  connect(this, &SieveScriptTabWidget::customContextMenuRequested, this, &SieveScriptTabWidget::slotTabContextMenuRequest);
39 }
40 
41 SieveScriptTabWidget::~SieveScriptTabWidget()
42 {
43 }
44 
45 void SieveScriptTabWidget::slotTabContextMenuRequest(const QPoint &pos)
46 {
47  QTabBar *bar = tabBar();
48  const int indexBar = bar->tabAt(bar->mapFrom(this, pos));
49  QWidget *w = widget(indexBar);
50  if (!w) {
51  return;
52  }
53 
54  SieveWidgetPageAbstract *page = qobject_cast<SieveWidgetPageAbstract *>(w);
55  if (!page) {
56  return;
57  }
58  if ((page->pageType() == SieveWidgetPageAbstract::BlockElsIf) || page->pageType() == SieveWidgetPageAbstract::BlockElse) {
59  QMenu menu(this);
60  QAction *closeTab = menu.addAction(i18nc("@action:inmenu", "Close Tab"));
61  closeTab->setIcon(QIcon::fromTheme(QStringLiteral("tab-close")));
62 
63  QAction *action = menu.exec(mapToGlobal(pos));
64 
65  if (action == closeTab) {
66  Q_EMIT tabCloseRequested(indexBar);
67  }
68  }
69 }
void setIcon(const QIcon &icon)
QPoint mapToGlobal(const QPoint &pos) const const
CustomContextMenu
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QPoint pos() const const
void setContextMenuPolicy(Qt::ContextMenuPolicy policy)
ElideRight
int tabAt(const QPoint &position) const const
QIcon fromTheme(const QString &name)
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
T qobject_cast(QObject *object)
Q_EMITQ_EMIT
QPoint mapFrom(const QWidget *parent, const QPoint &pos) const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Thu Jul 9 2020 23:07:45 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.