summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/categoriesdialog.cpp13
-rw-r--r--src/editexecutablesdialog.cpp13
-rw-r--r--src/listdialog.cpp13
-rw-r--r--src/mainwindow.cpp49
-rw-r--r--src/mainwindow.h4
-rw-r--r--src/modinfodialog.cpp6
-rw-r--r--src/overwriteinfodialog.cpp11
-rw-r--r--src/previewdialog.cpp13
-rw-r--r--src/problemsdialog.cpp13
-rw-r--r--src/profilesdialog.cpp13
-rw-r--r--src/settings.cpp218
-rw-r--r--src/settings.h64
12 files changed, 158 insertions, 272 deletions
diff --git a/src/categoriesdialog.cpp b/src/categoriesdialog.cpp
index 91df5cae..b5194bf0 100644
--- a/src/categoriesdialog.cpp
+++ b/src/categoriesdialog.cpp
@@ -112,17 +112,8 @@ CategoriesDialog::~CategoriesDialog()
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;
+ GeometrySaver gs(Settings::instance(), this);
+ return QDialog::exec();
}
diff --git a/src/editexecutablesdialog.cpp b/src/editexecutablesdialog.cpp
index 9c5ae44a..7823fadc 100644
--- a/src/editexecutablesdialog.cpp
+++ b/src/editexecutablesdialog.cpp
@@ -67,17 +67,8 @@ EditExecutablesDialog::~EditExecutablesDialog() = default;
int EditExecutablesDialog::exec()
{
- auto& settings = m_organizerCore.settings();
-
- if (auto v=settings.geometry().getExecutablesDialog()) {
- restoreGeometry(*v);
- }
-
- const int r = QDialog::exec();
-
- settings.geometry().setExecutablesDialog(saveGeometry());
-
- return r;
+ GeometrySaver gs(Settings::instance(), this);
+ return QDialog::exec();
}
void EditExecutablesDialog::loadCustomOverwrites()
diff --git a/src/listdialog.cpp b/src/listdialog.cpp
index 0fdcdb5f..2ad88408 100644
--- a/src/listdialog.cpp
+++ b/src/listdialog.cpp
@@ -35,17 +35,8 @@ ListDialog::~ListDialog()
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;
+ GeometrySaver gs(Settings::instance(), this);
+ return QDialog::exec();
}
void ListDialog::setChoices(QStringList choices)
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 532914a5..85be8563 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -290,7 +290,6 @@ MainWindow::MainWindow(Settings &settings
, m_linksSeparator(nullptr)
, m_Tutorial(this, "MainWindow")
, m_OldProfileIndex(-1)
- , m_ModListGroupingProxy(nullptr)
, m_ModListSortProxy(nullptr)
, m_OldExecutableIndex(-1)
, m_CategoryFactory(CategoryFactory::instance())
@@ -309,8 +308,8 @@ MainWindow::MainWindow(Settings &settings
{
QWebEngineProfile::defaultProfile()->setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies);
QWebEngineProfile::defaultProfile()->setHttpCacheMaximumSize(52428800);
- QWebEngineProfile::defaultProfile()->setCachePath(m_OrganizerCore.settings().getCacheDirectory());
- QWebEngineProfile::defaultProfile()->setPersistentStoragePath(m_OrganizerCore.settings().getCacheDirectory());
+ QWebEngineProfile::defaultProfile()->setCachePath(settings.getCacheDirectory());
+ QWebEngineProfile::defaultProfile()->setPersistentStoragePath(settings.getCacheDirectory());
ui->setupUi(this);
m_statusBar.reset(new StatusBar(statusBar(), ui));
@@ -340,7 +339,7 @@ MainWindow::MainWindow(Settings &settings
m_statusBar->setAPI(ni->getAPIStats(), ni->getAPIUserAccount());
}
- languageChange(m_OrganizerCore.settings().language());
+ languageChange(settings.language());
m_CategoryFactory.loadCategories();
@@ -367,19 +366,9 @@ MainWindow::MainWindow(Settings &settings
initDownloadView();
- bool pluginListAdjusted = false;
- if (auto v=m_OrganizerCore.settings().geometry().getPluginListHeader()) {
- ui->espList->header()->restoreState(*v);
- pluginListAdjusted = true;
- }
-
- if (auto v=m_OrganizerCore.settings().geometry().getDataTreeHeader()) {
- ui->dataTree->header()->restoreState(*v);
- }
-
- if (auto v=m_OrganizerCore.settings().geometry().getDownloadViewHeader()) {
- ui->downloadView->header()->restoreState(*v);
- }
+ const bool pluginListAdjusted = settings.restoreState(ui->espList->header());
+ settings.restoreState(ui->dataTree->header());
+ settings.restoreState(ui->downloadView->header());
ui->splitter->setStretchFactor(0, 3);
ui->splitter->setStretchFactor(1, 2);
@@ -586,9 +575,7 @@ void MainWindow::setupModList()
ui->modList->header()->installEventFilter(m_OrganizerCore.modList());
- if (auto v=m_OrganizerCore.settings().geometry().getModListHeader()) {
- ui->modList->header()->restoreState(*v);
-
+ if (m_OrganizerCore.settings().restoreState(ui->modList->header())) {
// hack: force the resize-signal to be triggered because restoreState doesn't seem to do that
for (int column = 0; column <= ModList::COL_LASTCOLUMN; ++column) {
int sectionSize = ui->modList->header()->sectionSize(column);
@@ -2272,13 +2259,8 @@ void MainWindow::activateProxy(bool activate)
void MainWindow::readSettings(const Settings& settings)
{
- if (auto v=settings.geometry().getMainWindow()) {
- restoreGeometry(*v);
- }
-
- if (auto v=settings.geometry().getMainWindowState()) {
- restoreState(*v);
- }
+ settings.restoreGeometry(this);
+ settings.restoreState(this);
if (auto v=settings.geometry().getToolbarSize()) {
setToolbarSize(*v);
@@ -2381,8 +2363,9 @@ void MainWindow::storeSettings(Settings& s) {
settings.remove("geometry");
settings.remove("reset_geometry");
} else {
- settings.setValue("window_geometry", saveGeometry());
- settings.setValue("window_state", saveState());
+ s.saveState(this);
+ s.saveGeometry(this);
+
settings.setValue("toolbar_size", ui->toolBar->iconSize());
settings.setValue("toolbar_button_style", static_cast<int>(ui->toolBar->toolButtonStyle()));
settings.setValue("menubar_visible", m_menuBarVisible);
@@ -2394,10 +2377,10 @@ void MainWindow::storeSettings(Settings& s) {
settings.setValue("browser_geometry", m_IntegratedBrowser.saveGeometry());
settings.setValue("filters_visible", ui->displayCategoriesBtn->isChecked());
- s.geometry().setPluginListHeader(ui->espList->header()->saveState());
- s.geometry().setDataTreeHeader(ui->dataTree->header()->saveState());
- s.geometry().setDownloadViewHeader(ui->downloadView->header()->saveState());
- s.geometry().setModListHeader(ui->modList->header()->saveState());
+ s.saveState(ui->espList->header());
+ s.saveState(ui->dataTree->header());
+ s.saveState(ui->downloadView->header());
+ s.saveState(ui->modList->header());
DockFixer::save(this, s);
}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 7460019d..946a341b 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -347,11 +347,9 @@ private:
int m_OldProfileIndex;
std::vector<QString> m_ModNameList; // the mod-list to go with the directory structure
- bool m_Refreshing;
QStringList m_DefaultArchives;
- QAbstractItemModel *m_ModListGroupingProxy;
ModListSortProxy *m_ModListSortProxy;
PluginListSortProxy *m_PluginListSortProxy;
@@ -367,8 +365,6 @@ private:
CategoryFactory &m_CategoryFactory;
- bool m_LoginAttempted;
-
QTimer m_CheckBSATimer;
QTimer m_SaveMetaTimer;
QTimer m_UpdateProblemsTimer;
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 5e614358..f3840230 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -210,10 +210,8 @@ void ModInfoDialog::createTabs()
int ModInfoDialog::exec()
{
+ GeometrySaver gs(Settings::instance(), this);
restoreState();
- if (auto v=m_core->settings().geometry().getModInfoDialog()) {
- restoreGeometry(*v);
- }
// whether to select the first tab; if the main window requested a specific
// tab, it is selected when encountered in update()
@@ -226,9 +224,7 @@ int ModInfoDialog::exec()
}
const int r = TutorableDialog::exec();
-
saveState();
- m_core->settings().geometry().setModInfoDialog(saveGeometry());
return r;
}
diff --git a/src/overwriteinfodialog.cpp b/src/overwriteinfodialog.cpp
index f3ae0ff5..47416311 100644
--- a/src/overwriteinfodialog.cpp
+++ b/src/overwriteinfodialog.cpp
@@ -106,20 +106,13 @@ OverwriteInfoDialog::~OverwriteInfoDialog()
void OverwriteInfoDialog::showEvent(QShowEvent* e)
{
- const auto& settings = Settings::instance();
-
- if (auto v=settings.geometry().getOverwriteDialog()) {
- restoreGeometry(*v);
- }
-
+ Settings::instance().restoreGeometry(this);
QDialog::showEvent(e);
}
void OverwriteInfoDialog::done(int r)
{
- auto& settings = Settings::instance();
- settings.geometry().setOverwriteDialog(saveGeometry());
-
+ Settings::instance().saveGeometry(this);
QDialog::done(r);
}
diff --git a/src/previewdialog.cpp b/src/previewdialog.cpp
index 06dcd674..91a5f13e 100644
--- a/src/previewdialog.cpp
+++ b/src/previewdialog.cpp
@@ -20,17 +20,8 @@ PreviewDialog::~PreviewDialog()
int PreviewDialog::exec()
{
- auto& settings = Settings::instance();
-
- if (auto v=settings.geometry().getPreviewDialog()) {
- restoreGeometry(*v);
- }
-
- const int r = QDialog::exec();
-
- settings.geometry().setPreviewDialog(saveGeometry());
-
- return r;
+ GeometrySaver gs(Settings::instance(), this);
+ return QDialog::exec();
}
void PreviewDialog::addVariant(const QString &modName, QWidget *widget)
diff --git a/src/problemsdialog.cpp b/src/problemsdialog.cpp
index 99cc9833..63d58295 100644
--- a/src/problemsdialog.cpp
+++ b/src/problemsdialog.cpp
@@ -31,17 +31,8 @@ ProblemsDialog::~ProblemsDialog()
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;
+ GeometrySaver gs(Settings::instance(), this);
+ return QDialog::exec();
}
void ProblemsDialog::runDiagnosis()
diff --git a/src/profilesdialog.cpp b/src/profilesdialog.cpp
index 25fff2b2..2f1bd059 100644
--- a/src/profilesdialog.cpp
+++ b/src/profilesdialog.cpp
@@ -86,17 +86,8 @@ ProfilesDialog::~ProfilesDialog()
int ProfilesDialog::exec()
{
- auto& settings = Settings::instance();
-
- if (auto v=settings.geometry().getProfilesDialog()) {
- restoreGeometry(*v);
- }
-
- const int r = QDialog::exec();
-
- settings.geometry().setProfilesDialog(saveGeometry());
-
- return r;
+ GeometrySaver gs(Settings::instance(), this);
+ return QDialog::exec();
}
void ProfilesDialog::showEvent(QShowEvent *event)
diff --git a/src/settings.cpp b/src/settings.cpp
index a8dcfa39..91e667d5 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -884,94 +884,146 @@ void Settings::dump() const
m_Settings.endGroup();
}
+QString widgetNameWithTopLevel(const QWidget* widget)
+{
+ QStringList components;
-GeometrySettings::GeometrySettings(QSettings& s)
- : m_Settings(s)
+ auto* tl = widget->window();
+
+ if (tl == widget) {
+ // this is a top level widget, such as a dialog
+ components.push_back(widget->objectName());
+ } else {
+ // this is a widget
+ const auto toplevelName = tl->objectName();
+ if (!toplevelName.isEmpty()) {
+ components.push_back(toplevelName);
+ }
+
+ const auto widgetName = widget->objectName();
+ if (!widgetName.isEmpty()) {
+ components.push_back(widgetName);
+ }
+ }
+
+ if (components.isEmpty()) {
+ // can't do much
+ return "unknown_widget";
+ }
+
+ return components.join("_");
+}
+
+QString widgetName(const QMainWindow* w)
{
+ return w->objectName();
}
-std::optional<QByteArray> GeometrySettings::getMainWindow() const
+QString widgetName(const QHeaderView* w)
{
- return getOptional<QByteArray>(m_Settings, "window_geometry");
+ return widgetNameWithTopLevel(w->parentWidget());
}
-std::optional<QByteArray> GeometrySettings::getMainWindowState() const
+QString widgetName(const QWidget* w)
{
- return getOptional<QByteArray>(m_Settings, "window_state");
+ return widgetNameWithTopLevel(w);
}
-std::optional<QSize> GeometrySettings::getToolbarSize() const
+template <class Widget>
+QString geoSettingName(const Widget* widget)
{
- return getOptional<QSize>(m_Settings, "toolbar_size");
+ return "geometry/" + widgetName(widget) + "_geometry";
}
-std::optional<Qt::ToolButtonStyle> GeometrySettings::getToolbarButtonStyle() const
+template <class Widget>
+QString stateSettingName(const Widget* widget)
{
- if (auto v=getOptional<int>(m_Settings, "toolbar_button_style")) {
- return static_cast<Qt::ToolButtonStyle>(*v);
- }
+ return "geometry/" + widgetName(widget) + "_state";
+}
- return {};
+void Settings::saveGeometry(const QWidget* w)
+{
+ m_Settings.setValue(geoSettingName(w), w->saveGeometry());
}
-std::optional<bool> GeometrySettings::getMenubarVisible() const
+bool Settings::restoreGeometry(QWidget* w) const
{
- return getOptional<bool>(m_Settings, "menubar_visible");
+ if (auto v=getOptional<QByteArray>(m_Settings, geoSettingName(w))) {
+ w->restoreGeometry(*v);
+ return true;
+ }
+
+ return false;
}
-std::optional<bool> GeometrySettings::getStatusbarVisible() const
+void Settings::saveState(const QMainWindow* w)
{
- return getOptional<bool>(m_Settings, "statusbar_visible");
+ m_Settings.setValue(stateSettingName(w), w->saveGeometry());
}
-std::optional<QByteArray> GeometrySettings::getMainSplitterState() const
+bool Settings::restoreState(QMainWindow* w) const
{
- return getOptional<QByteArray>(m_Settings, "window_split");
+ if (auto v=getOptional<QByteArray>(m_Settings, stateSettingName(w))) {
+ w->restoreState(*v);
+ return true;
+ }
+
+ return false;
}
-std::optional<bool> GeometrySettings::getFiltersVisible() const
+void Settings::saveState(const QHeaderView* w)
{
- return getOptional<bool>(m_Settings, "filters_visible");
+ m_Settings.setValue(stateSettingName(w), w->saveState());
}
-std::optional<QByteArray> GeometrySettings::getExecutablesDialog() const
+bool Settings::restoreState(QHeaderView* w) const
{
- return getOptional<QByteArray>(m_Settings, "geometry/EditExecutablesDialog");
+ if (auto v=getOptional<QByteArray>(m_Settings, stateSettingName(w))) {
+ w->restoreState(*v);
+ return true;
+ }
+
+ return false;
}
-void GeometrySettings::setExecutablesDialog(const QByteArray& v)
+
+GeometrySettings::GeometrySettings(QSettings& s)
+ : m_Settings(s)
{
- m_Settings.setValue("geometry/EditExecutablesDialog", v);
}
-std::optional<QByteArray> GeometrySettings::getProfilesDialog() const
+std::optional<QSize> GeometrySettings::getToolbarSize() const
{
- return getOptional<QByteArray>(m_Settings, "geometry/ProfilesDialog");
+ return getOptional<QSize>(m_Settings, "toolbar_size");
}
-void GeometrySettings::setProfilesDialog(const QByteArray& v)
+std::optional<Qt::ToolButtonStyle> GeometrySettings::getToolbarButtonStyle() const
{
- m_Settings.setValue("geometry/ProfilesDialog", v);
+ if (auto v=getOptional<int>(m_Settings, "toolbar_button_style")) {
+ return static_cast<Qt::ToolButtonStyle>(*v);
+ }
+
+ return {};
}
-std::optional<QByteArray> GeometrySettings::getOverwriteDialog() const
+std::optional<bool> GeometrySettings::getMenubarVisible() const
{
- return getOptional<QByteArray>(m_Settings, "geometry/__overwriteDialog");
+ return getOptional<bool>(m_Settings, "menubar_visible");
}
-void GeometrySettings::setOverwriteDialog(const QByteArray& v)
+std::optional<bool> GeometrySettings::getStatusbarVisible() const
{
- m_Settings.setValue("geometry/__overwriteDialog", v);
+ return getOptional<bool>(m_Settings, "statusbar_visible");
}
-std::optional<QByteArray> GeometrySettings::getModInfoDialog() const
+std::optional<QByteArray> GeometrySettings::getMainSplitterState() const
{
- return getOptional<QByteArray>(m_Settings, "geometry/ModInfoDialog");
+ return getOptional<QByteArray>(m_Settings, "window_split");
}
-void GeometrySettings::setModInfoDialog(const QByteArray& v) const
+std::optional<bool> GeometrySettings::getFiltersVisible() const
{
- m_Settings.setValue("geometry/ModInfoDialog", v);
+ return getOptional<bool>(m_Settings, "filters_visible");
}
QStringList GeometrySettings::getModInfoTabOrder() const
@@ -1010,86 +1062,6 @@ 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<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<QByteArray> GeometrySettings::getPreviewDialog() const
-{
- return getOptional<QByteArray>(m_Settings, "geometry/PreviewDialog");
-}
-
-void GeometrySettings::setPreviewDialog(const QByteArray& v)
-{
- m_Settings.setValue("geometry/PreviewDialog", v);
-}
-
-std::optional<QByteArray> GeometrySettings::getPluginListHeader() const
-{
- return getOptional<QByteArray>(m_Settings, "geometry/espList");
-}
-
-void GeometrySettings::setPluginListHeader(const QByteArray& v) const
-{
- m_Settings.setValue("geometry/espList", v);
-}
-
-std::optional<QByteArray> GeometrySettings::getDataTreeHeader() const
-{
- return getOptional<QByteArray>(m_Settings, "geometry/dataTree");
-}
-
-void GeometrySettings::setDataTreeHeader(const QByteArray& v) const
-{
- m_Settings.setValue("geometry/dataTree", v);
-}
-
-std::optional<QByteArray> GeometrySettings::getDownloadViewHeader() const
-{
- return getOptional<QByteArray>(m_Settings, "geometry/downloadView");
-}
-
-void GeometrySettings::setDownloadViewHeader(const QByteArray& v) const
-{
- m_Settings.setValue("geometry/downloadView", v);
-}
-
-std::optional<QByteArray> GeometrySettings::getModListHeader() const
-{
- return getOptional<QByteArray>(m_Settings, "geometry/modList");
-}
-
-void GeometrySettings::setModListHeader(const QByteArray& v) const
-{
- m_Settings.setValue("geometry/modList", v);
-}
-
std::optional<int> GeometrySettings::getMainWindowMonitor() const
{
return getOptional<int>(m_Settings, "window_monitor");
@@ -1109,3 +1081,15 @@ std::optional<bool> GeometrySettings::isCategoryListVisible() const
{
return getOptional<bool>(m_Settings, "categorylist_visible");
}
+
+
+GeometrySaver::GeometrySaver(Settings& s, QDialog* dialog)
+ : m_settings(s), m_dialog(dialog)
+{
+ m_settings.restoreGeometry(m_dialog);
+}
+
+GeometrySaver::~GeometrySaver()
+{
+ m_settings.saveGeometry(m_dialog);
+}
diff --git a/src/settings.h b/src/settings.h
index 2c4c7ca6..1575b3cd 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -30,6 +30,18 @@ namespace MOBase {
class PluginContainer;
struct ServerInfo;
+class Settings;
+
+class GeometrySaver
+{
+public:
+ GeometrySaver(Settings& s, QDialog* dialog);
+ ~GeometrySaver();
+
+private:
+ Settings& m_settings;
+ QDialog* m_dialog;
+};
class GeometrySettings
@@ -37,54 +49,17 @@ class GeometrySettings
public:
GeometrySettings(QSettings& s);
- std::optional<QByteArray> getMainWindow() const;
- std::optional<QByteArray> getMainWindowState() const;
std::optional<QSize> getToolbarSize() const;
std::optional<Qt::ToolButtonStyle> getToolbarButtonStyle() const;
+
std::optional<bool> getMenubarVisible() const;
std::optional<bool> getStatusbarVisible() const;
std::optional<QByteArray> getMainSplitterState() const;
std::optional<bool> getFiltersVisible() const;
- std::optional<QByteArray> getExecutablesDialog() const;
- void setExecutablesDialog(const QByteArray& v);
-
- std::optional<QByteArray> getProfilesDialog() const;
- void setProfilesDialog(const QByteArray& v);
-
- std::optional<QByteArray> getOverwriteDialog() const;
- void setOverwriteDialog(const QByteArray& v);
-
- std::optional<QByteArray> getModInfoDialog() const;
- void setModInfoDialog(const QByteArray& v) const;
-
QStringList getModInfoTabOrder() const;
void setModInfoTabOrder(const QString& names);
- 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<QByteArray> getPreviewDialog() const;
- void setPreviewDialog(const QByteArray& v);
-
- std::optional<QByteArray> getPluginListHeader() const;
- void setPluginListHeader(const QByteArray& v) const;
-
- std::optional<QByteArray> getDataTreeHeader() const;
- void setDataTreeHeader(const QByteArray& v) const;
-
- std::optional<QByteArray> getDownloadViewHeader() const;
- void setDownloadViewHeader(const QByteArray& v) const;
-
- std::optional<QByteArray> getModListHeader() const;
- void setModListHeader(const QByteArray& v) const;
-
std::optional<int> getMainWindowMonitor() const;
void setDockSize(const QString& name, int size);
@@ -228,6 +203,19 @@ public:
const GeometrySettings& geometry() const;
+ void saveGeometry(const QWidget* w);
+ bool restoreGeometry(QWidget* w) const;
+
+ void saveState(const QMainWindow* window);
+ bool restoreState(QMainWindow* window) const;
+
+ void saveState(const QHeaderView* header);
+ bool restoreState(QHeaderView* header) const;
+
+ void saveState(const QToolBar* toolbar);
+ bool restoreState(QToolBar* toolbar) const;
+
+
/**
* retrieve the directory where profiles stored (with native separators)
**/