Horizon – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 using System.ComponentModel;
2 using System.Runtime.CompilerServices;
3 using System.Xml.Serialization;
4 using TrackedFolders.Properties;
5 using TrackedFolders.Utilities;
6  
7 namespace TrackedFolders
8 {
9 [XmlRoot(Namespace = "urn:horizon-tracked-folders-schema", ElementName = "TrackedFolders")]
10 public class TrackedFolders : INotifyPropertyChanged
11 {
12 #region Private Delegates, Events, Enums, Properties, Indexers and Fields
13  
14 private BindingListWithCollectionChanged<Folder> _folder = new BindingListWithCollectionChanged<Folder>();
15  
16 #endregion
17  
18 #region Public Enums, Properties and Fields
19  
20 public BindingListWithCollectionChanged<Folder> Folder
21 {
22 get => _folder;
23 set
24 {
25 if (Equals(value, _folder))
26 {
27 return;
28 }
29  
30 _folder = value;
31 OnPropertyChanged();
32 }
33 }
34  
35 #endregion
36  
37 #region Interface
38  
39 public event PropertyChangedEventHandler PropertyChanged;
40  
41 #endregion
42  
43 #region Private Methods
44  
45 [NotifyPropertyChangedInvocator]
46 protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
47 {
48 PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
49 }
50  
51 #endregion
52  
53 #region Public Methods
54  
55 public bool TryGet(string path, out Folder folder)
56 {
57 foreach (var tracked in Folder)
58 {
59 if (!path.IsPathEqual(tracked.Path) &&
60 !path.IsSubPathOf(tracked.Path))
61 {
62 continue;
63 }
64  
65 folder = tracked;
66  
67 return true;
68 }
69  
70 folder = null;
71  
72 return false;
73 }
74  
75 #endregion
76 }
77 }