feat: add an option to show/hide navigator view

This commit is contained in:
Tech-Tac
2026-08-24 10:05:02 +08:00
committed by yyc12345
parent e01718928c
commit ff6a9ebfae
5 changed files with 43 additions and 13 deletions
+5
View File
@@ -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){
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);
+11
View File
@@ -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<Qt::HighDpiScaleFactorRoundingPolicy>(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);
+2
View File
@@ -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);
+5
View File
@@ -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);
});
+15 -8
View File
@@ -20,54 +20,61 @@
</attribute>
<layout class="QFormLayout" name="settingsForm">
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="m_showNavigatorView">
<property name="text">
<string>Show navigation view</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="m_useLightCheckerboard">
<property name="text">
<string>Use light-color checkerboard</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="m_loopGallery">
<property name="text">
<string>Loop the loaded gallery</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<item row="3" column="0" colspan="2">
<widget class="QCheckBox" name="m_svgTiny12Only">
<property name="text">
<string>Limit SVG support to SVG Tiny 1.2</string>
</property>
</widget>
</item>
<item row="3" column="0">
<item row="4" column="0">
<widget class="QLabel" name="m_mouseWheelBehaviorLabel">
<property name="text">
<string>Mouse wheel behavior</string>
</property>
</widget>
</item>
<item row="3" column="1">
<item row="4" column="1">
<widget class="QComboBox" name="m_mouseWheelBehavior"/>
</item>
<item row="4" column="0">
<item row="5" column="0">
<widget class="QLabel" name="m_initWindowSizeBehaviorLabel">
<property name="text">
<string>Default window size</string>
</property>
</widget>
</item>
<item row="4" column="1">
<item row="5" column="1">
<widget class="QComboBox" name="m_initWindowSizeBehavior"/>
</item>
<item row="5" column="0">
<item row="6" column="0">
<widget class="QLabel" name="m_hiDpiRoundingPolicyBehaviorLabel">
<property name="text">
<string>HiDPI scale factor rounding policy</string>
</property>
</widget>
</item>
<item row="5" column="1">
<item row="6" column="1">
<widget class="QComboBox" name="m_hiDpiRoundingPolicyBehavior"/>
</item>
</layout>