public AlphaFriendsPage() { Title = L["Rivals"]; List = new ListView { ItemTemplate = new DataTemplateEx(AlphaFactory.GetGitHubUserCellType()) .SetBindingList("ImageSourceUrl", "Text"), }; List.ItemTapped += (sender, e) => { DeleteButton.IsEnabled = null != e.Item; }; AddButton = new Button { VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.FillAndExpand, Text = L["Add"], Command = new Command ( o => AlphaFactory .MakeSureApp() .ShowSelectUserPage ( NewUser => AddUser(NewUser), Settings.GetFriendList() .Concat(Settings.UserName) .Where(i => !string.IsNullOrWhiteSpace(i)) .ToList() ) ), }; DeleteButton = new Button { VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.FillAndExpand, Text = L["Delete"], Command = new Command ( o => { var User = List.SelectedItem.GetValue <string>("Text"); if (null != User) { DeleteUser(User); } } ), }; }
public AlphaSelectUserPage(Action <string> aReciever, IEnumerable <string> ExistUsers = null) { Reciever = aReciever; Title = L["Select a user"]; List = new ListView { ItemTemplate = new DataTemplateEx(AlphaFactory.GetGitHubUserCellType()) .SetBindingList("ImageSourceUrl", "Text"), }; List.ItemTapped += (sender, e) => { var User = e.Item.GetValue <string>("Text"); if (null != User) { Debug.WriteLine($"Select User: {User}"); Reciever(User); Domain.AddRecentUser(User); } AlphaFactory.MakeSureApp().Navigation.PopAsync(); }; List.ItemsSource = Domain.GetRecentUsers() .Where(i => !(ExistUsers?.Contains(i) ?? false)) .Select(i => ListItem.Make(i)); var SearchCommand = new Command ( async() => { List.IsVisible = false; SearchButton.IsVisible = false; Indicator.IsVisible = true; Indicator.IsRunning = true; List.ItemsSource = new object[] { }; try { var Json = await Domain.GetStringFromUrlAsync ( GitHub.GetSearchUsersUrl(Search.Text) ); Device.BeginInvokeOnMainThread ( () => { try { List.ItemsSource = GitHub.SearchResult <GitHub.SearchUser> .Parse(Json) .Items .Select(i => ListItem.Make(i)); } catch (Exception Err) { Debug.WriteLine(Err); if (!string.IsNullOrWhiteSpace(Search.Text)) { List.ItemsSource = new[] { Search.Text.Trim() } .Select(i => ListItem.Make(i)); } } Indicator.IsRunning = false; Indicator.IsVisible = false; List.IsVisible = true; } ); } catch (Exception Err) { Debug.WriteLine(Err); if (!string.IsNullOrWhiteSpace(Search.Text)) { List.ItemsSource = new[] { Search.Text.Trim() } .Select(i => ListItem.Make(i)); } Indicator.IsRunning = false; Indicator.IsVisible = false; List.IsVisible = true; } } ); Search = new SearchBar { Placeholder = L["User's name etc."], SearchCommand = SearchCommand, }; Indicator = new ActivityIndicator { VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, IsVisible = false, }; SearchButton = new Button { VerticalOptions = LayoutOptions.StartAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand, Text = L["Search"], Command = SearchCommand, IsVisible = false, }; Search.TextChanged += (sender, e) => { var IsNullOrWhiteSpace = string.IsNullOrWhiteSpace(Search.Text); List.IsVisible = IsNullOrWhiteSpace; Indicator.IsVisible = false; SearchButton.IsVisible = !IsNullOrWhiteSpace; }; Content = new StackLayout { Orientation = StackOrientation.Vertical, //Spacing = 1.0, //BackgroundColor = Color.Gray, Children = { Search, List, Indicator, SearchButton, } }; }
public AlphaFriendsPage() { Title = L["Rivals"]; List = new ListView { ItemTemplate = new DataTemplateEx(AlphaFactory.GetGitHubUserCellType()) .SetBindingList("ImageSource", "Text"), }; List.ItemTapped += (sender, e) => { DeleteButton.IsEnabled = null != (e.Item as ListItem); }; AddButton = new Button { VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.FillAndExpand, Text = L["Add"], Command = new Command ( o => AlphaFactory .MakeSureApp() .ShowSelectUserPage ( NewUser => { Settings.SetFriend(Settings.GetFriendCount(), NewUser); UpdateList(); IsChanged = true; }, Settings.GetFriendList() .Concat(Settings.UserName) .Where(i => !string.IsNullOrWhiteSpace(i)) .ToList() ) ), }; DeleteButton = new Button { VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.FillAndExpand, Text = L["Delete"], Command = new Command ( o => { var SelectedItem = List.SelectedItem as ListItem; if (null != SelectedItem) { var OldFriendList = Settings.GetFriendList(); for (var i = OldFriendList.IndexOf(SelectedItem.Text); i < OldFriendList.Count(); ++i) { var NewFriend = OldFriendList.Skip(i + 1).FirstOrDefault(""); Settings.SetFriend(i, NewFriend); } IsChanged = true; UpdateList(); } } ), }; }