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"