summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-08-04 06:30:37 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-08-04 06:30:37 -0400
commit3d86f150ca3a0992ddaca5055a270b7204c0682a (patch)
tree2b6b61eb33d308828c4ad710a1d98c2d6a7d8f5d
parent61ad96cb54a20ce9f8e5380d67ba4bb26e19cc8e (diff)
moved geometry handling to ProblemsDialog and CategoriesDialog
-rw-r--r--src/categoriesdialog.cpp16
-rw-r--r--src/categoriesdialog.h6
-rw-r--r--src/mainwindow.cpp26
-rw-r--r--src/problemsdialog.cpp15
-rw-r--r--src/problemsdialog.h4
-rw-r--r--src/settings.cpp20
-rw-r--r--src/settings.h6
7 files changed, 74 insertions, 19 deletions
diff --git a/src/categoriesdialog.cpp b/src/categoriesdialog.cpp
index 881179a4..91df5cae 100644
--- a/src/categoriesdialog.cpp
+++ b/src/categoriesdialog.cpp
@@ -21,6 +21,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "ui_categoriesdialog.h"
#include "categories.h"
#include "utility.h"
+#include "settings.h"
#include <QItemDelegate>
#include <QRegExpValidator>
#include <QLineEdit>
@@ -109,6 +110,21 @@ CategoriesDialog::~CategoriesDialog()
delete ui;
}
+int CategoriesDialog::exec()
+{
+ auto& settings = Settings::instance();
+
+ if (auto v=settings.geometry().getCategoriesDialog()) {
+ restoreGeometry(*v);
+ }
+
+ const int r = QDialog::exec();
+
+ settings.geometry().setCategoriesDialog(saveGeometry());
+
+ return r;
+}
+
void CategoriesDialog::cellChanged(int row, int)
{
diff --git a/src/categoriesdialog.h b/src/categoriesdialog.h
index 72d2154d..c743c157 100644
--- a/src/categoriesdialog.h
+++ b/src/categoriesdialog.h
@@ -33,12 +33,16 @@ class CategoriesDialog;
class CategoriesDialog : public MOBase::TutorableDialog
{
Q_OBJECT
-
+
public:
explicit CategoriesDialog(QWidget *parent = 0);
~CategoriesDialog();
+ // also saves and restores geometry
+ //
+ int exec() override;
+
/**
* @brief store changes here to the global categories store (categories.h)
*
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index f41bde17..26398630 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -6164,24 +6164,20 @@ void MainWindow::on_bsaList_itemChanged(QTreeWidgetItem*, int)
void MainWindow::on_actionNotifications_triggered()
{
updateProblemsButton();
- ProblemsDialog problems(m_PluginContainer.plugins<QObject>(), this);
- QSettings &settings = m_OrganizerCore.settings().directInterface();
- QString key = QString("geometry/%1").arg(problems.objectName());
- if (settings.contains(key)) {
- problems.restoreGeometry(settings.value(key).toByteArray());
- }
+ ProblemsDialog problems(m_PluginContainer.plugins<QObject>(), this);
problems.exec();
- settings.setValue(key, problems.saveGeometry());
+
updateProblemsButton();
}
void MainWindow::on_actionChange_Game_triggered()
{
- if (QMessageBox::question(this, tr("Are you sure?"),
- tr("This will restart MO, continue?"),
- QMessageBox::Yes | QMessageBox::Cancel)
- == QMessageBox::Yes) {
+ const auto r = QMessageBox::question(
+ this, tr("Are you sure?"), tr("This will restart MO, continue?"),
+ QMessageBox::Yes | QMessageBox::Cancel);
+
+ if (r == QMessageBox::Yes) {
InstanceManager::instance().clearCurrentInstance();
qApp->exit(INT_MAX);
}
@@ -6206,16 +6202,10 @@ void MainWindow::on_displayCategoriesBtn_toggled(bool checked)
void MainWindow::editCategories()
{
CategoriesDialog dialog(this);
- QSettings &settings = m_OrganizerCore.settings().directInterface();
- QString key = QString("geometry/%1").arg(dialog.objectName());
- if (settings.contains(key)) {
- dialog.restoreGeometry(settings.value(key).toByteArray());
- }
+
if (dialog.exec() == QDialog::Accepted) {
dialog.commitChanges();
}
- settings.setValue(key, dialog.saveGeometry());
-
}
void MainWindow::deselectFilters()
diff --git a/src/problemsdialog.cpp b/src/problemsdialog.cpp
index da09935b..99cc9833 100644
--- a/src/problemsdialog.cpp
+++ b/src/problemsdialog.cpp
@@ -29,6 +29,21 @@ ProblemsDialog::~ProblemsDialog()
delete ui;
}
+int ProblemsDialog::exec()
+{
+ auto& settings = Settings::instance();
+
+ if (auto v=settings.geometry().getProblemsDialog()) {
+ restoreGeometry(*v);
+ }
+
+ const int r = QDialog::exec();
+
+ settings.geometry().setProblemsDialog(saveGeometry());
+
+ return r;
+}
+
void ProblemsDialog::runDiagnosis()
{
m_hasProblems = false;
diff --git a/src/problemsdialog.h b/src/problemsdialog.h
index c211e4f5..a30c8d48 100644
--- a/src/problemsdialog.h
+++ b/src/problemsdialog.h
@@ -20,6 +20,10 @@ public:
explicit ProblemsDialog(std::vector<QObject*> pluginObjects, QWidget *parent = 0);
~ProblemsDialog();
+ // also saves and restores geometry
+ //
+ int exec() override;
+
bool hasProblems() const;
private:
diff --git a/src/settings.cpp b/src/settings.cpp
index c36585b3..da3b42a0 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -937,6 +937,26 @@ void GeometrySettings::setListDialog(const QByteArray& v)
m_Settings.setValue("geometry/ListDialog", v);
}
+std::optional<QByteArray> GeometrySettings::getProblemsDialog() const
+{
+ return getOptional<QByteArray>(m_Settings, "geometry/ProblemsDialog");
+}
+
+void GeometrySettings::setProblemsDialog(const QByteArray& v)
+{
+ m_Settings.setValue("geometry/ProblemsDialog", v);
+}
+
+std::optional<QByteArray> GeometrySettings::getCategoriesDialog() const
+{
+ return getOptional<QByteArray>(m_Settings, "geometry/CategoriesDialog");
+}
+
+void GeometrySettings::setCategoriesDialog(const QByteArray& v)
+{
+ m_Settings.setValue("geometry/CategoriesDialog", 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 989ea1c6..217c8db6 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -64,6 +64,12 @@ public:
std::optional<QByteArray> getListDialog() const;
void setListDialog(const QByteArray& v);
+ std::optional<QByteArray> getProblemsDialog() const;
+ void setProblemsDialog(const QByteArray& v);
+
+ std::optional<QByteArray> getCategoriesDialog() const;
+ void setCategoriesDialog(const QByteArray& v);
+
std::optional<int> getMainWindowMonitor() const;
void setDockSize(const QString& name, int size);