Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 26 additions & 4 deletions src/ui/components/dpns_subscreen_chooser_panel.rs
Original file line number Diff line number Diff line change
@@ -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![
Expand All @@ -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(
Expand All @@ -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 => {
Expand Down
2 changes: 1 addition & 1 deletion src/ui/dpns_contested_names_screen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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| {
Expand Down