From 166bc13dec987e97e2d753560c35ce6d2f083c74 Mon Sep 17 00:00:00 2001 From: Chris Date: Sat, 8 May 2021 02:33:47 +1000 Subject: [PATCH] Adding ability to save QTwindow geometry to config solving #1245 + Load window geometry from config added to constructor + Save window geometry to config added to destructor + Added an opt out boolean to allow for saving / not saving geometry + Consolidated the Minimize settings into the "UI_Settings" in config + Code to initialise config values. Amended for code style by Adam Honse --- qt/OpenRGBDialog2.cpp | 80 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 69 insertions(+), 11 deletions(-) diff --git a/qt/OpenRGBDialog2.cpp b/qt/OpenRGBDialog2.cpp index 92bfa3b9..057e551b 100644 --- a/qt/OpenRGBDialog2.cpp +++ b/qt/OpenRGBDialog2.cpp @@ -160,6 +160,36 @@ OpenRGBDialog2::OpenRGBDialog2(QWidget *parent) : QMainWindow(parent), ui(new Op QIcon logo(":OpenRGB.png"); setWindowIcon(logo); + /*-----------------------------------------------------*\ + | Set window geometry from config (if available) | + \*-----------------------------------------------------*/ + SettingsManager* settings_manager = ResourceManager::get()->GetSettingsManager(); + std::string ui_string = "UI_Settings"; + json ui_settings; + + ui_settings = settings_manager->GetSettings(ui_string); + + /*-----------------------------------------------------*\ + | If geometry information exists in settings, apply it | + \*-----------------------------------------------------*/ + if(ui_settings.contains("geometry")) + { + if( ui_settings["geometry"].contains("x") + && ui_settings["geometry"].contains("y") + && ui_settings["geometry"].contains("width") + && ui_settings["geometry"].contains("height")) + { + QRect set_window; + + set_window.setX(ui_settings["geometry"]["x"].get()); + set_window.setY(ui_settings["geometry"]["y"].get()); + set_window.setWidth(ui_settings["geometry"]["width"].get()); + set_window.setHeight(ui_settings["geometry"]["height"].get()); + + setGeometry(set_window); + } + } + /*-----------------------------------------------------*\ | Register detection progress callback with resource | | manager | @@ -247,19 +277,21 @@ OpenRGBDialog2::OpenRGBDialog2(QWidget *parent) : QMainWindow(parent), ui(new Op trayIconMenu->addAction(actionExit); /*-------------------------------------------------*\ - | Tray minimization | - | Defaults to false | + | If tray minimize flag isn't in the config, set | + | default value to false | \*-------------------------------------------------*/ - json MinimizeSettings; - MinimizeSettings = ResourceManager::get()->GetSettingsManager()->GetSettings("Minimize"); - - if (MinimizeSettings.contains("minimize_on_close")) + if(!ui_settings.contains("minimize_on_close")) { - MinimizeToTray = MinimizeSettings["minimize_on_close"]; + ui_settings["minimize_on_close"] = false; + + settings_manager->SetSettings(ui_string, ui_settings); + settings_manager->SaveSettings(); + + MinimizeToTray = false; } else { - MinimizeToTray = false; + MinimizeToTray = ui_settings["minimize_on_close"]; } connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(on_ReShow(QSystemTrayIcon::ActivationReason))); @@ -352,6 +384,32 @@ OpenRGBDialog2::OpenRGBDialog2(QWidget *parent) : QMainWindow(parent), ui(new Op OpenRGBDialog2::~OpenRGBDialog2() { + /*-----------------------------------------------------*\ + | Write window geometry to config (if enabled) | + \*-----------------------------------------------------*/ + SettingsManager* settings_manager = ResourceManager::get()->GetSettingsManager(); + std::string ui_string = "UI_Settings"; + json ui_settings; + + ui_settings = settings_manager->GetSettings(ui_string); + + if(ui_settings.contains("geometry")) + { + if(ui_settings["geometry"].contains("save_on_exit")) + { + if(ui_settings["geometry"]["save_on_exit"] == true) + { + ui_settings["geometry"]["x"] = geometry().x(); + ui_settings["geometry"]["y"] = geometry().y(); + ui_settings["geometry"]["width"] = geometry().width(); + ui_settings["geometry"]["height"] = geometry().height(); + + settings_manager->SetSettings(ui_string, ui_settings); + settings_manager->SaveSettings(); + } + } + } + delete ui; } @@ -618,8 +676,8 @@ void OpenRGBDialog2::ClearDevicesList() { if(dynamic_cast(ui->InformationTabBar->widget(tab_idx)) == nullptr) { - delete ui->InformationTabBar->widget(tab_idx); - ui->InformationTabBar->removeTab(tab_idx); + delete ui->InformationTabBar->widget(tab_idx); + ui->InformationTabBar->removeTab(tab_idx); } } } @@ -639,7 +697,7 @@ void OpenRGBDialog2::UpdateDevicesList() bool found = false; for(int tab_idx = 0; tab_idx < ui->DevicesTabBar->count(); tab_idx++) - { + { QWidget* page = ui->DevicesTabBar->widget(tab_idx); if(dynamic_cast(page) != nullptr)