diff --git a/src/ui/components/dpns_subscreen_chooser_panel.rs b/src/ui/components/dpns_subscreen_chooser_panel.rs index 472bbc96a..c88a7771c 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}; -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,16 @@ pub fn add_dpns_subscreen_chooser_panel(ctx: &Context) -> AppAction { DPNSSubscreen::Owned, ]; + 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") .default_width(250.0) .frame( @@ -25,8 +37,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| {