Statistics
| Branch: | Revision:

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
}