private void ShowAttachments() { FormUtil.Reselect <Attachment>(attachmentsListView, () => { Attachment[] attachments = mTicket.GetAttachmentsWithoutContents(mContext); attachmentsListView.BeginUpdate(); attachmentsListView.Items.Clear(); foreach (var attachment in attachments) { var lvi = new ListViewItem() { Text = attachment.Name, Tag = attachment, }; lvi.SubItems.Add($"{attachment.Size}"); attachmentsListView.Items.Add(lvi); } attachmentsListView.EndUpdate(); attachmentsListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }); UpdateButtonsEnabledProperty(); }
private void ShowMilestones() { FormUtil.Reselect <Milestone>(milestonesListView, () => { Milestone[] milestones = Project.GetMilestones(mContext); milestonesListView.BeginUpdate(); milestonesListView.Items.Clear(); foreach (var milestone in milestones) { string milestoneState; switch (milestone.State) { case MilestoneState.Active: milestoneState = Resources.String_Active; break; case MilestoneState.Completed: milestoneState = Resources.String_Completed; break; case MilestoneState.Cancelled: milestoneState = Resources.String_Cancelled; break; default: milestoneState = string.Empty; break; } Ticket[] tickets = Ticket.GetTickets(mContext, milestone.ID); var lvi = new ListViewItem() { Text = milestone.Name, Tag = milestone, }; lvi.SubItems.Add(milestoneState); lvi.SubItems.Add(tickets.Count(t => t.State.IsOpen()).ToString()); lvi.SubItems.Add(tickets.Length.ToString()); milestonesListView.Items.Add(lvi); } milestonesListView.EndUpdate(); milestonesListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }); UpdateButtonsEnabledProperty(); ShowTickets(); }
private void ShowTickets() { if (mResettingTicketFilters) { return; } FormUtil.Reselect <Ticket>(ticketsListView, () => { string summaryFilter = ticketSummaryTextBox.Text; var reporterFilter = (string)ticketReportersComboBox.SelectedItem; var assignedFilter = (string)ticketAssignedToComboBox.SelectedItem; string milestoneFilter = (string)ticketMilestoneComboBox.SelectedItem; var stateFilter = FormUtil.CastBoxToEnum <MetaTicketState>(ticketStateComboBox); var severityFilter = FormUtil.CastBoxToEnum <TicketSeverity>(ticketSeverityComboBox); var priorityFilter = FormUtil.CastBoxToEnum <TicketPriority>(ticketPriorityComboBox); var typeFilter = FormUtil.CastBoxToEnum <TicketType>(ticketTypeComboBox); Ticket[] tickets = Project.GetTickets(mContext); tickets = tickets.Where(t => { bool satisfiesSummaryFilter = FormUtil.SatisfiesFilterContains(t.Summary, summaryFilter); bool satisfiesReporterFilter = FormUtil.SatisfiesFilterMatch(t.ReportedBy, reporterFilter); bool satisfiesAssignedFilter = FormUtil.SatisfiesFilterMatch(t.AssignedTo, assignedFilter); bool satisfiesMilestoneFilter = FormUtil.SatisfiesFilterMatch(t.GetMilestone(mContext).Name, milestoneFilter); bool satisfiesStateFilter = stateFilter == null || stateFilter.Value.AppliesTo(t.State); bool satisfiesSeverityFilter = FormUtil.SatisfiesFilterEnum(t.Severity, severityFilter); bool satisfiesPriorityFilter = FormUtil.SatisfiesFilterEnum(t.Priority, priorityFilter); bool satisfiesTypeFilter = FormUtil.SatisfiesFilterEnum(t.Type, typeFilter); bool satisfiesCreatedFilter = FormUtil.SatisfiesFilterContains(t.CreateTimestamp, mTicketCreateFilter); bool satisfiesModifiedFilter = FormUtil.SatisfiesFilterContains(t.ModifyTimestamp, mTicketModifyFilter); return (satisfiesSummaryFilter && satisfiesReporterFilter && satisfiesAssignedFilter && satisfiesMilestoneFilter && satisfiesStateFilter && satisfiesSeverityFilter && satisfiesPriorityFilter && satisfiesTypeFilter && satisfiesCreatedFilter && satisfiesModifiedFilter); }).ToArray(); // Cache milestones. var milestoneNames = new Dictionary <int, string>(); Milestone[] milestones = Milestone.GetMilestones(mContext); foreach (Milestone milestone in milestones) { milestoneNames[milestone.ID] = milestone.Name; } ticketsListView.BeginUpdate(); ticketsListView.Items.Clear(); foreach (var ticket in tickets) { string ticketPriority = TicketChangeFormatter.Default.TranslateTicketPriority(ticket.Priority); string ticketType = TicketChangeFormatter.Default.TranslateTicketType(ticket.Type); string ticketSeverity = TicketChangeFormatter.Default.TranslateTicketSeverity(ticket.Severity); string ticketState = TicketChangeFormatter.Default.TranslateTicketState(ticket.State); var lvi = new ListViewItem(); lvi.Text = $"{ticket.TicketNumber}"; lvi.SubItems.Add(ticket.Summary); lvi.SubItems.Add(milestoneNames[ticket.MilestoneID]); lvi.SubItems.Add(ticketPriority); lvi.SubItems.Add(ticketType); lvi.SubItems.Add(ticketSeverity); lvi.SubItems.Add(ticketState); lvi.Tag = ticket; ticketsListView.Items.Add(lvi); } ticketsListView.EndUpdate(); ticketsListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }); UpdateButtonsEnabledProperty(); }