Merge branch 'Martin/remove-server-from-list' into 'master'

Feature: Delete button in the servers menu

See merge request veloren/veloren!3144
This commit is contained in:
Marcel 2022-01-26 10:20:15 +00:00
commit 0ebff57a59
4 changed files with 44 additions and 5 deletions

View File

@ -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",

View File

@ -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);
},
}
}

View File

@ -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 {

View File

@ -10,6 +10,7 @@ use iced::{
pub struct Screen {
back_button: button::State,
delete_button: button::State,
server_buttons: Vec<button::State>,
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(