示例#1
0
		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;
		}
示例#2
0
 public void CreateIssue(IssueModel issue)
 {
     if (!DoesIssueBelong(issue))
         return;
     Issues.Items.Add(issue);
 }
示例#3
0
        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();
            }
        }