From fe9f83909111bc123ce8f7eb42d1d0a5148989b7 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Sun, 17 May 2026 15:34:18 +0800 Subject: [PATCH] feat: finish default icon and friendly app name for application subkey --- wfassoc/src/lowlevel.rs | 57 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/wfassoc/src/lowlevel.rs b/wfassoc/src/lowlevel.rs index 36cc065..de10ddf 100644 --- a/wfassoc/src/lowlevel.rs +++ b/wfassoc/src/lowlevel.rs @@ -697,7 +697,21 @@ impl ApplicationsKey { const NAMEOF_DEFAULT_ICON_PART2: &str = ""; pub fn get_default_icon(&self, view: View) -> Result, Error> { - todo!() + let key = self.open_view_for_getter(view)?; + // Get default icon subkey + let default_icon_key = match regext::try_open_subkey_with_flags( + &key, + Self::NAMEOF_DEFAULT_ICON_PART1, + KEY_READ, + )? { + Some(key) => key, + None => return Ok(None), + }; + // Get the default value of default icon subkey + let default_icon_default_value = + regext::try_get_value::(&default_icon_key, Self::NAMEOF_DEFAULT_ICON_PART2)?; + // Transform it as result + Ok(default_icon_default_value.map(|v| IconResVariant::from(v.as_str()))) } pub fn set_default_icon( @@ -705,13 +719,35 @@ impl ApplicationsKey { scope: Scope, icon: Option<&IconResVariant>, ) -> Result<(), Error> { - todo!() + let key = self.open_scope_for_setter(scope)?; + + match icon { + Some(icon) => { + // Create default icon subkey + let (default_icon_key, _) = key.create_subkey_with_flags( + Self::NAMEOF_DEFAULT_ICON_PART1, + KEY_READ | KEY_WRITE, + )?; + // Set default value of default icon subkey. + default_icon_key.set_value(Self::NAMEOF_DEFAULT_ICON_PART2, &icon.to_string())?; + } + None => { + // Delete shell and its all subkey. + key.delete_subkey_all(regext::blank_path_guard(Self::NAMEOF_DEFAULT_ICON_PART1)?)?; + } + } + + Ok(()) } const NAMEOF_FRIENDLY_APP_NAME: &str = "FriendlyAppName"; pub fn get_friendly_app_name(&self, view: View) -> Result, Error> { - todo!() + let key = self.open_view_for_getter(view)?; + // Get value of it + let value = regext::try_get_value::(&key, Self::NAMEOF_FRIENDLY_APP_NAME)?; + // Transform it as result + Ok(value.map(|v| StrResVariant::from(v.as_str()))) } pub fn set_friendly_app_name( @@ -719,7 +755,20 @@ impl ApplicationsKey { scope: Scope, name: Option<&StrResVariant>, ) -> Result<(), Error> { - todo!() + let key = self.open_scope_for_setter(scope)?; + + match name { + Some(name) => { + // Set value for this key + key.set_value(Self::NAMEOF_FRIENDLY_APP_NAME, &name.to_string())?; + } + None => { + // Delete this key + key.delete_value(Self::NAMEOF_FRIENDLY_APP_NAME)?; + } + } + + Ok(()) } const NAMEOF_SUPPORTED_TYPES: &str = "SupportedTypes";