diff --git a/src/main.rs b/src/main.rs index 0c02e2e..e389d4b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -121,6 +121,14 @@ fn save_settings_to_file(settings: &Settings) { #[cfg(feature = "ui")] fn update_ui_with_settings(ui: &mut mainview::UserInterface, settings: &Settings) { + ui.steam_location_input.set_value( + &settings + .steam + .location + .clone() + .unwrap_or(steam::get_default_location().unwrap_or(String::from(""))), + ); + ui.enable_steamgrid_db_checkbox .set_value(settings.steamgrid_db.enabled); ui.steamgrid_db_auth_key_input.set_value( diff --git a/src/steam/utils.rs b/src/steam/utils.rs index a8acb8e..0e5c6d4 100644 --- a/src/steam/utils.rs +++ b/src/steam/utils.rs @@ -60,20 +60,7 @@ pub fn get_shortcuts_paths( let user_location = settings.location.clone(); let steam_path_str = match user_location { Some(location) => location, - None => { - #[cfg(target_os = "windows")] - let path_string = { - let key = "PROGRAMFILES(X86)"; - let program_files = env::var(key)?; - format!("{program_files}//Steam//", program_files = program_files) - }; - #[cfg(target_os = "linux")] - let path_string = { - let home = std::env::var("HOME")?; - format!("{}/.steam/steam/", home) - }; - path_string - } + None => get_default_location()?, }; let steam_path = Path::new(&steam_path_str); if !steam_path.exists() { @@ -113,6 +100,32 @@ pub fn get_shortcuts_paths( Ok(users_info) } +pub fn get_default_location() -> Result> { + #[cfg(target_os = "windows")] + let path_string = { + let key = "PROGRAMFILES(X86)"; + let program_files = env::var(key)?; + String::from( + Path::new(&program_files) + .join("Steam") + .to_str() + .unwrap_or(""), + ) + }; + #[cfg(target_os = "linux")] + let path_string = { + let home = std::env::var("HOME")?; + String::from( + Path::new(&home) + .join(".steam") + .join("steam") + .to_str() + .unwrap_or(""), + ) + }; + Ok(path_string) +} + #[derive(Debug)] struct SteamFolderNotFound { location_tried: String,