From 5f5311acec39387abb2ac75448b6f7b9152575ff Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Wed, 13 Nov 2024 15:36:01 +0700 Subject: [PATCH 1/3] feat: highlight button for active dpns subscreen --- .../dpns_subscreen_chooser_panel.rs | 32 ++++++++++++++++--- src/ui/dpns_contested_names_screen.rs | 2 +- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/ui/components/dpns_subscreen_chooser_panel.rs b/src/ui/components/dpns_subscreen_chooser_panel.rs index 472bbc96a..4eba3c16c 100644 --- a/src/ui/components/dpns_subscreen_chooser_panel.rs +++ b/src/ui/components/dpns_subscreen_chooser_panel.rs @@ -1,8 +1,10 @@ +use crate::context::AppContext; use crate::ui::dpns_contested_names_screen::DPNSSubscreen; -use crate::{app::AppAction, ui::RootScreenType}; -use egui::{Context, Frame, Margin, SidePanel}; +use crate::ui::RootScreenType; +use crate::{app::AppAction, ui}; +use egui::{Color32, Context, Frame, Margin, RichText, SidePanel, Stroke}; -pub fn add_dpns_subscreen_chooser_panel(ctx: &Context) -> AppAction { +pub fn add_dpns_subscreen_chooser_panel(ctx: &Context, app_context: &AppContext) -> AppAction { let mut action = AppAction::None; let subscreens = vec![ @@ -11,6 +13,18 @@ pub fn add_dpns_subscreen_chooser_panel(ctx: &Context) -> AppAction { DPNSSubscreen::Owned, ]; + let active_screen = match app_context + .get_settings() + .expect("Expected settings ok") + .expect("Expected settings some") + .1 + { + ui::RootScreenType::RootScreenDPNSActiveContests => DPNSSubscreen::Active, + ui::RootScreenType::RootScreenDPNSPastContests => DPNSSubscreen::Past, + ui::RootScreenType::RootScreenDPNSOwnedNames => DPNSSubscreen::Owned, + _ => DPNSSubscreen::Active, + }; + SidePanel::left("dpns_subscreen_chooser_panel") .default_width(250.0) .frame( @@ -25,8 +39,18 @@ pub fn add_dpns_subscreen_chooser_panel(ctx: &Context) -> AppAction { ui.add_space(10.0); for subscreen in subscreens { + let is_active = active_screen == subscreen; + let (button_color, text_color) = if is_active { + (Color32::from_rgb(0, 128, 255), Color32::WHITE) + } else { + (Color32::GRAY, Color32::WHITE) + }; + let button = egui::Button::new( + RichText::new(subscreen.display_name()).color(text_color), + ) + .fill(button_color); // Show the subscreen name as a clickable option - if ui.button(subscreen.display_name()).clicked() { + if ui.add(button).clicked() { // Handle navigation based on which subscreen is selected match subscreen { DPNSSubscreen::Active => { diff --git a/src/ui/dpns_contested_names_screen.rs b/src/ui/dpns_contested_names_screen.rs index ea2b223b7..4e3892dc4 100644 --- a/src/ui/dpns_contested_names_screen.rs +++ b/src/ui/dpns_contested_names_screen.rs @@ -820,7 +820,7 @@ impl ScreenLike for DPNSContestedNamesScreen { ); } } - action |= add_dpns_subscreen_chooser_panel(ctx); + action |= add_dpns_subscreen_chooser_panel(ctx, self.app_context.as_ref()); // Render the UI with the cloned contested_names vector egui::CentralPanel::default().show(ctx, |ui| { From 5c3222ab7958110cc3578b7e1669d983d231cb93 Mon Sep 17 00:00:00 2001 From: Odysseas Gabrielides Date: Wed, 13 Nov 2024 13:02:50 +0200 Subject: [PATCH 2/3] suggestion Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .../components/dpns_subscreen_chooser_panel.rs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/ui/components/dpns_subscreen_chooser_panel.rs b/src/ui/components/dpns_subscreen_chooser_panel.rs index 4eba3c16c..f7291f640 100644 --- a/src/ui/components/dpns_subscreen_chooser_panel.rs +++ b/src/ui/components/dpns_subscreen_chooser_panel.rs @@ -13,16 +13,14 @@ pub fn add_dpns_subscreen_chooser_panel(ctx: &Context, app_context: &AppContext) DPNSSubscreen::Owned, ]; - let active_screen = match app_context - .get_settings() - .expect("Expected settings ok") - .expect("Expected settings some") - .1 - { - ui::RootScreenType::RootScreenDPNSActiveContests => DPNSSubscreen::Active, - ui::RootScreenType::RootScreenDPNSPastContests => DPNSSubscreen::Past, - ui::RootScreenType::RootScreenDPNSOwnedNames => DPNSSubscreen::Owned, - _ => DPNSSubscreen::Active, + let active_screen = match app_context.get_settings() { + Ok(Some(settings)) => match settings.1 { + ui::RootScreenType::RootScreenDPNSActiveContests => DPNSSubscreen::Active, + ui::RootScreenType::RootScreenDPNSPastContests => DPNSSubscreen::Past, + ui::RootScreenType::RootScreenDPNSOwnedNames => DPNSSubscreen::Owned, + _ => DPNSSubscreen::Active, + }, + _ => DPNSSubscreen::Active, // Fallback to Active screen if settings unavailable }; SidePanel::left("dpns_subscreen_chooser_panel") From 52cd5876fdb23204bbbcf9b7c189f871a5d1c340 Mon Sep 17 00:00:00 2001 From: pauldelucia Date: Wed, 13 Nov 2024 19:12:19 +0700 Subject: [PATCH 3/3] remove unused import --- src/ui/components/dpns_subscreen_chooser_panel.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/components/dpns_subscreen_chooser_panel.rs b/src/ui/components/dpns_subscreen_chooser_panel.rs index f7291f640..c88a7771c 100644 --- a/src/ui/components/dpns_subscreen_chooser_panel.rs +++ b/src/ui/components/dpns_subscreen_chooser_panel.rs @@ -2,7 +2,7 @@ use crate::context::AppContext; use crate::ui::dpns_contested_names_screen::DPNSSubscreen; use crate::ui::RootScreenType; use crate::{app::AppAction, ui}; -use egui::{Color32, Context, Frame, Margin, RichText, SidePanel, Stroke}; +use egui::{Color32, Context, Frame, Margin, RichText, SidePanel}; pub fn add_dpns_subscreen_chooser_panel(ctx: &Context, app_context: &AppContext) -> AppAction { let mut action = AppAction::None;