From ff6a9ebfae41f38010f8304273c87b9693e054f9 Mon Sep 17 00:00:00 2001 From: Tech-Tac Date: Thu, 23 Jul 2026 16:49:10 +0300 Subject: [PATCH] feat: add an option to show/hide navigator view --- app/mainwindow.cpp | 15 ++++++++++----- app/settings.cpp | 11 +++++++++++ app/settings.h | 2 ++ app/settingsdialog.cpp | 5 +++++ app/settingsdialog.ui | 23 +++++++++++++++-------- 5 files changed, 43 insertions(+), 13 deletions(-) diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp index 8f5fc0c..01782f7 100644 --- a/app/mainwindow.cpp +++ b/app/mainwindow.cpp @@ -78,11 +78,16 @@ MainWindow::MainWindow(QWidget *parent) // Binding graphics and navigator views signals connect(ui->m_gv, &GraphicsView::navigatorViewRequired, this, [this](bool required, const QTransform & tf){ - ui->m_nav->setTransform(GraphicsView::resetScale(tf)); - ui->m_nav->fitInView(ui->m_nav->sceneRect(), Qt::KeepAspectRatio); - ui->m_nav->setVisible(required); - ui->m_navPH->setVisible(required); - ui->m_nav->updateMainViewportRegion(); + if (Settings::instance()->showNavigatorView()){ + ui->m_nav->setTransform(GraphicsView::resetScale(tf)); + ui->m_nav->fitInView(ui->m_nav->sceneRect(), Qt::KeepAspectRatio); + ui->m_nav->setVisible(required); + ui->m_navPH->setVisible(required); + ui->m_nav->updateMainViewportRegion(); + } else { + ui->m_nav->setVisible(false); + ui->m_navPH->setVisible(false); + } }); connect(ui->m_gv, &GraphicsView::viewportRectChanged, ui->m_nav, &NavigatorView::updateMainViewportRegion); diff --git a/app/settings.cpp b/app/settings.cpp index ff413d9..1770f74 100644 --- a/app/settings.cpp +++ b/app/settings.cpp @@ -42,6 +42,11 @@ namespace QEnumHelper } } +bool Settings::showNavigatorView() const +{ + return m_qsettings->value("show_navigator_view", true).toBool(); +} + bool Settings::useLightCheckerboard() const { return m_qsettings->value("use_light_checkerboard", false).toBool(); @@ -83,6 +88,12 @@ Qt::HighDpiScaleFactorRoundingPolicy Settings::hiDpiScaleFactorBehavior() const return QEnumHelper::fromString(result, Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); } +void Settings::setShowNavigatorView(bool on) +{ + m_qsettings->setValue("show_navigator_view", on); + m_qsettings->sync(); +} + void Settings::setUseLightCheckerboard(bool light) { m_qsettings->setValue("use_light_checkerboard", light); diff --git a/app/settings.h b/app/settings.h index 83762a3..03b09fe 100644 --- a/app/settings.h +++ b/app/settings.h @@ -25,6 +25,7 @@ public: static Settings *instance(); + bool showNavigatorView() const; bool useLightCheckerboard() const; bool loopGallery() const; bool svgTiny12Only() const; @@ -32,6 +33,7 @@ public: WindowSizeBehavior initWindowSizeBehavior() const; Qt::HighDpiScaleFactorRoundingPolicy hiDpiScaleFactorBehavior() const; + void setShowNavigatorView(bool on); void setUseLightCheckerboard(bool light); void setLoopGallery(bool on); void setSvgTiny12Only(bool on); diff --git a/app/settingsdialog.cpp b/app/settingsdialog.cpp index b365eb8..f0e8267 100644 --- a/app/settingsdialog.cpp +++ b/app/settingsdialog.cpp @@ -79,6 +79,7 @@ SettingsDialog::SettingsDialog(QWidget *parent) setWindowFlag(Qt::WindowContextHelpButtonHint, false); auto* settings = Settings::instance(); + ui->m_showNavigatorView->setChecked(Settings::instance()->showNavigatorView()); ui->m_useLightCheckerboard->setChecked(settings->useLightCheckerboard()); ui->m_loopGallery->setChecked(settings->loopGallery()); ui->m_svgTiny12Only->setChecked(settings->svgTiny12Only()); @@ -100,6 +101,10 @@ SettingsDialog::SettingsDialog(QWidget *parent) # define QT_CHECKSTATE int #endif // QT_VERSION >= QT_VERSION_CHECK(6, 7, 0) + connect(ui->m_showNavigatorView, &QCHECKBOX_CHECKSTATECHANGED, this, [ = ](QT_CHECKSTATE state){ + Settings::instance()->setShowNavigatorView(state == Qt::Checked); + }); + connect(ui->m_useLightCheckerboard, &QCHECKBOX_CHECKSTATECHANGED, this, [ = ](QT_CHECKSTATE state){ Settings::instance()->setUseLightCheckerboard(state == Qt::Checked); }); diff --git a/app/settingsdialog.ui b/app/settingsdialog.ui index d8cf722..355b899 100644 --- a/app/settingsdialog.ui +++ b/app/settingsdialog.ui @@ -20,54 +20,61 @@ + + + Show navigation view + + + + Use light-color checkerboard - + Loop the loaded gallery - + Limit SVG support to SVG Tiny 1.2 - + Mouse wheel behavior - + - + Default window size - + - + HiDPI scale factor rounding policy - +