From a86ed4929351dc5a2c05e6fcd9a5f70c99c83cde Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 25 Jan 2022 19:48:19 +0200 Subject: [PATCH 1/2] added message and event for deleting a server from the list --- voxygen/src/menu/main/mod.rs | 8 ++++++++ voxygen/src/menu/main/ui/mod.rs | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/voxygen/src/menu/main/mod.rs b/voxygen/src/menu/main/mod.rs index 22aed22d1c..bd6a14f170 100644 --- a/voxygen/src/menu/main/mod.rs +++ b/voxygen/src/menu/main/mod.rs @@ -353,6 +353,14 @@ impl PlayState for MainMenuState { .client() .map(|init| init.auth_trust(auth_server, trust)); }, + MainMenuEvent::DeleteServer { server_index } => { + let net_settings = &mut global_state.settings.networking; + net_settings.servers.remove(server_index); + + global_state + .settings + .save_to_file_warn(&global_state.config_dir); + }, } } diff --git a/voxygen/src/menu/main/ui/mod.rs b/voxygen/src/menu/main/ui/mod.rs index b166d3877f..0edc03a5f8 100644 --- a/voxygen/src/menu/main/ui/mod.rs +++ b/voxygen/src/menu/main/ui/mod.rs @@ -87,6 +87,9 @@ pub enum Event { // Note: Keeping in case we re-add the disclaimer //DisclaimerAccepted, AuthServerTrust(String, bool), + DeleteServer { + server_index: usize, + }, } pub struct LoginInfo { @@ -164,6 +167,7 @@ enum Message { TrustPromptAdd, TrustPromptCancel, CloseError, + DeleteServer, /* Note: Keeping in case we re-add the disclaimer *AcceptDisclaimer, */ } @@ -423,6 +427,11 @@ impl Controls { *error = None; } }, + Message::DeleteServer => { + events.push(Event::DeleteServer { + server_index: self.selected_server_index.unwrap(), + }); + }, /* Note: Keeping in case we re-add the disclaimer */ /*Message::AcceptDisclaimer => { if let Screen::Disclaimer { .. } = &self.screen { From 700f70966498b2de71676966e96455f0f49f020a Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 25 Jan 2022 19:48:58 +0200 Subject: [PATCH 2/2] added delete button in the settings window which deletes a server from the list --- assets/voxygen/i18n/en/common.ron | 1 + voxygen/src/menu/main/ui/servers.rs | 31 ++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/assets/voxygen/i18n/en/common.ron b/assets/voxygen/i18n/en/common.ron index 55159fa1fb..995e3a7b67 100644 --- a/assets/voxygen/i18n/en/common.ron +++ b/assets/voxygen/i18n/en/common.ron @@ -38,6 +38,7 @@ "common.random": "Random", "common.empty": "Empty", "common.confirm": "Confirm", + "common.delete_server": "Delete Server", // Settings Window title "common.interface_settings": "Interface Settings", diff --git a/voxygen/src/menu/main/ui/servers.rs b/voxygen/src/menu/main/ui/servers.rs index 4e4f20343f..0f35a18aaa 100644 --- a/voxygen/src/menu/main/ui/servers.rs +++ b/voxygen/src/menu/main/ui/servers.rs @@ -10,6 +10,7 @@ use iced::{ pub struct Screen { back_button: button::State, + delete_button: button::State, server_buttons: Vec, servers_list: scrollable::State, } @@ -18,6 +19,7 @@ impl Screen { pub fn new() -> Self { Self { back_button: Default::default(), + delete_button: Default::default(), server_buttons: vec![], servers_list: Default::default(), } @@ -50,6 +52,19 @@ impl Screen { .width(Length::Fill) .align_x(Align::Center); + let delete_button = Container::new( + Container::new(neat_button( + &mut self.delete_button, + i18n.get("common.delete_server"), + FILL_FRAC_ONE, + button_style, + Some(Message::DeleteServer), + )) + .max_width(200), + ) + .width(Length::Fill) + .align_x(Align::Center); + let mut list = Scrollable::new(&mut self.servers_list) .spacing(8) .align_items(Align::Start) @@ -104,11 +119,17 @@ impl Screen { Container::new( Container::new( - Column::with_children(vec![title.into(), list.into(), back_button.into()]) - .width(Length::Fill) - .height(Length::Fill) - .spacing(10) - .padding(20), + Column::with_children(vec![ + title.into(), + list.into(), + Row::with_children(vec![delete_button.into(), back_button.into()]) + .width(Length::Fill) + .into(), + ]) + .width(Length::Fill) + .height(Length::Fill) + .spacing(10) + .padding(20), ) .style( style::container::Style::color_with_double_cornerless_border(