Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Common/LtsWidgets/lts_tab_bar.cpp
T
torstenandCopilot d6b6ffce7c Apply clang-format to Lts/Common and DTC/enum headers
- Formatted all CodeGen module files (9 files)
- Formatted LtsAppDescriptor module files
- Formatted LtsAppManager/AppChooser files
- Applied clang-format to all DTC and enum headers across modules
- Removed coordTransTests from CommonUnitTestsPlaceholder (moved to tests/)

Cosmetic changes only, no functional modifications.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-19 14:46:29 +02:00

115 lines
2.9 KiB
C++

#include "lts_tab_bar.h"
#include "lts_dialog.h"
#include "lts_dialog_helper.h"
#include "lts_events.h"
#include "lts_tab_widget.h"
#include <QCoreApplication>
#include <QMenu>
#include <TabBarTabStyle/tab_bar_tab_style.h>
namespace LtsWidgets
{
LtsTabBar::LtsTabBar(bool isSecondary, QWidget* parent) : QTabBar(parent), m_secondary(isSecondary)
{
setDocumentMode(true);
setTabsClosable(true);
connect(this, &LtsTabBar::currentChanged, this, &LtsTabBar::updateCloseButtonColors);
if (m_secondary)
{
connect(this, &LtsTabBar::customContextMenuRequested, this, &LtsTabBar::onCustomContextMenuRequested);
setContextMenuPolicy(Qt::CustomContextMenu);
}
}
void LtsTabBar::_internal_closeTab()
{
QObject* object = sender();
int tabToClose = -1;
for (int i = 0; i < count(); i++)
{
if (tabButton(i, QTabBar::RightSide) == object)
{
tabToClose = i;
break;
}
}
if (tabToClose != -1)
emit tabCloseRequested(tabToClose);
}
void LtsTabBar::updateCloseButtonColors(int newIndex)
{
if (newIndex == -1)
newIndex = currentIndex();
for (int i = 0; i < count(); i++)
{
QWidget* w = tabButton(i, QTabBar::RightSide);
CloseButton* cb = qobject_cast<CloseButton*>(w);
if (!cb)
continue;
QColor text;
bool enabled = isTabEnabled(i);
bool selected = (i == newIndex);
bool secondary = m_secondary;
if (enabled)
{
if (selected)
text =
(secondary) ? Styles::TabBarTabStyle::secondarySelected : Styles::TabBarTabStyle::primarySelected;
else
text = (secondary) ? Styles::TabBarTabStyle::secondaryNormal : Styles::TabBarTabStyle::primaryNormal;
}
else
text = (secondary) ? Styles::TabBarTabStyle::secondaryDisabled : Styles::TabBarTabStyle::primaryDisabled;
cb->setFontColor(text);
}
}
void LtsTabBar::onCustomContextMenuRequested(const QPoint pos)
{
if (!m_secondary)
return;
QMenu m;
QAction* a = new QAction(tr("Save as image"));
connect(a, &QAction::triggered, this, [this, pos]() { LtsTabBar::onSaveCurrentWidgetAsImage(pos); });
m.addAction(a);
m.exec(mapToGlobal(pos));
}
void LtsTabBar::onSaveCurrentWidgetAsImage(const QPoint pos)
{
int curTab = tabAt(pos);
if (curTab < 0)
curTab = currentIndex();
if (curTab < 0)
return;
LtsTabWidget* tw = qobject_cast<LtsTabWidget*>(parentWidget());
QWidget* w = tw ? tw->widget(curTab) : nullptr;
if (!w)
return;
LtsDialogHelper* helper = qobject_cast<LtsDialogHelper*>(w);
if (helper)
w = helper->getDialog();
SaveImageEvent* ev = new SaveImageEvent(w, w->grab());
ev->setAccepted(false);
QCoreApplication::postEvent(qApp, ev);
}
} // namespace LtsWidgets