public override void ViewDidLoad() { Title = "Pull Requests"; //NoItemsText = "No Pull Requests"; base.ViewDidLoad(); _viewSegment = new UISegmentedControl(new object[] { "Open", "Closed" }); _segmentBarButtonItem = new UIBarButtonItem(_viewSegment) { Width = View.Frame.Width - 10f }; ToolbarItems = new[] { new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), _segmentBarButtonItem, new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace) }; _viewSegment.ValueChanged += (sender, args) => ViewModel.SelectedFilter = _viewSegment.SelectedSegment; ViewModel.WhenAnyValue(x => x.SelectedFilter).Subscribe(x => _viewSegment.SelectedSegment = x); this.BindList(ViewModel.PullRequests, s => { var sse = new NameTimeStringElement { Name = s.Title ?? "No Title", String = (s.Body ?? string.Empty).Replace('\n', ' ').Replace("\r", ""), Lines = 3, Time = s.CreatedAt.ToDaysAgo(), Image = Theme.CurrentTheme.AnonymousUserImage, ImageUri = new Uri(s.User.AvatarUrl) }; sse.Tapped += () => ViewModel.GoToPullRequestCommand.Execute(s); return(sse); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); var vm = (PullRequestsViewModel)ViewModel; _segmentBarButton.Width = View.Frame.Width - 10f; var set = this.CreateBindingSet <PullRequestsView, PullRequestsViewModel>(); set.Bind(_viewSegment).To(x => x.SelectedFilter); set.Apply(); BindCollection(vm.PullRequests, s => { var sse = new NameTimeStringElement { Name = s.Title, String = s.Description.Replace('\n', ' ').Replace("\r", ""), Lines = 3, Time = s.UpdatedOn.ToDaysAgo(), Image = Theme.CurrentTheme.AnonymousUserImage, ImageUri = new Uri(s.Author.Links.Avatar.Href) }; sse.Tapped += () => vm.GoToPullRequestCommand.Execute(s); return(sse); }); }
public override void ViewDidLoad() { base.ViewDidLoad(); var sec = new Section(); var root = new RootElement("Pull Requests") { UnevenRows = true }; root.Add(sec); Root = root; ViewModel.PullRequests.Changed.Subscribe(_ => sec.Reset(ViewModel.PullRequests.Select(x => { var element = new NameTimeStringElement { Name = x.Author.User.DisplayName, String = x.Description, Time = UnixDateTimeHelper.FromUnixTime(x.UpdatedDate).ToDaysAgo(), Lines = 4 }; element.Tapped += () => ViewModel.GoToPullRequestCommand.Execute(x); return(element); }))); var selector = new UISegmentedControl(new object[] { "Open", "Merged", "Declined" }); ViewModel.WhenAnyValue(x => x.SelectedView).Subscribe(x => selector.SelectedSegment = x); selector.ValueChanged += (sender, e) => ViewModel.SelectedView = selector.SelectedSegment; NavigationItem.TitleView = selector; }
public override void ViewDidLoad() { NoItemsText = "No Gists".t(); base.ViewDidLoad(); var vm = (GistsViewModel)ViewModel; BindCollection(vm.Gists, x => { var str = string.IsNullOrEmpty(x.Description) ? "Gist " + x.Id : x.Description; var sse = new NameTimeStringElement { Time = x.UpdatedAt.ToDaysAgo(), String = str, Lines = 4, Image = Theme.CurrentTheme.AnonymousUserImage }; sse.Name = (x.User == null) ? "Anonymous" : x.User.Login; sse.ImageUri = (x.User == null) ? null : new Uri(x.User.AvatarUrl); sse.Tapped += () => vm.GoToGistCommand.Execute(x); return(sse); }); }
public override void ViewDidLoad() { Title = "Commits".t(); Root.UnevenRows = true; base.ViewDidLoad(); var vm = (PullRequestCommitsViewModel)ViewModel; BindCollection(vm.Commits, x => { var msg = x.Message ?? string.Empty; var firstLine = msg.IndexOf("\n", StringComparison.Ordinal); var desc = firstLine > 0 ? msg.Substring(0, firstLine) : msg; string username; if (x.Author.User != null) { username = x.Author.User.DisplayName ?? x.Author.User.Username; } else { var bracketStart = x.Author.Raw.IndexOf("<", StringComparison.Ordinal); username = x.Author.Raw.Substring(0, bracketStart > 0 ? bracketStart : x.Author.Raw.Length); } var el = new NameTimeStringElement { Name = username, Time = x.Date.ToDaysAgo(), String = desc, Lines = 4 }; el.Tapped += () => vm.GoToChangesetCommand.Execute(x); return(el); }); }
public void RenderGist(GistModel model) { _shareButton.Enabled = _userButton.Enabled = model != null; var root = new RootElement(Title) { UnevenRows = true }; var sec = new Section(); _header.Subtitle = "Updated " + model.UpdatedAt.ToDaysAgo(); var str = string.IsNullOrEmpty(model.Description) ? "Gist " + model.Id : model.Description; var d = new NameTimeStringElement() { Time = model.UpdatedAt.ToDaysAgo(), String = str, Image = Theme.CurrentTheme.AnonymousUserImage, BackgroundColor = UIColor.White, UseBackgroundColor = true, }; //Sometimes there's no user! d.Name = (model.User == null) ? "Anonymous" : model.User.Login; d.ImageUri = (model.User == null) ? null : new Uri(model.User.AvatarUrl); sec.Add(d); var sec2 = new Section(); foreach (var file in model.Files.Keys) { var sse = new StyledStringElement(file, model.Files[file].Size + " bytes", UITableViewCellStyle.Subtitle) { Accessory = MonoTouch.UIKit.UITableViewCellAccessory.DisclosureIndicator, LineBreakMode = MonoTouch.UIKit.UILineBreakMode.TailTruncation, Lines = 1 }; var fileSaved = file; var gistFileModel = model.Files[fileSaved]; if (string.Equals(gistFileModel.Language, "markdown", StringComparison.OrdinalIgnoreCase)) { sse.Tapped += () => NavigationController.PushViewController(new GistViewableFileController(gistFileModel, ViewModel.Gist.HtmlUrl), true); } else { sse.Tapped += () => NavigationController.PushViewController(new GistFileViewController(gistFileModel, ViewModel.Gist.HtmlUrl), true); } sec2.Add(sse); } _header.SetNeedsDisplay(); root.Add(new [] { sec, sec2 }); Root = root; }
public override void ViewDidLoad() { Title = "Commits".t(); Root.UnevenRows = true; base.ViewDidLoad(); var vm = (CommitsViewModel)ViewModel; BindCollection(vm.Commits, x => { var msg = x.Commit.Message ?? string.Empty; var firstLine = msg.IndexOf("\n", StringComparison.Ordinal); var desc = firstLine > 0 ? msg.Substring(0, firstLine) : msg; string login; var date = DateTimeOffset.MinValue; if (x.Commit.Author != null && !string.IsNullOrEmpty(x.Commit.Author.Name)) { login = x.Commit.Author.Name; } else if (x.Commit.Committer != null && !string.IsNullOrEmpty(x.Commit.Committer.Name)) { login = x.Commit.Committer.Name; } else if (x.Author != null) { login = x.Author.Login; } else if (x.Committer != null) { login = x.Committer.Login; } else { login = "******"; } if (x.Commit.Committer != null) { date = x.Commit.Committer.Date; } var el = new NameTimeStringElement { Name = login, Time = date.ToDaysAgo(), String = desc, Lines = 4 }; el.Tapped += () => vm.GoToChangesetCommand.Execute(x); return(el); }); }
public override void ViewDidLoad() { Title = "Commits".t(); Root.UnevenRows = true; base.ViewDidLoad(); var vm = (CommitsViewModel)ViewModel; BindCollection(vm.Commits, x => { var msg = x.Message ?? string.Empty; var firstLine = msg.IndexOf("\n", StringComparison.Ordinal); var desc = firstLine > 0 ? msg.Substring(0, firstLine) : msg; var el = new NameTimeStringElement { Name = x.Author, Time = x.Utctimestamp.ToDaysAgo(), String = desc, Lines = 4 }; el.Tapped += () => vm.GoToChangesetCommand.Execute(x); return(el); }); }
protected GistsViewController(GistsViewModel viewModel) { SearchPlaceholder = "Search Gists".t(); NoItemsText = "No Gists".t(); ViewModel = viewModel; BindCollection(viewModel.Gists, x => { var str = string.IsNullOrEmpty(x.Description) ? "Gist " + x.Id : x.Description; var sse = new NameTimeStringElement() { Time = x.UpdatedAt.ToDaysAgo(), String = str, Lines = 4, Image = Theme.CurrentTheme.AnonymousUserImage }; sse.Name = (x.User == null) ? "Anonymous" : x.User.Login; sse.ImageUri = (x.User == null) ? null : new Uri(x.User.AvatarUrl); sse.Tapped += () => NavigationController.PushViewController(new GistViewController(x), true); return(sse); }); }
public PullRequestsViewController(string user, string repo) { Root.UnevenRows = true; Title = "Pull Requests".t(); SearchPlaceholder = "Search Pull Requests".t(); NoItemsText = "No Pull Requests".t(); ViewModel = new PullRequestsViewModel(user, repo); BindCollection(ViewModel.PullRequests, s => { var sse = new NameTimeStringElement { Name = s.Title, String = s.Body.Replace('\n', ' ').Replace("\r", ""), Lines = 3, Time = s.CreatedAt.ToDaysAgo(), Image = Theme.CurrentTheme.AnonymousUserImage, ImageUri = new Uri(s.User.AvatarUrl) }; sse.Tapped += () => NavigationController.PushViewController(new PullRequestViewController(ViewModel.Username, ViewModel.Repository, s.Number), true); return(sse); }); ViewModel.Bind(x => x.IsLoading, Loading); }
public override void ViewDidLoad() { Title = ViewModel.Title; Root = new RootElement(ViewModel.Title) { UnevenRows = true }; Bind(ViewModel.WhenAnyValue(x => x.Commits), x => { var element = new NameTimeStringElement { Name = x.Author.Name, Time = AtlassianStashSharp.Helpers.UnixDateTimeHelper.FromUnixTime(x.AuthorTimestamp).ToDaysAgo(), String = x.Message, Lines = 4 }; element.Tapped += () => ViewModel.GoToCommitCommand.Execute(x); return(element); }); base.ViewDidLoad(); }
private void DoBinding() { BindCollection(ViewModel, x => x.Commits, x => { var desc = (x.Commit.Message ?? "").Replace("\n", " ").Trim(); string login; var date = DateTime.MinValue; if (x.Committer != null) { login = x.Committer.Login; } else if (x.Author != null) { login = x.Author.Login; } else if (x.Commit.Committer != null) { login = x.Commit.Committer.Name; } else { login = "******"; } if (x.Commit.Committer != null) { date = x.Commit.Committer.Date; } var el = new NameTimeStringElement { Name = login, Time = date.ToDaysAgo(), String = desc, Lines = 4 }; el.Tapped += () => NavigationController.PushViewController(new ChangesetViewController(ViewModel.Username, ViewModel.Repository, x.Sha), true); return(el); }); }
public void RenderGist() { if (ViewModel.Gist == null) { return; } var model = ViewModel.Gist; _shareButton.Enabled = _userButton.Enabled = model != null; var root = new RootElement(Title) { UnevenRows = true }; var sec = new Section(); root.Add(sec); var str = string.IsNullOrEmpty(model.Description) ? "Gist " + model.Id : model.Description; var d = new NameTimeStringElement() { Time = model.UpdatedAt.ToDaysAgo(), String = str, Image = Theme.CurrentTheme.AnonymousUserImage }; //Sometimes there's no user! d.Name = (model.User == null) ? "Anonymous" : model.User.Login; d.ImageUri = (model.User == null) ? null : new Uri(model.User.AvatarUrl); sec.Add(d); var sec2 = new Section("Files"); root.Add(sec2); foreach (var file in model.Files.Keys) { var sse = new StyledStringElement(file, model.Files[file].Size + " bytes", UITableViewCellStyle.Subtitle) { Accessory = UITableViewCellAccessory.DisclosureIndicator, LineBreakMode = UILineBreakMode.TailTruncation, Lines = 1 }; var fileSaved = file; var gistFileModel = model.Files[fileSaved]; // if (string.Equals(gistFileModel.Language, "markdown", StringComparison.OrdinalIgnoreCase)) // sse.Tapped += () => ViewModel.GoToViewableFileCommand.Execute(gistFileModel); // else sse.Tapped += () => ViewModel.GoToFileSourceCommand.Execute(gistFileModel); sec2.Add(sse); } if (ViewModel.Comments.Items.Count > 0) { var sec3 = new Section("Comments"); foreach (var comment in ViewModel.Comments) { var el = new NameTimeStringElement { Name = "Anonymous", Image = Theme.CurrentTheme.AnonymousUserImage, String = comment.Body, Time = comment.CreatedAt.ToDaysAgo(), }; if (comment.User != null) { el.Name = comment.User.Login; el.ImageUri = new Uri(comment.User.AvatarUrl); } sec3.Add(el); } root.Add(sec3); } Root = root; }