summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-27 12:01:38 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-07-02 10:10:19 -0400
commit6547197e5f685439371446b499427848ed687871 (patch)
tree37252c30bee360222c880979d7b8437e64135196
parente1990df0a2f25b4ac9227655fd5d597cf8ab6cf4 (diff)
remember state of various widgets
remove obsolete settings
-rw-r--r--src/modinfodialog.cpp12
-rw-r--r--src/modinfodialogesps.cpp11
-rw-r--r--src/modinfodialogesps.h2
-rw-r--r--src/modinfodialogimages.cpp4
-rw-r--r--src/modinfodialogtab.h23
-rw-r--r--src/modinfodialogtextfiles.cpp19
-rw-r--r--src/modinfodialogtextfiles.h3
7 files changed, 66 insertions, 8 deletions
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index ca20b318..bcb979d2 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -427,10 +427,14 @@ void ModInfoDialog::saveState(Settings& s) const
s.directInterface().setValue("mod_info_tab_order", tabState);
}
- // remove old settings
- if (s.directInterface().contains("mod_info_tabs")) {
- s.directInterface().remove("mod_info_tabs");
- }
+ // remove 2.2.0 settings
+ s.directInterface().remove("mod_info_tabs");
+ s.directInterface().remove("mod_info_conflict_expanders");
+ s.directInterface().remove("mod_info_conflicts");
+ s.directInterface().remove("mod_info_advanced_conflicts");
+ s.directInterface().remove("mod_info_conflicts_overwrite");
+ s.directInterface().remove("mod_info_conflicts_noconflict");
+ s.directInterface().remove("mod_info_conflicts_overwritten");
for (const auto& tabInfo : m_tabs) {
tabInfo.tab->saveState(s);
diff --git a/src/modinfodialogesps.cpp b/src/modinfodialogesps.cpp
index 7961096d..d00eccf3 100644
--- a/src/modinfodialogesps.cpp
+++ b/src/modinfodialogesps.cpp
@@ -1,6 +1,7 @@
#include "modinfodialogesps.h"
#include "ui_modinfodialog.h"
#include "modinfodialog.h"
+#include "settings.h"
#include <report.h>
using MOBase::reportError;
@@ -275,6 +276,16 @@ void ESPsTab::update()
setHasData(m_inactiveModel->rowCount() > 0 || m_activeModel->rowCount() > 0);
}
+void ESPsTab::saveState(Settings& s)
+{
+ saveWidgetState(s.directInterface(), ui->ESPsSplitter);
+}
+
+void ESPsTab::restoreState(const Settings& s)
+{
+ restoreWidgetState(s.directInterface(), ui->ESPsSplitter);
+}
+
void ESPsTab::onActivate()
{
const auto index = ui->inactiveESPList->currentIndex();
diff --git a/src/modinfodialogesps.h b/src/modinfodialogesps.h
index c972074a..217863c6 100644
--- a/src/modinfodialogesps.h
+++ b/src/modinfodialogesps.h
@@ -18,6 +18,8 @@ public:
void clear() override;
bool feedFile(const QString& rootPath, const QString& fullPath) override;
void update();
+ void saveState(Settings& s) override;
+ void restoreState(const Settings& s) override;
private:
ESPListModel* m_inactiveModel;
diff --git a/src/modinfodialogimages.cpp b/src/modinfodialogimages.cpp
index 02fc7c20..307fa8e8 100644
--- a/src/modinfodialogimages.cpp
+++ b/src/modinfodialogimages.cpp
@@ -133,12 +133,16 @@ void ImagesTab::saveState(Settings& s)
{
s.directInterface().setValue(
"mod_info_dialog_images_show_dds", m_ddsEnabled);
+
+ saveWidgetState(s.directInterface(), ui->tabImagesSplitter);
}
void ImagesTab::restoreState(const Settings& s)
{
ui->imagesShowDDS->setChecked(s.directInterface()
.value("mod_info_dialog_images_show_dds", false).toBool());
+
+ restoreWidgetState(s.directInterface(), ui->tabImagesSplitter);
}
void ImagesTab::checkFiltering()
diff --git a/src/modinfodialogtab.h b/src/modinfodialogtab.h
index 058035ab..ce29c868 100644
--- a/src/modinfodialogtab.h
+++ b/src/modinfodialogtab.h
@@ -67,6 +67,23 @@ protected:
void emitModOpen(QString name);
void setHasData(bool b);
+ // this needs to be a template because saveState() and restoreState() are
+ // not in QWidget, but they're in various widgets
+ //
+ template <class Widget>
+ void saveWidgetState(QSettings& s, Widget* w)
+ {
+ s.setValue(settingName(w), w->saveState());
+ }
+
+ template <class Widget>
+ void restoreWidgetState(const QSettings& s, Widget* w)
+ {
+ if (s.contains(settingName(w))) {
+ w->restoreState(s.value(settingName(w)).toByteArray());
+ }
+ }
+
private:
OrganizerCore& m_core;
PluginContainer& m_plugin;
@@ -76,6 +93,12 @@ private:
int m_tabID;
bool m_hasData;
bool m_firstActivation;
+
+
+ QString settingName(QWidget* w)
+ {
+ return "geometry/modinfodialog_" + w->objectName();
+ }
};
diff --git a/src/modinfodialogtextfiles.cpp b/src/modinfodialogtextfiles.cpp
index 5b035c53..52891bf5 100644
--- a/src/modinfodialogtextfiles.cpp
+++ b/src/modinfodialogtextfiles.cpp
@@ -1,6 +1,7 @@
#include "modinfodialogtextfiles.h"
#include "ui_modinfodialog.h"
#include "modinfodialog.h"
+#include "settings.h"
#include <QMessageBox>
class FileListModel : public QAbstractItemModel
@@ -102,14 +103,14 @@ GenericFilesTab::GenericFilesTab(
QWidget* parent, Ui::ModInfoDialog* ui, int id,
QListView* list, QSplitter* sp, TextEditor* e, QLineEdit* filter) :
ModInfoDialogTab(oc, plugin, parent, ui, id),
- m_list(list), m_editor(e), m_model(new FileListModel)
+ m_list(list), m_editor(e), m_splitter(sp), m_model(new FileListModel)
{
m_list->setModel(m_model);
m_editor->setupToolbar();
- sp->setSizes({200, 1});
- sp->setStretchFactor(0, 0);
- sp->setStretchFactor(1, 1);
+ m_splitter->setSizes({200, 1});
+ m_splitter->setStretchFactor(0, 0);
+ m_splitter->setStretchFactor(1, 1);
m_filter.setEdit(filter);
m_filter.setList(m_list);
@@ -171,6 +172,16 @@ void GenericFilesTab::update()
setHasData(m_model->rowCount() > 0);
}
+void GenericFilesTab::saveState(Settings& s)
+{
+ saveWidgetState(s.directInterface(), m_splitter);
+}
+
+void GenericFilesTab::restoreState(const Settings& s)
+{
+ restoreWidgetState(s.directInterface(), m_splitter);
+}
+
void GenericFilesTab::onSelection(
const QModelIndex& current, const QModelIndex& previous)
{
diff --git a/src/modinfodialogtextfiles.h b/src/modinfodialogtextfiles.h
index 037c6bb3..ffe49904 100644
--- a/src/modinfodialogtextfiles.h
+++ b/src/modinfodialogtextfiles.h
@@ -19,10 +19,13 @@ public:
bool canClose() override;
bool feedFile(const QString& rootPath, const QString& fullPath) override;
void update() override;
+ void saveState(Settings& s) override;
+ void restoreState(const Settings& s) override;
protected:
QListView* m_list;
TextEditor* m_editor;
+ QSplitter* m_splitter;
FileListModel* m_model;
FilterWidget m_filter;