File indexing completed on 2024-05-12 05:13:31
0001 /* 0002 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "themeeditortabwidget.h" 0007 #include "editorpage.h" 0008 0009 #include <KLocalizedString> 0010 #include <QIcon> 0011 #include <QMenu> 0012 0013 #include <QTabBar> 0014 using namespace GrantleeThemeEditor; 0015 0016 ThemeEditorTabWidget::ThemeEditorTabWidget(QWidget *parent) 0017 : QTabWidget(parent) 0018 { 0019 setElideMode(Qt::ElideRight); 0020 tabBar()->setSelectionBehaviorOnRemove(QTabBar::SelectPreviousTab); 0021 setDocumentMode(true); 0022 setContextMenuPolicy(Qt::CustomContextMenu); 0023 connect(this, &ThemeEditorTabWidget::customContextMenuRequested, this, &ThemeEditorTabWidget::slotTabContextMenuRequest); 0024 } 0025 0026 ThemeEditorTabWidget::~ThemeEditorTabWidget() = default; 0027 0028 void ThemeEditorTabWidget::slotMainFileNameChanged(const QString &fileName) 0029 { 0030 QTabBar *bar = tabBar(); 0031 if (count() < 1) { 0032 return; 0033 } 0034 bar->setTabText(0, i18n("Editor (%1)", fileName)); 0035 } 0036 0037 void ThemeEditorTabWidget::slotTabContextMenuRequest(const QPoint &pos) 0038 { 0039 if (count() <= 1) { 0040 return; 0041 } 0042 0043 QTabBar *bar = tabBar(); 0044 const int indexBar = bar->tabAt(bar->mapFrom(this, pos)); 0045 QWidget *w = widget(indexBar); 0046 auto page = qobject_cast<EditorPage *>(w); 0047 if (!page) { 0048 return; 0049 } 0050 0051 if (page->pageType() == EditorPage::ExtraPage) { 0052 QMenu menu(this); 0053 QAction *closeTab = menu.addAction(i18nc("@action:inmenu", "Close Tab")); 0054 closeTab->setIcon(QIcon::fromTheme(QStringLiteral("tab-close"))); 0055 0056 QAction *action = menu.exec(mapToGlobal(pos)); 0057 0058 if (action == closeTab) { 0059 Q_EMIT tabCloseRequested(indexBar); 0060 } 0061 } 0062 } 0063 0064 #include "moc_themeeditortabwidget.cpp"