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