From ad72731ecf239b41406457c61824a4c7a6d7dce5 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Mon, 25 Aug 2025 23:29:02 +0600 Subject: [PATCH] Implement "Remember size and position" for main manager window --- src/qt/qt_vmmanager_mainwindow.cpp | 35 ++++++++++++++++++++++++++++++ src/qt/qt_vmmanager_mainwindow.ui | 9 ++++++++ 2 files changed, 44 insertions(+) diff --git a/src/qt/qt_vmmanager_mainwindow.cpp b/src/qt/qt_vmmanager_mainwindow.cpp index 11eba670b..6ee8979cd 100644 --- a/src/qt/qt_vmmanager_mainwindow.cpp +++ b/src/qt/qt_vmmanager_mainwindow.cpp @@ -120,6 +120,32 @@ VMManagerMainWindow(QWidget *parent) connect(this, &VMManagerMainWindow::darkModeUpdated, vmm, &VMManagerMain::onDarkModeUpdated); #endif + { + auto config = new VMManagerConfig(VMManagerConfig::ConfigType::General); + this->ui->actionRemember_size_and_position->setChecked(!!config->getStringValue("window_remember").toInt()); + if (ui->actionRemember_size_and_position->isChecked()) { + QStringList list = config->getStringValue("window_coordinates").split(','); + for (auto& cur : list) { + cur = cur.trimmed(); + } + QRect geom; + geom.setX(list[0].toInt()); + geom.setY(list[1].toInt()); + geom.setWidth(list[2].toInt()); + geom.setHeight(list[3].toInt()); + + setGeometry(geom); + if (!!config->getStringValue("window_maximized").toInt()) { + setWindowState(windowState() | Qt::WindowMaximized); + } + } else { + config->setStringValue("window_remember", ""); + config->setStringValue("window_coordinates", ""); + config->setStringValue("window_maximized", ""); + } + delete config; + } + } VMManagerMainWindow::~ @@ -167,6 +193,15 @@ VMManagerMainWindow::saveSettings() const const auto currentSelection = vmm->getCurrentSelection(); const auto config = new VMManagerConfig(VMManagerConfig::ConfigType::General); config->setStringValue("last_selection", currentSelection); + config->setStringValue("window_remember", QString::number(ui->actionRemember_size_and_position->isChecked())); + if (ui->actionRemember_size_and_position->isChecked()) { + config->setStringValue("window_coordinates", QString::asprintf("%i, %i, %i, %i", this->geometry().x(), this->geometry().y(), this->geometry().width(), this->geometry().height())); + config->setStringValue("window_maximized", this->isMaximized() ? "1" : ""); + } else { + config->setStringValue("window_remember", ""); + config->setStringValue("window_coordinates", ""); + config->setStringValue("window_maximized", ""); + } // Sometimes required to ensure the settings save before the app exits config->sync(); } diff --git a/src/qt/qt_vmmanager_mainwindow.ui b/src/qt/qt_vmmanager_mainwindow.ui index 7cd817a0b..15739628d 100644 --- a/src/qt/qt_vmmanager_mainwindow.ui +++ b/src/qt/qt_vmmanager_mainwindow.ui @@ -28,6 +28,7 @@ &Tools + @@ -186,6 +187,14 @@ New machine... + + + true + + + R&emember size && position + + &Preferences...