From 74dd0b4e494f5f54510434089bb012a46416d3a1 Mon Sep 17 00:00:00 2001 From: Gabriele Musco Date: Sun, 23 Jul 2023 15:37:02 +0200 Subject: [PATCH] feat: remember window size on close --- src/config.rs | 7 +++++++ src/ui/app.rs | 13 ++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/config.rs b/src/config.rs index eb20881..e8fc779 100644 --- a/src/config.rs +++ b/src/config.rs @@ -2,11 +2,17 @@ use crate::{constants::CMD_NAME, file_utils::get_writer, paths::get_config_dir, use serde::{Deserialize, Serialize}; use std::{fs::File, io::BufReader}; +fn default_win_size() -> [i32; 2] { + [360, 400] +} + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct Config { pub selected_profile_uuid: String, pub debug_view_enabled: bool, pub user_profiles: Vec, + #[serde(default = "default_win_size")] + pub win_size: [i32; 2], } impl Default for Config { @@ -16,6 +22,7 @@ impl Default for Config { selected_profile_uuid: "".to_string(), debug_view_enabled: false, user_profiles: vec![], + win_size: default_win_size(), } } } diff --git a/src/ui/app.rs b/src/ui/app.rs index 353dfaf..cc272ae 100644 --- a/src/ui/app.rs +++ b/src/ui/app.rs @@ -99,6 +99,7 @@ pub enum Msg { SaveProfile(Profile), RunSetCap, OpenLibsurviveSetup, + SaveWinSize(i32, i32), Quit, ProcessDevicesLog(Vec), } @@ -195,7 +196,7 @@ impl SimpleComponent for App { #[root] adw::ApplicationWindow { set_title: Some(APP_NAME), - set_default_size: (400, 300), + set_default_size: (win_size[0], win_size[1]), gtk::Box { set_orientation: gtk::Orientation::Vertical, set_hexpand: true, @@ -213,6 +214,10 @@ impl SimpleComponent for App { model.debug_view.widget(), } }, + connect_close_request[sender] => move |win| { + sender.input(Msg::SaveWinSize(win.width(), win.height())); + gtk::Inhibit(false) + } } } @@ -487,7 +492,12 @@ impl SimpleComponent for App { )) .expect("Failed to present Libsurvive Setup Window"); } + Msg::SaveWinSize(w, h) => { + self.config.win_size = [w, h]; + self.config.save(); + } Msg::Quit => { + sender.input(Msg::SaveWinSize(self.app_win.width(), self.app_win.height())); self.application.quit(); } } @@ -499,6 +509,7 @@ impl SimpleComponent for App { sender: ComponentSender, ) -> ComponentParts { let config = Config::get_config(); + let win_size = config.win_size.clone(); let profiles = Self::profiles_list(&config); let dependencies_dialog = adw::MessageDialog::builder() .modal(true)