root / trunk / Pithos.Client.WPF / FileProperties / ContainerPropertiesViewModel.cs @ 20e9a378
History | View | Annotate | Download (4.1 kB)
1 | 42800be8 | Panagiotis Kanavos | using System; |
---|---|---|---|
2 | 42800be8 | Panagiotis Kanavos | using System.Collections.Concurrent; |
3 | 42800be8 | Panagiotis Kanavos | using System.Collections.Generic; |
4 | 27361404 | Panagiotis Kanavos | using System.Collections.ObjectModel; |
5 | 42800be8 | Panagiotis Kanavos | using System.ComponentModel.Composition; |
6 | 42800be8 | Panagiotis Kanavos | using System.Diagnostics.Contracts; |
7 | 42800be8 | Panagiotis Kanavos | using System.Linq; |
8 | 42800be8 | Panagiotis Kanavos | using System.Text; |
9 | 42800be8 | Panagiotis Kanavos | using Caliburn.Micro; |
10 | 42800be8 | Panagiotis Kanavos | using Pithos.Network; |
11 | 42800be8 | Panagiotis Kanavos | |
12 | 42800be8 | Panagiotis Kanavos | namespace Pithos.Client.WPF.FileProperties |
13 | 42800be8 | Panagiotis Kanavos | { |
14 | 42800be8 | Panagiotis Kanavos | [Export(typeof(ContainerPropertiesViewModel))] |
15 | 42800be8 | Panagiotis Kanavos | public class ContainerPropertiesViewModel:Screen |
16 | 42800be8 | Panagiotis Kanavos | { |
17 | 42800be8 | Panagiotis Kanavos | /// <summary> |
18 | 42800be8 | Panagiotis Kanavos | /// Name of the displayed container |
19 | 42800be8 | Panagiotis Kanavos | /// </summary> |
20 | 42800be8 | Panagiotis Kanavos | public string ContainerName { get; set; } |
21 | 42800be8 | Panagiotis Kanavos | /// <summary> |
22 | 42800be8 | Panagiotis Kanavos | /// Window title |
23 | 42800be8 | Panagiotis Kanavos | /// </summary> |
24 | 42800be8 | Panagiotis Kanavos | public string Title { get; set; } |
25 | 42800be8 | Panagiotis Kanavos | |
26 | 42800be8 | Panagiotis Kanavos | /// <summary> |
27 | 42800be8 | Panagiotis Kanavos | /// Count of files in the container |
28 | 42800be8 | Panagiotis Kanavos | /// </summary> |
29 | 42800be8 | Panagiotis Kanavos | public long Count { get; set; } |
30 | 42800be8 | Panagiotis Kanavos | |
31 | 42800be8 | Panagiotis Kanavos | /// <summary> |
32 | 42800be8 | Panagiotis Kanavos | /// Date of last modification |
33 | 42800be8 | Panagiotis Kanavos | /// </summary> |
34 | 42800be8 | Panagiotis Kanavos | public DateTime Modified { get; set; } |
35 | 42800be8 | Panagiotis Kanavos | |
36 | 42800be8 | Panagiotis Kanavos | /// <summary> |
37 | 42800be8 | Panagiotis Kanavos | /// Total size of the container in bytes |
38 | 42800be8 | Panagiotis Kanavos | /// </summary> |
39 | 42800be8 | Panagiotis Kanavos | public string Size { get; set; } |
40 | 42800be8 | Panagiotis Kanavos | |
41 | 42800be8 | Panagiotis Kanavos | /// <summary> |
42 | 42800be8 | Panagiotis Kanavos | /// Total size of the container formatted in KB,MB etc |
43 | 42800be8 | Panagiotis Kanavos | /// </summary> |
44 | 42800be8 | Panagiotis Kanavos | public string ShortSize { get; set; } |
45 | 42800be8 | Panagiotis Kanavos | |
46 | 42800be8 | Panagiotis Kanavos | /// <summary> |
47 | 42800be8 | Panagiotis Kanavos | /// Block size used by the container |
48 | 42800be8 | Panagiotis Kanavos | /// </summary> |
49 | 42800be8 | Panagiotis Kanavos | public int BlockSize { get; set; } |
50 | 42800be8 | Panagiotis Kanavos | |
51 | 42800be8 | Panagiotis Kanavos | /// <summary> |
52 | 42800be8 | Panagiotis Kanavos | /// Hash algorithm used to calculate block hashes |
53 | 42800be8 | Panagiotis Kanavos | /// </summary> |
54 | 42800be8 | Panagiotis Kanavos | public string BlockHash { get; set; } |
55 | 42800be8 | Panagiotis Kanavos | |
56 | 42800be8 | Panagiotis Kanavos | /// <summary> |
57 | 42800be8 | Panagiotis Kanavos | /// Reference to the parent Shell |
58 | 42800be8 | Panagiotis Kanavos | /// </summary> |
59 | 42800be8 | Panagiotis Kanavos | protected ShellViewModel Shell { get; set; } |
60 | 42800be8 | Panagiotis Kanavos | |
61 | 42800be8 | Panagiotis Kanavos | private ContainerInfo _container; |
62 | 42800be8 | Panagiotis Kanavos | /// <summary> |
63 | 42800be8 | Panagiotis Kanavos | /// The displayed ContainerInfo |
64 | 42800be8 | Panagiotis Kanavos | /// </summary> |
65 | 42800be8 | Panagiotis Kanavos | protected ContainerInfo Container |
66 | 42800be8 | Panagiotis Kanavos | { |
67 | 42800be8 | Panagiotis Kanavos | get { return _container; } |
68 | 42800be8 | Panagiotis Kanavos | set |
69 | 42800be8 | Panagiotis Kanavos | { |
70 | 42800be8 | Panagiotis Kanavos | _container = value; |
71 | 42800be8 | Panagiotis Kanavos | |
72 | 27361404 | Panagiotis Kanavos | Tags.Clear(); |
73 | 27361404 | Panagiotis Kanavos | var tags = from tag in value.Tags |
74 | 27361404 | Panagiotis Kanavos | select new Tag(tag.Key, tag.Value); |
75 | 27361404 | Panagiotis Kanavos | tags.Apply(tag => Tags.Add(tag)); |
76 | 27361404 | Panagiotis Kanavos | |
77 | 27361404 | Panagiotis Kanavos | |
78 | 42800be8 | Panagiotis Kanavos | Count = value.Count; |
79 | 42800be8 | Panagiotis Kanavos | ShortSize = value.Bytes.ToByteSize(); |
80 | 42800be8 | Panagiotis Kanavos | Size = String.Format("{0} ({1:N0} bytes)", ShortSize, value.Bytes); |
81 | 42800be8 | Panagiotis Kanavos | Modified = value.Last_Modified; |
82 | 42800be8 | Panagiotis Kanavos | BlockSize = value.BlockSize; |
83 | 42800be8 | Panagiotis Kanavos | BlockHash = value.BlockHash; |
84 | 42800be8 | Panagiotis Kanavos | ContainerName = Uri.UnescapeDataString(value.Name.Split('/').Last()); |
85 | 42800be8 | Panagiotis Kanavos | |
86 | 42800be8 | Panagiotis Kanavos | NotifyOfPropertyChange(() => Container); |
87 | 42800be8 | Panagiotis Kanavos | } |
88 | 42800be8 | Panagiotis Kanavos | } |
89 | 42800be8 | Panagiotis Kanavos | |
90 | 27361404 | Panagiotis Kanavos | |
91 | 27361404 | Panagiotis Kanavos | private readonly ObservableCollection<Tag> _tags = new ObservableCollection<Tag>(); |
92 | 27361404 | Panagiotis Kanavos | public ObservableCollection<Tag> Tags |
93 | 27361404 | Panagiotis Kanavos | { |
94 | 27361404 | Panagiotis Kanavos | get { return _tags; } |
95 | 27361404 | Panagiotis Kanavos | } |
96 | 42800be8 | Panagiotis Kanavos | |
97 | 42800be8 | Panagiotis Kanavos | |
98 | 42800be8 | Panagiotis Kanavos | public ContainerPropertiesViewModel(ShellViewModel shell, ContainerInfo container, string localFolderName) |
99 | 42800be8 | Panagiotis Kanavos | { |
100 | 42800be8 | Panagiotis Kanavos | if (shell==null) |
101 | 42800be8 | Panagiotis Kanavos | throw new ArgumentNullException("shell"); |
102 | 42800be8 | Panagiotis Kanavos | if (container==null) |
103 | 42800be8 | Panagiotis Kanavos | throw new ArgumentNullException("container"); |
104 | 42800be8 | Panagiotis Kanavos | if (String.IsNullOrWhiteSpace(localFolderName)) |
105 | 42800be8 | Panagiotis Kanavos | throw new ArgumentNullException("localFolderName"); |
106 | 42800be8 | Panagiotis Kanavos | Contract.EndContractBlock(); |
107 | 42800be8 | Panagiotis Kanavos | |
108 | 42800be8 | Panagiotis Kanavos | Shell = shell; |
109 | 42800be8 | Panagiotis Kanavos | ContainerName = localFolderName; |
110 | 42800be8 | Panagiotis Kanavos | Container = container; |
111 | 42800be8 | Panagiotis Kanavos | Title = String.Format("{0} Properties", container.Name); |
112 | 42800be8 | Panagiotis Kanavos | |
113 | 42800be8 | Panagiotis Kanavos | } |
114 | 42800be8 | Panagiotis Kanavos | |
115 | 42800be8 | Panagiotis Kanavos | |
116 | 42800be8 | Panagiotis Kanavos | |
117 | 20e9a378 | Panagiotis Kanavos | public void Reload() |
118 | 42800be8 | Panagiotis Kanavos | { |
119 | 42800be8 | Panagiotis Kanavos | Container = Shell.RefreshContainerInfo(Container); |
120 | 42800be8 | Panagiotis Kanavos | } |
121 | 42800be8 | Panagiotis Kanavos | |
122 | 42800be8 | Panagiotis Kanavos | public override void CanClose(Action<bool> callback) |
123 | 42800be8 | Panagiotis Kanavos | { |
124 | 42800be8 | Panagiotis Kanavos | base.CanClose(callback); |
125 | 42800be8 | Panagiotis Kanavos | } |
126 | 42800be8 | Panagiotis Kanavos | |
127 | 42800be8 | Panagiotis Kanavos | public void SaveChanges() |
128 | 42800be8 | Panagiotis Kanavos | { |
129 | 42800be8 | Panagiotis Kanavos | DoSave(); |
130 | 42800be8 | Panagiotis Kanavos | TryClose(); |
131 | 42800be8 | Panagiotis Kanavos | } |
132 | 42800be8 | Panagiotis Kanavos | |
133 | 42800be8 | Panagiotis Kanavos | public void RejectChanges() |
134 | 42800be8 | Panagiotis Kanavos | { |
135 | 42800be8 | Panagiotis Kanavos | TryClose(); |
136 | 42800be8 | Panagiotis Kanavos | } |
137 | 42800be8 | Panagiotis Kanavos | |
138 | 42800be8 | Panagiotis Kanavos | public void ApplyChanges() |
139 | 42800be8 | Panagiotis Kanavos | { |
140 | 42800be8 | Panagiotis Kanavos | DoSave(); |
141 | 42800be8 | Panagiotis Kanavos | } |
142 | 42800be8 | Panagiotis Kanavos | |
143 | 42800be8 | Panagiotis Kanavos | private void DoSave() |
144 | 42800be8 | Panagiotis Kanavos | { |
145 | 42800be8 | Panagiotis Kanavos | |
146 | 42800be8 | Panagiotis Kanavos | } |
147 | 42800be8 | Panagiotis Kanavos | |
148 | 42800be8 | Panagiotis Kanavos | } |
149 | 42800be8 | Panagiotis Kanavos | } |