root / trunk / Pithos.Client.WPF / SelectiveSynch / SelectiveSynchViewModel.cs @ 4d70073b
History | View | Annotate | Download (4.2 kB)
1 | d3a13891 | Panagiotis Kanavos | using System; |
---|---|---|---|
2 | d3a13891 | Panagiotis Kanavos | using System.Collections.Generic; |
3 | d3a13891 | Panagiotis Kanavos | using System.Collections.ObjectModel; |
4 | d3a13891 | Panagiotis Kanavos | using System.Collections.Specialized; |
5 | d3a13891 | Panagiotis Kanavos | using System.IO; |
6 | d3a13891 | Panagiotis Kanavos | using System.Linq; |
7 | d3a13891 | Panagiotis Kanavos | using System.Text; |
8 | d3a13891 | Panagiotis Kanavos | using Caliburn.Micro; |
9 | d3a13891 | Panagiotis Kanavos | using Pithos.Client.WPF.Properties; |
10 | d3a13891 | Panagiotis Kanavos | using Pithos.Interfaces; |
11 | d3a13891 | Panagiotis Kanavos | using Pithos.Network; |
12 | d3a13891 | Panagiotis Kanavos | |
13 | d3a13891 | Panagiotis Kanavos | namespace Pithos.Client.WPF.SelectiveSynch |
14 | d3a13891 | Panagiotis Kanavos | { |
15 | d3a13891 | Panagiotis Kanavos | class SelectiveSynchViewModel:Screen |
16 | d3a13891 | Panagiotis Kanavos | { |
17 | d3a13891 | Panagiotis Kanavos | private IEventAggregator _events ; |
18 | d3a13891 | Panagiotis Kanavos | |
19 | d3a13891 | Panagiotis Kanavos | private string _rootPath; |
20 | 77e10b4f | Panagiotis Kanavos | private string _cachePath; |
21 | d3a13891 | Panagiotis Kanavos | public string RootPath |
22 | d3a13891 | Panagiotis Kanavos | { |
23 | d3a13891 | Panagiotis Kanavos | get { return _rootPath; } |
24 | d3a13891 | Panagiotis Kanavos | set |
25 | d3a13891 | Panagiotis Kanavos | { |
26 | d3a13891 | Panagiotis Kanavos | _rootPath = value; |
27 | 77e10b4f | Panagiotis Kanavos | _cachePath = Path.Combine(_rootPath, FolderConstants.CacheFolder); |
28 | d3a13891 | Panagiotis Kanavos | _pithosDirectory = new ObservableCollection<DirectoryRecord>{ |
29 | 77e10b4f | Panagiotis Kanavos | new DirectoryRecord(_cachePath) {Info = new DirectoryInfo(value)}}; |
30 | d3a13891 | Panagiotis Kanavos | NotifyOfPropertyChange(() => RootPath); |
31 | d3a13891 | Panagiotis Kanavos | NotifyOfPropertyChange(()=>PithosDirectory); |
32 | d3a13891 | Panagiotis Kanavos | } |
33 | d3a13891 | Panagiotis Kanavos | } |
34 | d3a13891 | Panagiotis Kanavos | |
35 | d3a13891 | Panagiotis Kanavos | private string _title; |
36 | d3a13891 | Panagiotis Kanavos | public string Title |
37 | d3a13891 | Panagiotis Kanavos | { |
38 | d3a13891 | Panagiotis Kanavos | get { return _title; } |
39 | d3a13891 | Panagiotis Kanavos | set |
40 | d3a13891 | Panagiotis Kanavos | { |
41 | d3a13891 | Panagiotis Kanavos | _title = value; |
42 | d3a13891 | Panagiotis Kanavos | NotifyOfPropertyChange(() => Title); |
43 | d3a13891 | Panagiotis Kanavos | } |
44 | d3a13891 | Panagiotis Kanavos | } |
45 | d3a13891 | Panagiotis Kanavos | |
46 | d3a13891 | Panagiotis Kanavos | public AccountSettings Account { get; set; } |
47 | d3a13891 | Panagiotis Kanavos | |
48 | d3a13891 | Panagiotis Kanavos | private ObservableCollection<DirectoryRecord> _pithosDirectory; |
49 | d3a13891 | Panagiotis Kanavos | public ObservableCollection<DirectoryRecord> PithosDirectory |
50 | d3a13891 | Panagiotis Kanavos | { |
51 | d3a13891 | Panagiotis Kanavos | get { return _pithosDirectory; } |
52 | d3a13891 | Panagiotis Kanavos | } |
53 | d3a13891 | Panagiotis Kanavos | |
54 | d3a13891 | Panagiotis Kanavos | private ObservableCollection<DirectoryInfo> _checks; |
55 | d3a13891 | Panagiotis Kanavos | public ObservableCollection<DirectoryInfo> Checks |
56 | d3a13891 | Panagiotis Kanavos | { |
57 | d3a13891 | Panagiotis Kanavos | get { return _checks; } |
58 | d3a13891 | Panagiotis Kanavos | } |
59 | d3a13891 | Panagiotis Kanavos | |
60 | d3a13891 | Panagiotis Kanavos | public void GetChecks() |
61 | d3a13891 | Panagiotis Kanavos | { |
62 | d3a13891 | Panagiotis Kanavos | var root = PithosDirectory[0]; |
63 | d3a13891 | Panagiotis Kanavos | _checks = new ObservableCollection<DirectoryInfo>( |
64 | d3a13891 | Panagiotis Kanavos | from record in root |
65 | d3a13891 | Panagiotis Kanavos | where record.IsChecked==true |
66 | d3a13891 | Panagiotis Kanavos | select record.Info); |
67 | d3a13891 | Panagiotis Kanavos | NotifyOfPropertyChange(() => Checks); |
68 | d3a13891 | Panagiotis Kanavos | } |
69 | d3a13891 | Panagiotis Kanavos | |
70 | 7e26c075 | Panagiotis Kanavos | public SelectiveSynchViewModel(IEnumerable<string> folders, IEventAggregator events, AccountSettings account) |
71 | d3a13891 | Panagiotis Kanavos | { |
72 | d3a13891 | Panagiotis Kanavos | Account = account; |
73 | d3a13891 | Panagiotis Kanavos | AccountName = account.AccountName; |
74 | d3a13891 | Panagiotis Kanavos | Title = account.AccountName; |
75 | d3a13891 | Panagiotis Kanavos | RootPath = account.RootPath; |
76 | d3a13891 | Panagiotis Kanavos | |
77 | d3a13891 | Panagiotis Kanavos | SetInitialSelections(account); |
78 | d3a13891 | Panagiotis Kanavos | } |
79 | d3a13891 | Panagiotis Kanavos | |
80 | d3a13891 | Panagiotis Kanavos | private void SetInitialSelections(AccountSettings account) |
81 | d3a13891 | Panagiotis Kanavos | { |
82 | d3a13891 | Panagiotis Kanavos | var selections = account.SelectiveFolders; |
83 | d3a13891 | Panagiotis Kanavos | if (selections.Count == 0) |
84 | d3a13891 | Panagiotis Kanavos | return; |
85 | d3a13891 | Panagiotis Kanavos | var root = PithosDirectory[0]; |
86 | d3a13891 | Panagiotis Kanavos | var selects= from record in root |
87 | d3a13891 | Panagiotis Kanavos | where selections.Contains(record.Info.FullName) |
88 | d3a13891 | Panagiotis Kanavos | select record; |
89 | d3a13891 | Panagiotis Kanavos | selects.Apply(record=>record.IsChecked=true); |
90 | d3a13891 | Panagiotis Kanavos | } |
91 | d3a13891 | Panagiotis Kanavos | |
92 | d3a13891 | Panagiotis Kanavos | protected string AccountName { get; set; } |
93 | d3a13891 | Panagiotis Kanavos | |
94 | d3a13891 | Panagiotis Kanavos | public void SaveChanges() |
95 | d3a13891 | Panagiotis Kanavos | { |
96 | d3a13891 | Panagiotis Kanavos | var selections = GetSelectedFolderNames(); |
97 | d3a13891 | Panagiotis Kanavos | |
98 | d3a13891 | Panagiotis Kanavos | SaveSettings(selections); |
99 | d3a13891 | Panagiotis Kanavos | var root = PithosDirectory[0]; |
100 | d3a13891 | Panagiotis Kanavos | |
101 | d3a13891 | Panagiotis Kanavos | var added= (from record in root |
102 | d3a13891 | Panagiotis Kanavos | where record.Added |
103 | d3a13891 | Panagiotis Kanavos | select record.Info.FullName.ToLower()).ToArray(); |
104 | d3a13891 | Panagiotis Kanavos | var removed= (from record in root |
105 | d3a13891 | Panagiotis Kanavos | where record.Removed |
106 | d3a13891 | Panagiotis Kanavos | select record.Info.FullName.ToLower()).ToArray(); |
107 | d3a13891 | Panagiotis Kanavos | |
108 | d3a13891 | Panagiotis Kanavos | _events.Publish(new SelectiveSynchChanges{Account=Account,Added=added,Removed=removed}); |
109 | d3a13891 | Panagiotis Kanavos | |
110 | d3a13891 | Panagiotis Kanavos | |
111 | d3a13891 | Panagiotis Kanavos | |
112 | d3a13891 | Panagiotis Kanavos | |
113 | d3a13891 | Panagiotis Kanavos | TryClose(true); |
114 | d3a13891 | Panagiotis Kanavos | } |
115 | d3a13891 | Panagiotis Kanavos | |
116 | d3a13891 | Panagiotis Kanavos | |
117 | d3a13891 | Panagiotis Kanavos | private void SaveSettings(string[] selections) |
118 | d3a13891 | Panagiotis Kanavos | { |
119 | d3a13891 | Panagiotis Kanavos | Account.SelectiveFolders.Clear(); |
120 | d3a13891 | Panagiotis Kanavos | Account.SelectiveFolders.AddRange(selections); |
121 | d3a13891 | Panagiotis Kanavos | Settings.Default.Save(); |
122 | d3a13891 | Panagiotis Kanavos | } |
123 | d3a13891 | Panagiotis Kanavos | |
124 | d3a13891 | Panagiotis Kanavos | private string[] GetSelectedFolderNames() |
125 | d3a13891 | Panagiotis Kanavos | { |
126 | d3a13891 | Panagiotis Kanavos | var root = PithosDirectory[0]; |
127 | d3a13891 | Panagiotis Kanavos | var selections = from record in root |
128 | d3a13891 | Panagiotis Kanavos | where record.IsChecked == true |
129 | d3a13891 | Panagiotis Kanavos | select record.Info.FullName; |
130 | d3a13891 | Panagiotis Kanavos | return selections.ToArray(); |
131 | d3a13891 | Panagiotis Kanavos | } |
132 | d3a13891 | Panagiotis Kanavos | |
133 | d3a13891 | Panagiotis Kanavos | public void RejectChanges() |
134 | d3a13891 | Panagiotis Kanavos | { |
135 | d3a13891 | Panagiotis Kanavos | TryClose(false); |
136 | d3a13891 | Panagiotis Kanavos | } |
137 | d3a13891 | Panagiotis Kanavos | } |
138 | d3a13891 | Panagiotis Kanavos | } |