summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/listdialog.cpp16
-rw-r--r--src/listdialog.h4
-rw-r--r--src/mainwindow.cpp8
-rw-r--r--src/settings.cpp10
-rw-r--r--src/settings.h3
5 files changed, 33 insertions, 8 deletions
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 <http://www.gnu.org/licenses/>.
#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<QByteArray> GeometrySettings::getListDialog() const
+{
+ return getOptional<QByteArray>(m_Settings, "geometry/ListDialog");
+}
+
+void GeometrySettings::setListDialog(const QByteArray& v)
+{
+ m_Settings.setValue("geometry/ListDialog", v);
+}
+
std::optional<int> GeometrySettings::getMainWindowMonitor() const
{
return getOptional<int>(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<QByteArray> getListDialog() const;
+ void setListDialog(const QByteArray& v);
+
std::optional<int> getMainWindowMonitor() const;
void setDockSize(const QString& name, int size);