From 61ad96cb54a20ce9f8e5380d67ba4bb26e19cc8e Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Sat, 3 Aug 2019 03:47:35 -0400 Subject: moved geometry handling to ListDialog --- src/listdialog.cpp | 16 ++++++++++++++++ src/listdialog.h | 4 ++++ src/mainwindow.cpp | 8 -------- src/settings.cpp | 10 ++++++++++ src/settings.h | 3 +++ 5 files changed, 33 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/listdialog.cpp b/src/listdialog.cpp index b9857070..0fdcdb5f 100644 --- a/src/listdialog.cpp +++ b/src/listdialog.cpp @@ -17,6 +17,7 @@ along with Mod Organizer. If not, see . #include "listdialog.h" #include "ui_listdialog.h" +#include "settings.h" ListDialog::ListDialog(QWidget *parent) : QDialog(parent) @@ -32,6 +33,21 @@ ListDialog::~ListDialog() delete ui; } +int ListDialog::exec() +{ + auto& settings = Settings::instance(); + + if (auto v=settings.geometry().getListDialog()) { + restoreGeometry(*v); + } + + const int r = QDialog::exec(); + + settings.geometry().setListDialog(saveGeometry()); + + return r; +} + void ListDialog::setChoices(QStringList choices) { m_Choices = choices; diff --git a/src/listdialog.h b/src/listdialog.h index 7b5a5461..d0594bd7 100644 --- a/src/listdialog.h +++ b/src/listdialog.h @@ -15,6 +15,10 @@ public: explicit ListDialog(QWidget *parent = nullptr); ~ListDialog(); + // also saves and restores geometry + // + int exec() override; + void setChoices(QStringList choices); QString getChoice() const; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index f98da391..f41bde17 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -3898,17 +3898,10 @@ void MainWindow::moveOverwriteContentToExistingMod() } ListDialog dialog(this); - QSettings &settings = m_OrganizerCore.settings().directInterface(); - QString key = QString("geometry/%1").arg(dialog.objectName()); - dialog.setWindowTitle("Select a mod..."); dialog.setChoices(mods); - if (settings.contains(key)) { - dialog.restoreGeometry(settings.value(key).toByteArray()); - } if (dialog.exec() == QDialog::Accepted) { - QString result = dialog.getChoice(); if (!result.isEmpty()) { @@ -3930,7 +3923,6 @@ void MainWindow::moveOverwriteContentToExistingMod() doMoveOverwriteContentToMod(modAbsolutePath); } } - settings.setValue(key, dialog.saveGeometry()); } void MainWindow::doMoveOverwriteContentToMod(const QString &modAbsolutePath) diff --git a/src/settings.cpp b/src/settings.cpp index f980e0be..c36585b3 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -927,6 +927,16 @@ void GeometrySettings::setModInfoTabOrder(const QString& names) m_Settings.setValue("mod_info_tab_order", names); } +std::optional GeometrySettings::getListDialog() const +{ + return getOptional(m_Settings, "geometry/ListDialog"); +} + +void GeometrySettings::setListDialog(const QByteArray& v) +{ + m_Settings.setValue("geometry/ListDialog", v); +} + std::optional GeometrySettings::getMainWindowMonitor() const { return getOptional(m_Settings, "window_monitor"); diff --git a/src/settings.h b/src/settings.h index fff684b8..989ea1c6 100644 --- a/src/settings.h +++ b/src/settings.h @@ -61,6 +61,9 @@ public: QStringList getModInfoTabOrder() const; void setModInfoTabOrder(const QString& names); + std::optional getListDialog() const; + void setListDialog(const QByteArray& v); + std::optional getMainWindowMonitor() const; void setDockSize(const QString& name, int size); -- cgit v1.3.1