root / trunk / Pithos.Client.WPF / Configuration / PithosSettings.cs @ 2115e2a5
History | View | Annotate | Download (8.9 kB)
1 | cfb09103 | pkanavos | #region |
---|---|---|---|
2 | cfb09103 | pkanavos | /* ----------------------------------------------------------------------- |
3 | cfb09103 | pkanavos | * <copyright file="PithosSettings.cs" company="GRNet"> |
4 | cfb09103 | pkanavos | * |
5 | cfb09103 | pkanavos | * Copyright 2011-2012 GRNET S.A. All rights reserved. |
6 | cfb09103 | pkanavos | * |
7 | cfb09103 | pkanavos | * Redistribution and use in source and binary forms, with or |
8 | cfb09103 | pkanavos | * without modification, are permitted provided that the following |
9 | cfb09103 | pkanavos | * conditions are met: |
10 | cfb09103 | pkanavos | * |
11 | cfb09103 | pkanavos | * 1. Redistributions of source code must retain the above |
12 | cfb09103 | pkanavos | * copyright notice, this list of conditions and the following |
13 | cfb09103 | pkanavos | * disclaimer. |
14 | cfb09103 | pkanavos | * |
15 | cfb09103 | pkanavos | * 2. Redistributions in binary form must reproduce the above |
16 | cfb09103 | pkanavos | * copyright notice, this list of conditions and the following |
17 | cfb09103 | pkanavos | * disclaimer in the documentation and/or other materials |
18 | cfb09103 | pkanavos | * provided with the distribution. |
19 | cfb09103 | pkanavos | * |
20 | cfb09103 | pkanavos | * |
21 | cfb09103 | pkanavos | * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS |
22 | cfb09103 | pkanavos | * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
23 | cfb09103 | pkanavos | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
24 | cfb09103 | pkanavos | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR |
25 | cfb09103 | pkanavos | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
26 | cfb09103 | pkanavos | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
27 | cfb09103 | pkanavos | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
28 | cfb09103 | pkanavos | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
29 | cfb09103 | pkanavos | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
30 | cfb09103 | pkanavos | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
31 | cfb09103 | pkanavos | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
32 | cfb09103 | pkanavos | * POSSIBILITY OF SUCH DAMAGE. |
33 | cfb09103 | pkanavos | * |
34 | cfb09103 | pkanavos | * The views and conclusions contained in the software and |
35 | cfb09103 | pkanavos | * documentation are those of the authors and should not be |
36 | cfb09103 | pkanavos | * interpreted as representing official policies, either expressed |
37 | cfb09103 | pkanavos | * or implied, of GRNET S.A. |
38 | cfb09103 | pkanavos | * </copyright> |
39 | cfb09103 | pkanavos | * ----------------------------------------------------------------------- |
40 | cfb09103 | pkanavos | */ |
41 | cfb09103 | pkanavos | #endregion |
42 | cfb09103 | pkanavos | using System.ComponentModel.Composition; |
43 | cfb09103 | pkanavos | using System.Diagnostics; |
44 | cfb09103 | pkanavos | using System.IO; |
45 | cfb09103 | pkanavos | using System.Linq; |
46 | cfb09103 | pkanavos | using Pithos.Client.WPF.Properties; |
47 | cfb09103 | pkanavos | using Pithos.Interfaces; |
48 | cfb09103 | pkanavos | using log4net.Appender; |
49 | cfb09103 | pkanavos | using log4net.Core; |
50 | cfb09103 | pkanavos | using log4net.Repository.Hierarchy; |
51 | cfb09103 | pkanavos | |
52 | cfb09103 | pkanavos | namespace Pithos.Client.WPF.Configuration |
53 | cfb09103 | pkanavos | { |
54 | cfb09103 | pkanavos | using System; |
55 | cfb09103 | pkanavos | |
56 | cfb09103 | pkanavos | [Export(typeof(IPithosSettings))] |
57 | cfb09103 | pkanavos | [Export] |
58 | cfb09103 | pkanavos | public class PithosSettings : IPithosSettings |
59 | cfb09103 | pkanavos | { |
60 | cfb09103 | pkanavos | private readonly Settings _settings = Settings.Default; |
61 | cfb09103 | pkanavos | |
62 | cfb09103 | pkanavos | public PithosSettings() |
63 | cfb09103 | pkanavos | { |
64 | cfb09103 | pkanavos | //Settings should already be upgraded by the time we reach this point |
65 | cfb09103 | pkanavos | Debug.Assert(!_settings.MustUpgrade); |
66 | cfb09103 | pkanavos | //_settings.Upgrade(); |
67 | cfb09103 | pkanavos | } |
68 | cfb09103 | pkanavos | |
69 | cfb09103 | pkanavos | public bool UseDefaultProxy |
70 | cfb09103 | pkanavos | { |
71 | cfb09103 | pkanavos | get { return _settings.UseDefaultProxy; } |
72 | cfb09103 | pkanavos | set { _settings.UseDefaultProxy = value; } |
73 | cfb09103 | pkanavos | } |
74 | cfb09103 | pkanavos | |
75 | cfb09103 | pkanavos | public bool UseManualProxy |
76 | cfb09103 | pkanavos | { |
77 | cfb09103 | pkanavos | get { return _settings.UseManualProxy; } |
78 | cfb09103 | pkanavos | set { _settings.UseManualProxy = value; } |
79 | cfb09103 | pkanavos | } |
80 | cfb09103 | pkanavos | |
81 | cfb09103 | pkanavos | public bool UseNoProxy |
82 | cfb09103 | pkanavos | { |
83 | cfb09103 | pkanavos | get { return _settings.UseNoProxy; } |
84 | cfb09103 | pkanavos | set { _settings.UseNoProxy = value; } |
85 | cfb09103 | pkanavos | } |
86 | cfb09103 | pkanavos | |
87 | cfb09103 | pkanavos | public string PithosPath |
88 | cfb09103 | pkanavos | { |
89 | cfb09103 | pkanavos | get { return _settings.PithosPath; } |
90 | cfb09103 | pkanavos | set { _settings.PithosPath = value; } |
91 | cfb09103 | pkanavos | } |
92 | cfb09103 | pkanavos | |
93 | cfb09103 | pkanavos | /* public string PithosSite |
94 | cfb09103 | pkanavos | { |
95 | cfb09103 | pkanavos | get { return _settings.PithosSite; } |
96 | cfb09103 | pkanavos | }*/ |
97 | cfb09103 | pkanavos | |
98 | cfb09103 | pkanavos | |
99 | cfb09103 | pkanavos | public string IconsPath |
100 | cfb09103 | pkanavos | { |
101 | cfb09103 | pkanavos | get { return _settings.IconPath; } |
102 | cfb09103 | pkanavos | set { _settings.IconPath = value; } |
103 | cfb09103 | pkanavos | } |
104 | cfb09103 | pkanavos | |
105 | cfb09103 | pkanavos | public string UserName |
106 | cfb09103 | pkanavos | { |
107 | cfb09103 | pkanavos | get { return _settings.UserName; } |
108 | cfb09103 | pkanavos | set { _settings.UserName = value; } |
109 | cfb09103 | pkanavos | } |
110 | cfb09103 | pkanavos | |
111 | cfb09103 | pkanavos | public string ApiKey |
112 | cfb09103 | pkanavos | { |
113 | cfb09103 | pkanavos | get { return _settings.ApiKey; } |
114 | cfb09103 | pkanavos | set { _settings.ApiKey = value; } |
115 | cfb09103 | pkanavos | } |
116 | cfb09103 | pkanavos | |
117 | cfb09103 | pkanavos | public AccountsCollection Accounts |
118 | cfb09103 | pkanavos | { |
119 | cfb09103 | pkanavos | get { return _settings.Accounts ?? (_settings.Accounts = new AccountsCollection()); } |
120 | cfb09103 | pkanavos | set { _settings.Accounts = value; } |
121 | cfb09103 | pkanavos | } |
122 | cfb09103 | pkanavos | |
123 | cfb09103 | pkanavos | public string ProxyServer |
124 | cfb09103 | pkanavos | { |
125 | cfb09103 | pkanavos | get { return _settings.ProxyServer; } |
126 | cfb09103 | pkanavos | set { _settings.ProxyServer = value; } |
127 | cfb09103 | pkanavos | } |
128 | cfb09103 | pkanavos | |
129 | cfb09103 | pkanavos | public int ProxyPort |
130 | cfb09103 | pkanavos | { |
131 | cfb09103 | pkanavos | get { return _settings.ProxyPort; } |
132 | cfb09103 | pkanavos | set { _settings.ProxyPort = value; } |
133 | cfb09103 | pkanavos | } |
134 | cfb09103 | pkanavos | |
135 | cfb09103 | pkanavos | public string ProxyUsername |
136 | cfb09103 | pkanavos | { |
137 | cfb09103 | pkanavos | get { return _settings.ProxyUsername; } |
138 | cfb09103 | pkanavos | set { _settings.ProxyUsername = value; } |
139 | cfb09103 | pkanavos | } |
140 | cfb09103 | pkanavos | |
141 | cfb09103 | pkanavos | |
142 | cfb09103 | pkanavos | public string ProxyPassword |
143 | cfb09103 | pkanavos | { |
144 | cfb09103 | pkanavos | get { return _settings.ProxyPassword; } |
145 | cfb09103 | pkanavos | set { _settings.ProxyPassword = value; } |
146 | cfb09103 | pkanavos | } |
147 | cfb09103 | pkanavos | |
148 | cfb09103 | pkanavos | public string ProxyDomain |
149 | cfb09103 | pkanavos | { |
150 | cfb09103 | pkanavos | get { return _settings.ProxyDomain; } |
151 | cfb09103 | pkanavos | set { _settings.ProxyDomain = value; } |
152 | cfb09103 | pkanavos | } |
153 | cfb09103 | pkanavos | |
154 | cfb09103 | pkanavos | public bool ProxyAuthentication |
155 | cfb09103 | pkanavos | { |
156 | cfb09103 | pkanavos | |
157 | cfb09103 | pkanavos | get { return _settings.ProxyAuthentication; } |
158 | cfb09103 | pkanavos | set { _settings.ProxyAuthentication = value; } |
159 | cfb09103 | pkanavos | } |
160 | cfb09103 | pkanavos | |
161 | cfb09103 | pkanavos | |
162 | cfb09103 | pkanavos | |
163 | cfb09103 | pkanavos | public bool ExtensionsActivated |
164 | cfb09103 | pkanavos | { |
165 | cfb09103 | pkanavos | |
166 | cfb09103 | pkanavos | get { return _settings.ExtensionsActivated; } |
167 | cfb09103 | pkanavos | set { _settings.ExtensionsActivated = value; } |
168 | cfb09103 | pkanavos | } |
169 | cfb09103 | pkanavos | |
170 | cfb09103 | pkanavos | public bool ShowDesktopNotifications |
171 | cfb09103 | pkanavos | { |
172 | cfb09103 | pkanavos | get { return _settings.ShowDesktopNotifications; } |
173 | cfb09103 | pkanavos | set { _settings.ShowDesktopNotifications = value; } |
174 | cfb09103 | pkanavos | } |
175 | cfb09103 | pkanavos | |
176 | cfb09103 | pkanavos | |
177 | cfb09103 | pkanavos | public int PollingInterval |
178 | cfb09103 | pkanavos | { |
179 | cfb09103 | pkanavos | get { return _settings.PollingInterval; } |
180 | cfb09103 | pkanavos | set |
181 | cfb09103 | pkanavos | { |
182 | cfb09103 | pkanavos | if (value <= 0) |
183 | cfb09103 | pkanavos | throw new ArgumentOutOfRangeException(); |
184 | cfb09103 | pkanavos | _settings.PollingInterval = value; |
185 | cfb09103 | pkanavos | } |
186 | cfb09103 | pkanavos | } |
187 | cfb09103 | pkanavos | |
188 | cfb09103 | pkanavos | public TimeSpan StartupDelay |
189 | cfb09103 | pkanavos | { |
190 | cfb09103 | pkanavos | get { return _settings.StartupDelay; } |
191 | cfb09103 | pkanavos | set |
192 | cfb09103 | pkanavos | { |
193 | cfb09103 | pkanavos | if (value < TimeSpan.Zero) |
194 | cfb09103 | pkanavos | throw new ArgumentOutOfRangeException(); |
195 | cfb09103 | pkanavos | _settings.StartupDelay = value; |
196 | cfb09103 | pkanavos | } |
197 | cfb09103 | pkanavos | } |
198 | cfb09103 | pkanavos | |
199 | cfb09103 | pkanavos | |
200 | cfb09103 | pkanavos | public bool StartOnSystemStartup |
201 | cfb09103 | pkanavos | { |
202 | cfb09103 | pkanavos | get { return _settings.StartOnSystemStartup; } |
203 | cfb09103 | pkanavos | set |
204 | cfb09103 | pkanavos | { |
205 | cfb09103 | pkanavos | _settings.StartOnSystemStartup = value; |
206 | cfb09103 | pkanavos | } |
207 | cfb09103 | pkanavos | } |
208 | cfb09103 | pkanavos | |
209 | cfb09103 | pkanavos | public byte HashingParallelism |
210 | cfb09103 | pkanavos | { |
211 | cfb09103 | pkanavos | get { return _settings.HashingParallelism; } |
212 | cfb09103 | pkanavos | set { _settings.HashingParallelism = value; } |
213 | cfb09103 | pkanavos | } |
214 | cfb09103 | pkanavos | |
215 | cfb09103 | pkanavos | public string UpdateUrl |
216 | cfb09103 | pkanavos | { |
217 | cfb09103 | pkanavos | get { return _settings.UpdateUrl; } |
218 | cfb09103 | pkanavos | } |
219 | cfb09103 | pkanavos | |
220 | cfb09103 | pkanavos | public bool UpdateDiagnostics |
221 | cfb09103 | pkanavos | { |
222 | cfb09103 | pkanavos | get { return _settings.UpdateDiagnostics; } |
223 | cfb09103 | pkanavos | } |
224 | cfb09103 | pkanavos | |
225 | cfb09103 | pkanavos | public TimeSpan UpdateCheckInterval |
226 | cfb09103 | pkanavos | { |
227 | cfb09103 | pkanavos | get { return _settings.UpdateCheckInterval; } |
228 | cfb09103 | pkanavos | } |
229 | cfb09103 | pkanavos | |
230 | cfb09103 | pkanavos | public TimeSpan FileIdleTimeout |
231 | cfb09103 | pkanavos | { |
232 | cfb09103 | pkanavos | get { return _settings.FileIdleTimeout; } |
233 | cfb09103 | pkanavos | } |
234 | cfb09103 | pkanavos | |
235 | cfb09103 | pkanavos | public bool UpdateForceCheck |
236 | cfb09103 | pkanavos | { |
237 | cfb09103 | pkanavos | get { return _settings.UpdateForceCheck; } |
238 | cfb09103 | pkanavos | } |
239 | cfb09103 | pkanavos | |
240 | cfb09103 | pkanavos | public bool DebugLoggingEnabled |
241 | cfb09103 | pkanavos | { |
242 | cfb09103 | pkanavos | get { return _settings.DebugLoggingEnabled; } |
243 | cfb09103 | pkanavos | set |
244 | cfb09103 | pkanavos | { |
245 | cfb09103 | pkanavos | _settings.DebugLoggingEnabled = value; |
246 | cfb09103 | pkanavos | |
247 | cfb09103 | pkanavos | SetDebugLevel(); |
248 | cfb09103 | pkanavos | } |
249 | cfb09103 | pkanavos | } |
250 | cfb09103 | pkanavos | |
251 | cfb09103 | pkanavos | public bool IgnoreCertificateErrors |
252 | cfb09103 | pkanavos | { |
253 | cfb09103 | pkanavos | get { return _settings.IgnoreCertificateErrors; } |
254 | cfb09103 | pkanavos | set |
255 | cfb09103 | pkanavos | { |
256 | cfb09103 | pkanavos | _settings.IgnoreCertificateErrors = value; |
257 | cfb09103 | pkanavos | |
258 | cfb09103 | pkanavos | } |
259 | cfb09103 | pkanavos | } |
260 | cfb09103 | pkanavos | |
261 | cfb09103 | pkanavos | private static void SetDebugLevel() |
262 | cfb09103 | pkanavos | { |
263 | cfb09103 | pkanavos | var loggerRepository = (Hierarchy) log4net.LogManager.GetRepository(); |
264 | cfb09103 | pkanavos | |
265 | cfb09103 | pkanavos | var appenders = loggerRepository.GetAppenders(); |
266 | cfb09103 | pkanavos | |
267 | cfb09103 | pkanavos | var debugAppender = appenders.OfType<RollingFileAppender>() |
268 | cfb09103 | pkanavos | .FirstOrDefault(a => a.Name == "DebugFileAppender"); |
269 | cfb09103 | pkanavos | if (debugAppender != null) |
270 | cfb09103 | pkanavos | { |
271 | cfb09103 | pkanavos | var pithosDataPath = PithosDataPath; |
272 | cfb09103 | pkanavos | debugAppender.File = Path.Combine(pithosDataPath, "debuglog.xml"); |
273 | cfb09103 | pkanavos | debugAppender.Threshold = !Settings.Default.DebugLoggingEnabled ? Level.Off : Level.All; |
274 | cfb09103 | pkanavos | debugAppender.ActivateOptions(); |
275 | cfb09103 | pkanavos | } |
276 | cfb09103 | pkanavos | } |
277 | cfb09103 | pkanavos | |
278 | cfb09103 | pkanavos | public static string PithosDataPath |
279 | cfb09103 | pkanavos | { |
280 | cfb09103 | pkanavos | get |
281 | cfb09103 | pkanavos | { |
282 | cfb09103 | pkanavos | var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); |
283 | cfb09103 | pkanavos | var pithosDataPath = Path.Combine(appDataPath, "GRNET\\PITHOS"); |
284 | cfb09103 | pkanavos | return pithosDataPath; |
285 | cfb09103 | pkanavos | } |
286 | cfb09103 | pkanavos | } |
287 | cfb09103 | pkanavos | |
288 | cfb09103 | pkanavos | public void Save() |
289 | cfb09103 | pkanavos | { |
290 | cfb09103 | pkanavos | LockedSave(); |
291 | cfb09103 | pkanavos | Proxy.SetFromSettings(this); |
292 | cfb09103 | pkanavos | } |
293 | cfb09103 | pkanavos | |
294 | cfb09103 | pkanavos | private void LockedSave() |
295 | cfb09103 | pkanavos | { |
296 | cfb09103 | pkanavos | lock (this) |
297 | cfb09103 | pkanavos | { |
298 | cfb09103 | pkanavos | _settings.Save(); |
299 | cfb09103 | pkanavos | } |
300 | cfb09103 | pkanavos | } |
301 | cfb09103 | pkanavos | |
302 | cfb09103 | pkanavos | public void Reload() |
303 | cfb09103 | pkanavos | { |
304 | cfb09103 | pkanavos | _settings.Reload(); |
305 | cfb09103 | pkanavos | } |
306 | cfb09103 | pkanavos | |
307 | cfb09103 | pkanavos | public void Reset() |
308 | cfb09103 | pkanavos | { |
309 | cfb09103 | pkanavos | _settings.Reset(); |
310 | cfb09103 | pkanavos | LockedSave(); |
311 | cfb09103 | pkanavos | } |
312 | cfb09103 | pkanavos | } |
313 | cfb09103 | pkanavos | } |