git repos / SagoImageBrowser

commit 7370f1c0

Poul Sander · 2026-03-01 15:15
7370f1c0ad25d5bcf987e092bc3c190e73053c6d patch · browse files
parent 7889168c675ba4beabd2e3bdf0477727bf6175c8

Allow resetting the layout

Changed files

M src/mainwindow.cpp before
M src/mainwindow.h before
M src/preferencesdialog.cpp before
M src/preferencesdialog.h before
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c6fe438..e5f1520 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp
@@ -416,6 +416,11 @@ void MainWindow::onPreferencesTriggered()
dialog.setBackgroundColor(m_backgroundColorPreference);
dialog.setLockDocking(m_lockDockingPreference);
+ bool shouldResetLayout = false;
+ connect(&dialog, &PreferencesDialog::resetLayoutRequested, this, [&shouldResetLayout]() {
+ shouldResetLayout = true;
+ });
+
if (dialog.exec() == QDialog::Accepted)
{
m_backgroundColorPreference = dialog.getBackgroundColor();
@@ -424,4 +429,39 @@ void MainWindow::onPreferencesTriggered()
applyDockLocking(m_lockDockingPreference);
savePreferences();
}
+
+ // Apply layout reset immediately after dialog closes if requested
+ if (shouldResetLayout) {
+ resetLayoutToDefault();
+ }
+}
+
+void MainWindow::resetLayoutToDefault()
+{
+ QSettings settings("SagoImageBrowser", "SagoImageBrowser");
+ settings.remove("windowGeometry");
+ settings.remove("windowState");
+
+ // Hide and detach docks completely
+ m_folderDock->hide();
+ m_previewDock->hide();
+
+ m_folderDock->setFloating(false);
+ m_previewDock->setFloating(false);
+
+ removeDockWidget(m_folderDock);
+ removeDockWidget(m_previewDock);
+
+ // Re-add in default positions
+ addDockWidget(Qt::LeftDockWidgetArea, m_folderDock);
+ addDockWidget(Qt::RightDockWidgetArea, m_previewDock);
+
+ // Show both docks
+ m_folderDock->show();
+ m_previewDock->show();
+
+ // Reset window to normal state
+ /*if (isMaximized() || isFullScreen()) {
+ showNormal();
+ }*/
}
diff --git a/src/mainwindow.h b/src/mainwindow.h index 8d35d3b..0dbbcf0 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h
@@ -28,6 +28,7 @@ private:
void loadPreferences();
void savePreferences();
void onPreferencesTriggered();
+ void resetLayoutToDefault();
void navigateToFolder(const QString &path);
void selectPreviousFolderIfExists();
void setFullScreenMode(bool fullScreen);
diff --git a/src/preferencesdialog.cpp b/src/preferencesdialog.cpp index 443ede9..fc244ac 100644 --- a/src/preferencesdialog.cpp +++ b/src/preferencesdialog.cpp
@@ -7,6 +7,7 @@
#include <QCheckBox>
#include <QPushButton>
#include <QGroupBox>
+#include <QMessageBox>
PreferencesDialog::PreferencesDialog(QWidget *parent)
: QDialog(parent)
@@ -38,6 +39,15 @@ PreferencesDialog::PreferencesDialog(QWidget *parent)
QVBoxLayout *layoutGroupLayout = new QVBoxLayout(layoutGroup);
m_lockDockingCheck = new QCheckBox("Lock docking (prevent accidental moves)");
layoutGroupLayout->addWidget(m_lockDockingCheck);
+
+ QPushButton *resetLayoutButton = new QPushButton("Reset Layout to Default");
+ connect(resetLayoutButton, &QPushButton::clicked, this, [this]() {
+ QMessageBox::information(this, "Layout Reset", "The window layout will be reset to default.");
+ emit resetLayoutRequested();
+ accept(); // Close the dialog
+ });
+ layoutGroupLayout->addWidget(resetLayoutButton);
+
mainLayout->addWidget(layoutGroup);
mainLayout->addStretch();
diff --git a/src/preferencesdialog.h b/src/preferencesdialog.h index c6bda81..66ff12b 100644 --- a/src/preferencesdialog.h +++ b/src/preferencesdialog.h
@@ -18,6 +18,9 @@ public:
bool getLockDocking() const;
void setLockDocking(bool lock);
+signals:
+ void resetLayoutRequested();
+
private:
QComboBox *m_backgroundColorCombo;
QCheckBox *m_lockDockingCheck;