Add icons only sidebar mode

This commit is contained in:
Christian Kr 2024-09-15 17:09:35 +02:00 committed by Jonas Kvinge
parent d87560b73e
commit 167e0d73d1
4 changed files with 25 additions and 7 deletions

View File

@ -1757,6 +1757,9 @@ msgstr ""
msgid "Large sidebar"
msgstr ""
msgid "Icons sidebar"
msgstr ""
msgid "Small sidebar"
msgstr ""

View File

@ -112,6 +112,9 @@ QSize FancyTabBar::tabSizeHint(const int index) const {
QRect rect = fm.boundingRect(QRect(0, 0, w, height()), Qt::TextWordWrap, TabText(index));
size = QSize(w, tabWidget->iconsize_largesidebar() + rect.height() + 10);
}
else if (tabWidget->mode() == FancyTabWidget::Mode::IconsSidebar) {
size = QSize(tabWidget->iconsize_largesidebar() + 20, tabWidget->iconsize_largesidebar() + 20);
}
else if (tabWidget->mode() == FancyTabWidget::Mode::SmallSidebar) {
QFont bold_font(font());
@ -156,7 +159,9 @@ void FancyTabBar::paintEvent(QPaintEvent *pe) {
FancyTabWidget *tabWidget = qobject_cast<FancyTabWidget*>(parentWidget());
if (tabWidget->mode() != FancyTabWidget::Mode::LargeSidebar && tabWidget->mode() != FancyTabWidget::Mode::SmallSidebar) {
if (tabWidget->mode() != FancyTabWidget::Mode::LargeSidebar &&
tabWidget->mode() != FancyTabWidget::Mode::SmallSidebar &&
tabWidget->mode() != FancyTabWidget::Mode::IconsSidebar) {
QTabBar::paintEvent(pe);
return;
}
@ -273,7 +278,13 @@ void FancyTabBar::paintEvent(QPaintEvent *pe) {
tabrectIcon.setSize(QSize(tabWidget->iconsize_largesidebar(), tabWidget->iconsize_largesidebar()));
// Center the icon
const int moveRight = (QTabBar::width() - tabWidget->iconsize_largesidebar() - 1) / 2;
tabrectIcon.translate(moveRight, 5);
if (tabWidget->mode() == FancyTabWidget::Mode::IconsSidebar) {
tabrectIcon.translate(moveRight, (tabSizeHint(0).height() - tabWidget->iconsize_largesidebar() - 5) / 2);
}
else {
tabrectIcon.translate(moveRight, 5);
}
}
tabIcon(index).paint(&p, tabrectIcon, iconFlags);
p.restore();

View File

@ -199,7 +199,7 @@ void FancyTabWidget::SetMode(const Mode mode) {
}
#ifndef Q_OS_MACOS
if (mode_ == Mode::LargeSidebar) {
if (mode_ == Mode::LargeSidebar || mode_ == Mode::IconsSidebar) {
setIconSize(QSize(iconsize_largesidebar_, iconsize_largesidebar_));
}
else {
@ -207,13 +207,15 @@ void FancyTabWidget::SetMode(const Mode mode) {
}
#endif
if (previous_mode == Mode::IconOnlyTabs && mode != Mode::IconOnlyTabs) {
if ((previous_mode == Mode::IconOnlyTabs || previous_mode == Mode::IconsSidebar) &&
(mode != Mode::IconOnlyTabs && mode != Mode::IconsSidebar)) {
for (int i = 0; i < count(); ++i) {
tabBar()->setTabText(i, tabBar()->tabData(i).value<FancyTabData*>()->label());
tabBar()->setTabToolTip(i, ""_L1);
}
}
else if (previous_mode != Mode::IconOnlyTabs && mode == Mode::IconOnlyTabs) {
else if ((previous_mode != Mode::IconOnlyTabs && previous_mode != Mode::IconsSidebar) &&
(mode == Mode::IconOnlyTabs || mode == Mode::IconsSidebar)) {
for (int i = 0; i < count(); ++i) {
tabBar()->setTabText(i, ""_L1);
tabBar()->setTabToolTip(i, tabBar()->tabData(i).value<FancyTabData*>()->label());
@ -286,7 +288,7 @@ int FancyTabWidget::IndexOfTab(QWidget *widget) {
void FancyTabWidget::paintEvent(QPaintEvent *pe) {
if (mode() != Mode::LargeSidebar && mode() != Mode::SmallSidebar) {
if (mode() != Mode::LargeSidebar && mode() != Mode::SmallSidebar && mode() != Mode::IconsSidebar) {
QTabWidget::paintEvent(pe);
return;
}
@ -383,6 +385,7 @@ void FancyTabWidget::contextMenuEvent(QContextMenuEvent *e) {
menu_ = new QMenu(this);
QActionGroup *group = new QActionGroup(this);
addMenuItem(group, tr("Large sidebar"), Mode::LargeSidebar);
addMenuItem(group, tr("Icons sidebar"), Mode::IconsSidebar);
addMenuItem(group, tr("Small sidebar"), Mode::SmallSidebar);
addMenuItem(group, tr("Plain sidebar"), Mode::PlainSidebar);
addMenuItem(group, tr("Tabs on top"), Mode::Tabs);

View File

@ -48,7 +48,8 @@ class FancyTabWidget : public QTabWidget {
SmallSidebar,
Tabs,
IconOnlyTabs,
PlainSidebar
PlainSidebar,
IconsSidebar,
};
Mode mode() const { return mode_; }