示例#1
0
        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;
        }
示例#2
0
        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);
        }
示例#3
0
        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;
                }
            }
        }
示例#4
0
        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,
                        }
                    },
                }
            };
        }