Statistics
| Branch: | Revision:

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
}