From 2d5a84c39c6ac8be280845b745874dbfa81d0e6c Mon Sep 17 00:00:00 2001 From: yggverse Date: Sun, 8 Dec 2024 04:21:10 +0200 Subject: [PATCH] deactivate exit action if not active, update method names --- .../tab/item/identity/gemini/widget/form.rs | 37 +++++++++++++------ .../item/identity/gemini/widget/form/drop.rs | 2 +- .../item/identity/gemini/widget/form/exit.rs | 5 ++- .../item/identity/gemini/widget/form/file.rs | 2 +- .../item/identity/gemini/widget/form/name.rs | 2 +- .../item/identity/gemini/widget/form/save.rs | 2 +- 6 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/app/browser/window/tab/item/identity/gemini/widget/form.rs b/src/app/browser/window/tab/item/identity/gemini/widget/form.rs index c9a5fbdb..3dde4b1f 100644 --- a/src/app/browser/window/tab/item/identity/gemini/widget/form.rs +++ b/src/app/browser/window/tab/item/identity/gemini/widget/form.rs @@ -28,6 +28,8 @@ pub struct Form { pub name: Rc, pub save: Rc, pub g_box: Box, + auth_uri: Uri, + profile: Rc, } impl Form { @@ -76,6 +78,8 @@ impl Form { name, save, g_box, + auth_uri, + profile, } } @@ -92,23 +96,34 @@ impl Form { } pub fn update(&self) { - // Get selected item value + // Get shared selected item value let value = self.list.selected().value_enum(); - // Toggle visibility for children components - self.name.set_visible(matches!(value, Value::GeneratePem)); - self.file.set_visible(matches!(value, Value::ImportPem)); + // Begin children components update + self.name.update(matches!(value, Value::GeneratePem)); + self.file.update(matches!(value, Value::ImportPem)); match value { - Value::ProfileIdentityGeminiId(_) => { - self.drop.set_visible(true); - self.exit.set_visible(true); - self.save.set_visible(true); + Value::ProfileIdentityGeminiId(profile_identity_gemini_id) => { + self.drop.update(true); + self.exit.update( + true, + self.profile + .identity + .gemini + .auth + .memory + .match_scope(&self.auth_uri.to_string()) + .is_some_and(|auth| { + auth.profile_identity_gemini_id == profile_identity_gemini_id + }), + ); + self.save.update(true); } _ => { - self.drop.set_visible(false); - self.exit.set_visible(false); - self.save.set_visible(false); + self.drop.update(false); + self.exit.update(false, false); + self.save.update(false); } } } diff --git a/src/app/browser/window/tab/item/identity/gemini/widget/form/drop.rs b/src/app/browser/window/tab/item/identity/gemini/widget/form/drop.rs index ae1363b7..913d3ee1 100644 --- a/src/app/browser/window/tab/item/identity/gemini/widget/form/drop.rs +++ b/src/app/browser/window/tab/item/identity/gemini/widget/form/drop.rs @@ -107,7 +107,7 @@ impl Drop { // Actions - pub fn set_visible(&self, is_visible: bool) { + pub fn update(&self, is_visible: bool) { self.button.set_visible(is_visible) } } diff --git a/src/app/browser/window/tab/item/identity/gemini/widget/form/exit.rs b/src/app/browser/window/tab/item/identity/gemini/widget/form/exit.rs index 9c26964b..46cde75a 100644 --- a/src/app/browser/window/tab/item/identity/gemini/widget/form/exit.rs +++ b/src/app/browser/window/tab/item/identity/gemini/widget/form/exit.rs @@ -125,7 +125,8 @@ impl Exit { // Actions - pub fn set_visible(&self, is_visible: bool) { - self.button.set_visible(is_visible) + pub fn update(&self, is_visible: bool, is_sensitive: bool) { + self.button.set_visible(is_visible); + self.button.set_sensitive(is_sensitive); } } diff --git a/src/app/browser/window/tab/item/identity/gemini/widget/form/file.rs b/src/app/browser/window/tab/item/identity/gemini/widget/form/file.rs index 3f208bfb..81ab870c 100644 --- a/src/app/browser/window/tab/item/identity/gemini/widget/form/file.rs +++ b/src/app/browser/window/tab/item/identity/gemini/widget/form/file.rs @@ -102,7 +102,7 @@ impl File { // Actions /// Change visibility status - pub fn set_visible(&self, is_visible: bool) { + pub fn update(&self, is_visible: bool) { self.button.set_visible(is_visible); } diff --git a/src/app/browser/window/tab/item/identity/gemini/widget/form/name.rs b/src/app/browser/window/tab/item/identity/gemini/widget/form/name.rs index 88f91e24..b88928cf 100644 --- a/src/app/browser/window/tab/item/identity/gemini/widget/form/name.rs +++ b/src/app/browser/window/tab/item/identity/gemini/widget/form/name.rs @@ -39,7 +39,7 @@ impl Name { /// Change visibility status /// * grab focus on `is_visible` is `true` - pub fn set_visible(&self, is_visible: bool) { + pub fn update(&self, is_visible: bool) { self.entry.set_visible(is_visible); if is_visible && self.entry.focus_child().is_none() { self.entry.grab_focus(); diff --git a/src/app/browser/window/tab/item/identity/gemini/widget/form/save.rs b/src/app/browser/window/tab/item/identity/gemini/widget/form/save.rs index 27c1f95d..4545ba21 100644 --- a/src/app/browser/window/tab/item/identity/gemini/widget/form/save.rs +++ b/src/app/browser/window/tab/item/identity/gemini/widget/form/save.rs @@ -128,7 +128,7 @@ impl Save { // Actions - pub fn set_visible(&self, is_visible: bool) { + pub fn update(&self, is_visible: bool) { self.button.set_visible(is_visible) } }