private Element CreateElement(ContentModel x) { if (x.Type.Equals("dir", StringComparison.OrdinalIgnoreCase)) { return(new StyledStringElement(x.Name, () => NavigationController.PushViewController( new SourceViewController(ViewModel.Username, ViewModel.Repository, ViewModel.Branch, x.Path), true), Images.Folder)); } else if (x.Type.Equals("file", StringComparison.OrdinalIgnoreCase)) { //If there's a size, it's a file if (x.Size != null) { return(new StyledStringElement(x.Name, () => NavigationController.PushViewController( new SourceInfoViewController(x.HtmlUrl, x.Path) { Title = x.Name }, true), Images.File)); } //If there is no size, it's most likey a submodule else { var nameAndSlug = x.GitUrl.Substring(x.GitUrl.IndexOf("/repos/") + 7); var repoId = new CodeHub.Utils.RepositoryIdentifier(nameAndSlug.Substring(0, nameAndSlug.IndexOf("/git"))); var sha = x.GitUrl.Substring(x.GitUrl.LastIndexOf("/") + 1); return(new StyledStringElement(x.Name, () => NavigationController.PushViewController( new SourceViewController(repoId.Owner, repoId.Name, sha) { Title = x.Name }, true), Images.Repo)); } } else { return(new StyledStringElement(x.Name) { Image = Images.File }); } }
protected MonoTouch.Dialog.Element CreateElement(IssueModel x) { var isPullRequest = x.PullRequest != null && !(string.IsNullOrEmpty(x.PullRequest.HtmlUrl)); var assigned = x.Assignee != null ? x.Assignee.Login : "******"; var kind = isPullRequest ? "Pull" : "Issue"; var commentString = x.Comments == 1 ? "1 comment".t() : x.Comments + " comments".t(); var el = new IssueElement(x.Number.ToString(), x.Title, assigned, x.State, commentString, kind, x.UpdatedAt); el.Tag = x; if (isPullRequest) { el.Tapped += () => { //Make sure the first responder is gone. View.EndEditing(true); var s1 = x.Url.Substring(x.Url.IndexOf("/repos/") + 7); var repoId = new CodeHub.Utils.RepositoryIdentifier(s1.Substring(0, s1.IndexOf("/issues"))); var info = new PullRequestViewController(repoId.Owner, repoId.Name, x.Number); //info.Controller.ModelChanged = newModel => ChildChangedModel(newModel, x); NavigationController.PushViewController(info, true); }; } else { el.Tapped += () => { //Make sure the first responder is gone. View.EndEditing(true); var s1 = x.Url.Substring(x.Url.IndexOf("/repos/") + 7); var repoId = new CodeHub.Utils.RepositoryIdentifier(s1.Substring(0, s1.IndexOf("/issues"))); var info = new IssueViewController(repoId.Owner, repoId.Name, x.Number); //info.ViewModel.ModelChanged = newModel => ChildChangedModel(newModel, x); NavigationController.PushViewController(info, true); }; } return(el); }