aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Common/Notifications/NotificationItem.cs
blob: cf81237ca9758c5dd5021e569985de451b109769 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using System.Windows.Media;
using Tango.Core;

namespace Tango.PPC.Common.Notifications
{
    /// <summary>
    /// Represents a base notification item.
    /// </summary>
    public abstract class NotificationItem : ItemBase
    {
        public enum NotificationPriority
        {
            Low,
            Normal,
            High,
            VeryHigh,
            Critical,
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="NotificationItem"/> class.
        /// </summary>
        public NotificationItem() : base()
        {
            CanClose = true;
            Priority = NotificationPriority.Normal;
        }

        private bool _isExpanded;
        /// <summary>
        /// Gets or sets a value indicating whether the notification panel is expanded.
        /// </summary>
        public bool IsExpanded
        {
            get { return _isExpanded; }
            set { _isExpanded = value; RaisePropertyChangedAuto(); }
        }

        private bool _canClose;
        /// <summary>
        /// Gets or sets a value indicating whether this instance can close.
        /// </summary>
        public bool CanClose
        {
            get { return _canClose; }
            set { _canClose = value; RaisePropertyChangedAuto(); }
        }

        /// <summary>
        /// Gets or sets the notification priority.
        /// </summary>
        public NotificationPriority Priority { get; set; }

        /// <summary>
        /// Called when the item has been pressed.
        /// </summary>
        protected override void OnPreesed()
        {
            base.OnPreesed();

            if (CanClose)
            {
                Close();
            }
        }
    }
}
span>get; set; } private TeamMember _assignedTo; [Required(ErrorMessage = "Assigned To is required")] public TeamMember AssignedTo { get { return _assignedTo; } set { _assignedTo = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } } private String _stepsToReproduce; public String StepsToReproduce { get { return _stepsToReproduce; } set { _stepsToReproduce = value; RaisePropertyChangedAuto(); } } public ObservableCollection<BugAttachement> Attachments { get; set; } public ObservableCollection<BugAttachement> SelectedAttachements { get; set; } public RelayCommand AddAttachementCommand { get; set; } public RelayCommand RemoveSelectedAttachementsCommand { get; set; } public BugReportFullViewVM() : base() { Attachments = new ObservableCollection<BugAttachement>(); SelectedAttachements = new ObservableCollection<BugAttachement>(); SelectedAttachements.CollectionChanged += (_, __) => InvalidateRelayCommands(); TeamMembersAutoComplete = new AutoCompleteSource<TeamMember>(FilterTeamMembers); AddAttachementCommand = new RelayCommand(AddAttachement); RemoveSelectedAttachementsCommand = new RelayCommand(RemoveSelectedAttachements, () => SelectedAttachements.Count > 0); } public BugReportFullViewVM(Bug bug) : this() { if (bug != null) { Bug = bug; Title = Bug.Title; Description = Bug.Description; } } private List<TeamMember> FilterTeamMembers(string filter) { if (TeamMembers != null) { return TeamMembers.Where(x => String.IsNullOrWhiteSpace(filter) || x.DisplayName.ToLower().Contains(filter.ToLower())).ToList(); } return new List<TeamMember>(); } private async void AddAttachement() { var result = await StorageProvider.OpenFiles("Select file/s to attach"); if (result.Confirmed) { foreach (var file in result.SelectedItems) { String fileName = Path.GetFileName(file); if (new FileInfo(file).Length > 1000000 * 60) // 60MB limit { await NotificationProvider.ShowError($"The size of '{fileName}' exceeds the maximum 60 MB limit."); continue; } Attachments.Add(new BugAttachement() { Name = fileName, File = file, Description = fileName }); } InvalidateRelayCommands(); } } private void RemoveSelectedAttachements() { foreach (var attachement in SelectedAttachements.ToList()) { Attachments.Remove(attachement); } SelectedAttachements.Clear(); InvalidateRelayCommands(); } protected override void Accept() { if (Validate()) { Bug.Title = Title; Bug.Description = Description; Bug.Comments = Comments; Bug.StepsToReproduce = StepsToReproduce; Bug.AssignedTo = AssignedTo; Bug.Area = Area; Bug.Attachments = Attachments.ToList(); base.Accept(); } } } }