protected Element CreateElement(IssueModel x) { var assigned = x.Responsible != null ? x.Responsible.Username : "******"; var kind = x.Metadata.Kind; if (kind == "enhancement") kind = "enhance"; var commentString = x.CommentCount == 1 ? "1 comment" : x.CommentCount + " comments"; var el = new IssueElement(x.LocalId.ToString(), x.Title, assigned, x.Status, commentString, kind, x.UtcLastUpdated); el.Tapped += () => { //Make sure the first responder is gone. View.EndEditing(true); ViewModel.GoToIssueCommand.Execute(x); }; return el; }
public void CreateIssue(IssueModel issue) { if (!DoesIssueBelong(issue)) return; Issues.Items.Add(issue); }
private bool DoesIssueBelong(IssueModel model) { var filter = Issues.Filter; if (filter == null) return true; if (filter.Status != null && !filter.Status.IsDefault()) if (!PropertyToUrl(null, filter.Status).Any(x => x.Item2.Equals(model.Status))) return false; if (filter.Kind != null && !filter.Kind.IsDefault()) if (!PropertyToUrl(null, filter.Kind).Any(x => x.Item2.Equals(model.Metadata.Kind))) return false; if (filter.Priority != null && !filter.Priority.IsDefault()) if (!PropertyToUrl(null, filter.Priority).Any(x => x.Item2.Equals(model.Priority))) return false; if (!string.IsNullOrEmpty(filter.AssignedTo)) if (!object.Equals(filter.AssignedTo, (model.Responsible == null ? "unassigned" : model.Responsible.Username))) return false; if (!string.IsNullOrEmpty(filter.ReportedBy)) if (model.ReportedBy == null || !object.Equals(filter.ReportedBy, model.ReportedBy.Username)) return false; return true; }
private void ScrollToModel(IssueModel issue, bool animate = false) { int s, r = 0; bool done = false; for (s = 0; s < Root.Count; s++) { for (r = 0; r < Root[s].Count; r++) { var el = Root[s][r] as IssueElement; if (el != null && ((IssueModel)el.Tag).LocalId == issue.LocalId) { done = true; break; } } if (done) break; } try { TableView.ScrollToRow(NSIndexPath.FromRowSection(r, s), UITableViewScrollPosition.Top, animate); } catch { } }
private void OnCreateIssue(IssueModel issue) { if (!DoesIssueBelong(issue)) return; AddItems(new List<IssueModel>() { issue }); ScrollToModel(issue); }
private IssueElement CreateElement(IssueModel model) { var assigned = model.Responsible != null ? model.Responsible.Username : "******"; var kind = model.Metadata.Kind; if (kind.ToLower().Equals("enhancement")) kind = "enhance"; var el = new IssueElement(model.LocalId.ToString(), model.Title, assigned, model.Status, model.Priority, kind, model.UtcLastUpdated); el.Tag = model; el.Tapped += () => { //Make sure the first responder is gone. View.EndEditing(true); var info = new IssueInfoController(User, Slug, model.LocalId) { ModelChanged = newModel => ChildChangedModel(newModel, model) }; NavigationController.PushViewController(info, true); }; return el; }
private void ChildChangedModel(IssueModel changedModel, IssueModel oldModel) { //If null then it's been deleted! if (changedModel == null) { var c = TableView.ContentOffset; var m = Model as List<IssueModel>; m.RemoveAll(a => a.LocalId == oldModel.LocalId); Render(); TableView.ContentOffset = c; } else { if (DoesIssueBelong(changedModel)) { AddItems(new List<IssueModel>(1) { changedModel }); ScrollToModel(oldModel); } else { var c = TableView.ContentOffset; var m = Model as List<IssueModel>; m.RemoveAll(a => a.LocalId == changedModel.LocalId); Render(); TableView.ContentOffset = c; } } }
void EditingComplete(IssueModel model) { if (ModelChanged != null) ModelChanged(model); //If it's null then we've deleted it! if (model == null) { _issueRemoved = true; } //Otherwise let's just reassign the model and call the OnRefresh to update the screen! else { var m = Model as InternalIssueInfoModel; m.Issue = model; Render(); } }