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