async void OnItemTapped(object sender, ItemTappedEventArgs e) { if (e.Item == null) { return; } ServerDisplay server = e.Item as ServerDisplay; var action = await DisplayActionSheet("Edit Server", "Cancel", "Delete", "Edit"); if (action.Equals("Delete")) { var reassure = await DisplayAlert("Warning", "Are you sure you want to delete server: \n" + server.ToString(), "Yes", "No"); if (reassure) { ServerList.Remove(server); SaveServers(ServerList); } } else if (action.Equals("Edit")) { var popup = new ServerPopupPage(server.host, server.port); await PopupNavigation.PushAsync(popup); } ((ListView)sender).SelectedItem = null; return; }
public override bool Equals(System.Object obj) { if (obj == null) { return(false); } ServerDisplay otherServer = obj as ServerDisplay; if (otherServer.DisplayName.Equals(this.DisplayName)) { return(true); } return(false); }
async void Yes_Clicked(object sender, EventArgs args) { if (ServerHost.Text == "" || ServerPort.Text == "") { await DisplayAlert("Error", "Input cannot be empty", "OK"); return; } else { ServerDisplay server; try { server = new ServerDisplay(ServerHost.Text, int.Parse(ServerPort.Text)); if (server.port < 0 || server.port > 65535) { throw new FormatException(); } } catch (FormatException e) { await DisplayAlert("Error", "Invalid port:\nPort can only be number from 0-65535.", "OK"); return; } catch (OverflowException e) { await DisplayAlert("Error", "Invalid port:\nPort can only be number from 0-65535.", "OK"); return; } catch (Exception e) { await DisplayAlert("Fatal", "Invalid Server", "OK"); return; } try { TcpClient client = new TcpClient(); var result = client.BeginConnect(server.host, server.port, null, null); var success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(1)); if (!success) { throw new Exception("Failed to connect"); } } catch (Exception e) { await DisplayAlert("Fatal", "Invalid Server", "OK"); return; } if (SettingsPage.ServerList.Contains(server)) { await DisplayAlert("Alert", "You have added this server", "OK"); } else { SettingsPage.ServerList.Add(server); SettingsPage.ServerList.Remove(oldServer); if (Application.Current.Properties.ContainsKey("Servers")) { Application.Current.Properties["Servers"] = SettingsPage.ServerList; } else { Application.Current.Properties.Add("Servers", SettingsPage.ServerList); } SaveServers(SettingsPage.ServerList); await PopupNavigation.PopAsync(); return; } } }
public ServerPopupPage(string host, int port) { oldServer = new ServerDisplay(host, port); ServerHost = new Entry { Text = host }; ServerHost.HorizontalOptions = LayoutOptions.FillAndExpand; ServerPort = new Entry { Text = port.ToString() }; ServerPort.HorizontalOptions = LayoutOptions.FillAndExpand; Button yes = new Button { Text = "Yes", HeightRequest = 3, }; yes.Clicked += Yes_Clicked; Button no = new Button { Text = "No" }; no.Clicked += No_Clicked; BackgroundColor = new Color(0, 0, 0, 0.4); Content = new StackLayout { Padding = 10, BackgroundColor = Color.White, HorizontalOptions = LayoutOptions.CenterAndExpand, Spacing = 5, VerticalOptions = LayoutOptions.CenterAndExpand, Children = { new StackLayout { Orientation = StackOrientation.Horizontal, Children = { new Label { Text = "Host", }, ServerHost, } }, new StackLayout { Orientation = StackOrientation.Horizontal, Children = { new Label { Text = "Port", }, ServerPort, } }, new StackLayout { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.CenterAndExpand, Children = { yes, no, } }, } }; }