public override void ViewDidLoad() { Title = "Assignees"; NoItemsText = "No Assignees"; base.ViewDidLoad(); var vm = (IssueAssignedToViewModel)ViewModel; BindCollection(vm.Users, x => { var el = new UserElement(x.Username, string.Empty, string.Empty, x.Avatar); el.Tapped += () => { if (vm.SelectedUser != null && string.Equals(vm.SelectedUser.Username, x.Username)) vm.SelectedUser = null; else vm.SelectedUser = x; }; if (vm.SelectedUser != null && string.Equals(vm.SelectedUser.Username, x.Username, StringComparison.OrdinalIgnoreCase)) el.Accessory = UITableViewCellAccessory.Checkmark; else el.Accessory = UITableViewCellAccessory.None; return el; }); vm.Bind(x => x.SelectedUser, x => { if (Root.Count == 0) return; foreach (var m in Root[0].Elements.Cast<UserElement>()) m.Accessory = (x != null && string.Equals(vm.SelectedUser.Username, x.Username, StringComparison.OrdinalIgnoreCase)) ? UITableViewCellAccessory.Checkmark : UITableViewCellAccessory.None; Root.Reload(Root[0], UITableViewRowAnimation.None); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); var vm = (BaseUserCollectionViewModel)ViewModel; BindCollection(vm.Users, x => { var e = new UserElement(x.Username, string.Empty, string.Empty, x.Avatar); e.Tapped += () => vm.GoToUserCommand.Execute(x); return e; }); }
public void Render() { if (ViewModel.Commits == null || ViewModel.Commit == null) return; var titleMsg = (ViewModel.Commit.Message ?? string.Empty).Split(new [] { '\n' }, 2).FirstOrDefault(); var avatarUrl = ViewModel.Commit.Author?.User?.Links?.Avatar?.Href; var node = ViewModel.Node.Substring(0, ViewModel.Node.Length > 10 ? 10 : ViewModel.Node.Length); Title = node; HeaderView.Text = titleMsg ?? node; HeaderView.SubText = "Commited " + (ViewModel.Commit.Date).Humanize(); HeaderView.SetImage(new Avatar(avatarUrl).ToUrl(128), Images.Avatar); RefreshHeaderView(); var split = new SplitButtonElement(); split.AddButton("Comments", ViewModel.Comments.Items.Count.ToString()); split.AddButton("Participants", ViewModel.Commit.Participants.Count.ToString()); split.AddButton("Approvals", ViewModel.Commit.Participants.Count(x => x.Approved).ToString()); var commitModel = ViewModel.Commits; var root = new RootElement(Title) { UnevenRows = Root.UnevenRows }; root.Add(new Section { split }); var detailSection = new Section(); root.Add(detailSection); var user = ViewModel.Commit.Author?.User?.DisplayName ?? ViewModel.Commit.Author.Raw ?? "Unknown"; detailSection.Add(new MultilinedElement(user, ViewModel.Commit.Message) { CaptionColor = Theme.CurrentTheme.MainTextColor, ValueColor = Theme.CurrentTheme.MainTextColor, BackgroundColor = UIColor.White }); if (ViewModel.ShowRepository) { var repo = new StyledStringElement(ViewModel.Repository) { Accessory = UIKit.UITableViewCellAccessory.DisclosureIndicator, Lines = 1, Font = StyledStringElement.DefaultDetailFont, TextColor = StyledStringElement.DefaultDetailColor, Image = Images.Repo }; repo.Tapped += () => ViewModel.GoToRepositoryCommand.Execute(null); detailSection.Add(repo); } if (_viewSegment.SelectedSegment == 0) { var paths = ViewModel.Commits.GroupBy(y => { var filename = "/" + y.File; return filename.Substring(0, filename.LastIndexOf("/", System.StringComparison.Ordinal) + 1); }).OrderBy(y => y.Key); foreach (var p in paths) { var fileSection = new Section(p.Key); foreach (var x in p) { var y = x; var file = x.File.Substring(x.File.LastIndexOf('/') + 1); var sse = new ChangesetElement(file, x.Type, x.Diffstat.Added, x.Diffstat.Removed); sse.Tapped += () => ViewModel.GoToFileCommand.Execute(y); fileSection.Add(sse); } root.Add(fileSection); } } else if (_viewSegment.SelectedSegment == 1) { var commentSection = new Section(); foreach (var comment in ViewModel.Comments) { var name = comment.User.DisplayName ?? comment.User.Username; var imgUri = new Avatar(comment.User.Links?.Avatar?.Href); commentSection.Add(new NameTimeStringElement(name, comment.Content.Raw, comment.CreatedOn, imgUri.ToUrl(), Images.Avatar)); } if (commentSection.Elements.Count > 0) root.Add(commentSection); var addComment = new StyledStringElement("Add Comment") { Image = Images.Pencil }; addComment.Tapped += AddCommentTapped; root.Add(new Section { addComment }); } else if (_viewSegment.SelectedSegment == 2) { var likeSection = new Section(); likeSection.AddAll(ViewModel.Commit.Participants.Where(x => x.Approved).Select(l => { var el = new UserElement(l.User.DisplayName, string.Empty, string.Empty, l.User.Links.Avatar.Href); el.Tapped += () => ViewModel.GoToUserCommand.Execute(l.User.Username); return el; })); if (likeSection.Elements.Count > 0) root.Add(likeSection); StyledStringElement approveButton; if (ViewModel.Commit.Participants.Any(x => x.User.Username.Equals(ViewModel.GetApplication().Account.Username) && x.Approved)) { approveButton = new StyledStringElement("Unapprove") { Image = Images.Cancel }; approveButton.Tapped += () => this.DoWorkAsync("Unapproving...", ViewModel.Unapprove); } else { approveButton = new StyledStringElement("Approve") { Image = Images.Accept }; approveButton.Tapped += () => this.DoWorkAsync("Approving...", ViewModel.Approve); } root.Add(new Section { approveButton }); } Root = root; }