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 #include #include +#include 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;