summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAl12rs <gabriel.cortesi@outlook.com>2018-09-15 14:12:24 +0200
committerAl12rs <gabriel.cortesi@outlook.com>2018-09-15 14:12:24 +0200
commita3cb4001521fa4b29252ce6f9c652fb07b335bf4 (patch)
treeb6e9c3d9613292b855ded5e63c884bdcb4f76b02 /src
parent3e29d312315a15394a4da423dfa8791f40e3ab52 (diff)
Store and load major dialogs geometry information.
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.cpp42
-rw-r--r--src/settings.cpp8
2 files changed, 49 insertions, 1 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 57988663..0a4ab912 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -1906,10 +1906,16 @@ bool MainWindow::modifyExecutablesDialog()
EditExecutablesDialog dialog(*m_OrganizerCore.executablesList(),
*m_OrganizerCore.modList(),
m_OrganizerCore.currentProfile());
+ 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) {
m_OrganizerCore.setExecutablesList(dialog.getExecutablesList());
result = true;
}
+ settings.setValue(key, dialog.saveGeometry());
refreshExecutablesList();
} catch (const std::exception &e) {
reportError(e.what());
@@ -1975,10 +1981,16 @@ void MainWindow::on_actionAdd_Profile_triggered()
ProfilesDialog profilesDialog(m_OrganizerCore.currentProfile()->name(),
m_OrganizerCore.managedGame(),
this);
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(profilesDialog.objectName());
+ if (settings.contains(key)) {
+ profilesDialog.restoreGeometry(settings.value(key).toByteArray());
+ }
// workaround: need to disable monitoring of the saves directory, otherwise the active
// profile directory is locked
stopMonitorSaves();
profilesDialog.exec();
+ settings.setValue(key, profilesDialog.saveGeometry());
refreshSaveList(); // since the save list may now be outdated we have to refresh it completely
if (refreshProfiles() && !profilesDialog.failed()) {
break;
@@ -2496,6 +2508,9 @@ void MainWindow::overwriteClosed(int)
OverwriteInfoDialog *dialog = this->findChild<OverwriteInfoDialog*>("__overwriteDialog");
if (dialog != nullptr) {
m_OrganizerCore.modList()->modInfoChanged(dialog->modInfo());
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(dialog->objectName());
+ settings.setValue(key, dialog->saveGeometry());
dialog->deleteLater();
}
m_OrganizerCore.refreshDirectoryStructure();
@@ -2518,6 +2533,11 @@ void MainWindow::displayModInformation(ModInfo::Ptr modInfo, unsigned int index,
} else {
qobject_cast<OverwriteInfoDialog*>(dialog)->setModInfo(modInfo);
}
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(dialog->objectName());
+ if (settings.contains(key)) {
+ dialog->restoreGeometry(settings.value(key).toByteArray());
+ }
dialog->show();
dialog->raise();
dialog->activateWindow();
@@ -2541,7 +2561,12 @@ void MainWindow::displayModInformation(ModInfo::Ptr modInfo, unsigned int index,
dialog.openTab(tab);
}
- dialog.restoreTabState(m_OrganizerCore.settings().directInterface().value("mod_info_tabs").toByteArray());
+ dialog.restoreTabState(m_OrganizerCore.settings().directInterface().value("mod_info_tabs").toByteArray());
+ 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 no tab was specified use the first tab from the left based on the user order.
if (tab == -1) {
@@ -2555,6 +2580,8 @@ void MainWindow::displayModInformation(ModInfo::Ptr modInfo, unsigned int index,
dialog.exec();
m_OrganizerCore.settings().directInterface().setValue("mod_info_tabs", dialog.saveTabState());
+ settings.setValue(key, dialog.saveGeometry());
+
modInfo->saveMeta();
emit modInfoDisplayed();
@@ -4285,7 +4312,13 @@ void MainWindow::previewDataFile()
addFunc(alt.first);
}
if (preview.numVariants() > 0) {
+ QSettings &settings = m_OrganizerCore.settings().directInterface();
+ QString key = QString("geometry/%1").arg(preview.objectName());
+ if (settings.contains(key)) {
+ preview.restoreGeometry(settings.value(key).toByteArray());
+ }
preview.exec();
+ settings.setValue(key, preview.saveGeometry());
} else {
QMessageBox::information(this, tr("Sorry"), tr("Sorry, can't preview anything. This function currently does not support extracting from bsas."));
}
@@ -4746,9 +4779,16 @@ 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/settings.cpp b/src/settings.cpp
index db4ea565..6ef43ace 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -604,6 +604,12 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
tabs.push_back(std::unique_ptr<SettingsTab>(new PluginsTab(this, dialog)));
tabs.push_back(std::unique_ptr<SettingsTab>(new WorkaroundsTab(this, dialog)));
+
+ QString key = QString("geometry/%1").arg(dialog.objectName());
+ if (m_Settings.contains(key)) {
+ dialog.restoreGeometry(m_Settings.value(key).toByteArray());
+ }
+
if (dialog.exec() == QDialog::Accepted) {
// remember settings before change
QMap<QString, QString> before;
@@ -631,6 +637,8 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
}
m_Settings.endGroup();
}
+ m_Settings.setValue(key, dialog.saveGeometry());
+
}
Settings::SettingsTab::SettingsTab(Settings *m_parent, SettingsDialog &m_dialog)