Converted NetSparkle project to .NET 4 Client Profile
[pithos-ms-client] / trunk / Pithos.Client.WPF / Configuration / PithosSettings.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.Configuration;
44 using System.Diagnostics;
45 using System.Dynamic;
46 using Pithos.Client.WPF.Properties;
47 using Pithos.Interfaces;
48
49 namespace Pithos.Client.WPF.Configuration
50 {
51     using System;
52     using System.Collections.Generic;
53     using System.Linq;
54     using System.Text;
55
56     [Export(typeof(IPithosSettings))]
57     [Export]
58     public class PithosSettings :  IPithosSettings
59     {
60         private readonly Settings _settings = Settings.Default;
61
62         public PithosSettings()
63         {
64             //Settings should already be upgraded by the time we reach this point
65             Debug.Assert(!_settings.MustUpgrade);
66             //_settings.Upgrade();
67         }
68
69         public bool UseDefaultProxy
70         {
71             get { return _settings.UseDefaultProxy; }
72             set { _settings.UseDefaultProxy = value; }
73         }
74
75         public bool UseManualProxy
76         {
77             get { return _settings.UseManualProxy; }
78             set { _settings.UseManualProxy = value; }
79         }
80
81         public bool UseNoProxy
82         {
83             get { return _settings.UseNoProxy; }
84             set { _settings.UseNoProxy = value; }
85         }
86
87         public string PithosPath
88         {
89             get { return _settings.PithosPath; }
90             set { _settings.PithosPath = value; }
91         }
92
93       /*  public string PithosSite
94         {
95             get { return _settings.PithosSite; }
96         }*/
97
98         public string PithosLoginUrl
99         {
100             get { return _settings.PithosLoginUrl; }
101         }
102
103         public string IconsPath
104         {
105             get { return _settings.IconPath; }
106             set { _settings.IconPath = value; }
107         }
108
109         public string UserName
110         {
111             get { return _settings.UserName; }
112             set { _settings.UserName = value; }
113         }
114
115         public string ApiKey
116         {
117             get { return _settings.ApiKey; }
118             set { _settings.ApiKey = value; }
119         }
120
121         public AccountsCollection Accounts
122         {
123             get { return _settings.Accounts ?? (_settings.Accounts = new AccountsCollection()); }
124             set { _settings.Accounts = value; }
125         }
126
127         public string ProxyServer
128         {
129             get { return _settings.ProxyServer; }
130             set { _settings.ProxyServer = value; }
131         }
132
133         public int ProxyPort
134         {
135             get { return _settings.ProxyPort; }
136             set { _settings.ProxyPort = value; }
137         }
138
139         public string ProxyUsername
140         {
141             get { return _settings.ProxyUsername; }
142             set { _settings.ProxyUsername = value; }
143         }
144
145
146         public string ProxyPassword
147         {
148             get { return _settings.ProxyPassword; }
149             set { _settings.ProxyPassword = value; }
150         }
151
152         public string ProxyDomain
153         {
154             get { return _settings.ProxyDomain; }
155             set { _settings.ProxyDomain = value; }
156         }
157
158         public bool ProxyAuthentication
159         {
160
161             get { return _settings.ProxyAuthentication; }
162             set { _settings.ProxyAuthentication = value; }
163         }
164
165         
166         
167         public bool ExtensionsActivated
168         {
169
170             get { return _settings.ExtensionsActivated; }
171             set { _settings.ExtensionsActivated = value; }
172         }
173
174         public bool ShowDesktopNotifications
175         {
176             get { return _settings.ShowDesktopNotifications; }
177             set { _settings.ShowDesktopNotifications = value; }
178         }
179
180
181         public int PollingInterval
182         {
183             get { return _settings.PollingInterval; }
184             set
185             {
186                 if (value <= 0)
187                     throw new ArgumentOutOfRangeException();
188                 _settings.PollingInterval = value;
189             }
190         }
191
192         public TimeSpan StartupDelay
193         {
194             get { return _settings.StartupDelay; }
195             set
196             {
197                 if (value < TimeSpan.Zero)
198                     throw new ArgumentOutOfRangeException();
199                 _settings.StartupDelay = value;
200             }
201         }
202
203
204         public bool StartOnSystemStartup
205         {
206             get { return _settings.StartOnSystemStartup; }
207             set
208             {
209                 _settings.StartOnSystemStartup = value;
210             }
211         }
212
213         public byte HashingParallelism
214         {
215             get { return _settings.HashingParallelism; }
216             set { _settings.HashingParallelism = value; }
217         }
218
219         public string UpdateUrl
220         {
221             get { return _settings.UpdateUrl; }
222         }
223
224         public bool UpdateDiagnostics
225         {
226             get { return _settings.UpdateDiagnostics; }
227         }
228
229         public TimeSpan UpdateCheckInterval
230         {
231             get { return _settings.UpdateCheckInterval; }
232         }
233
234         public void Save()
235         {
236             _settings.Save();
237             Proxy.SetFromSettings(this);
238         }
239
240         public void Reload()
241         {
242             _settings.Reload();
243         }
244
245         public void Reset()
246         {
247             _settings.Reset();
248             _settings.Save();
249         }
250     }
251 }