feat: add option to provide a titlebar (default on)

This commit is contained in:
2026-06-29 19:17:23 +08:00
parent 6da53ced81
commit bbe5e485f4
11 changed files with 324 additions and 21 deletions

View File

@@ -7,6 +7,7 @@
#include "settings.h"
#include "toolbutton.h"
#include "bottombuttongroup.h"
#include "titlebar.h"
#include "graphicsview.h"
#include "navigatorview.h"
#include "graphicsscene.h"
@@ -101,20 +102,20 @@ MainWindow::MainWindow(QWidget *parent)
connect(m_graphicsView, &GraphicsView::viewportRectChanged,
m_gv, &NavigatorView::updateMainViewportRegion);
m_closeButton = new ToolButton(true, m_graphicsView);
m_closeButton->setIconSize(QSize(32, 32));
m_closeButton->setFixedSize(QSize(50, 50));
m_closeButton->setIconResourcePath(":/icons/window-close.svg");
m_titleBar = new TitleBar(this);
m_titleBar->setCloseButtonOnly(!Settings::instance()->showTitleBar());
connect(m_closeButton, &QAbstractButton::clicked,
connect(m_titleBar, &TitleBar::closeRequested,
this, &MainWindow::closeWindow);
connect(m_titleBar, &TitleBar::maximizeToggleRequested,
this, &MainWindow::toggleMaximize);
m_prevButton = new ToolButton(false, m_graphicsView);
m_prevButton = new ToolButton(m_graphicsView);
m_prevButton->setIconSize(QSize(75, 75));
m_prevButton->setIconResourcePath(":/icons/go-previous.svg");
m_prevButton->setVisible(false);
m_prevButton->setOpacity(0, false);
m_nextButton = new ToolButton(false, m_graphicsView);
m_nextButton = new ToolButton(m_graphicsView);
m_nextButton->setIconSize(QSize(75, 75));
m_nextButton->setIconResourcePath(":/icons/go-next.svg");
m_nextButton->setVisible(false);
@@ -138,7 +139,7 @@ MainWindow::MainWindow(QWidget *parent)
m_bottomButtonGroup->setOpacity(0, false);
m_gv->setOpacity(0, false);
m_closeButton->setOpacity(0, false);
m_titleBar->setOpacity(0, false);
connect(m_pm, &PlaylistManager::totalCountChanged, this, &MainWindow::updateGalleryButtonsVisibility);
@@ -161,7 +162,7 @@ MainWindow::MainWindow(QWidget *parent)
});
// allow some mouse events can go through these widgets for resizing window.
installResizeCapture(m_closeButton);
installResizeCapture(m_titleBar);
installResizeCapture(m_graphicsView);
installResizeCapture(m_graphicsView->viewport());
installResizeCapture(m_gv);
@@ -323,7 +324,7 @@ void MainWindow::enterEvent(QEnterEvent *event)
m_bottomButtonGroup->setOpacity(1);
m_gv->setOpacity(1);
m_closeButton->setOpacity(1);
m_titleBar->setOpacity(1);
m_prevButton->setOpacity(1);
m_nextButton->setOpacity(1);
@@ -335,7 +336,7 @@ void MainWindow::leaveEvent(QEvent *event)
m_bottomButtonGroup->setOpacity(0);
m_gv->setOpacity(0);
m_closeButton->setOpacity(0);
m_titleBar->setOpacity(0);
m_prevButton->setOpacity(0);
m_nextButton->setOpacity(0);
@@ -612,7 +613,12 @@ void MainWindow::closeWindow()
void MainWindow::updateWidgetsPosition()
{
m_closeButton->move(width() - m_closeButton->width(), 0);
if (m_titleBar->closeButtonOnly()) {
const int bw = m_titleBar->closeButtonWidth();
m_titleBar->setGeometry(width() - bw, 0, bw, m_titleBar->height());
} else {
m_titleBar->setGeometry(0, 0, width(), m_titleBar->height());
}
m_prevButton->move(25, (height() - m_prevButton->sizeHint().height()) / 2);
m_nextButton->move(width() - m_nextButton->sizeHint().width() - 25,
(height() - m_prevButton->sizeHint().height()) / 2);
@@ -624,7 +630,7 @@ void MainWindow::updateWidgetsPosition()
void MainWindow::toggleProtectedMode()
{
m_protectedMode = !m_protectedMode;
m_closeButton->setVisible(!m_protectedMode);
m_titleBar->setCloseButtonVisible(!m_protectedMode);
updateGalleryButtonsVisibility();
}