-// -----------------------------------------------------------------------
-// <copyright file="PithosSettings.cs" company="GRNET">
-// Copyright 2011-2012 GRNET S.A. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or
-// without modification, are permitted provided that the following
-// conditions are met:
-//
-// 1. Redistributions of source code must retain the above
-// copyright notice, this list of conditions and the following
-// disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials
-// provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
-// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
-// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-// USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// The views and conclusions contained in the software and
-// documentation are those of the authors and should not be
-// interpreted as representing official policies, either expressed
-// or implied, of GRNET S.A.
-// </copyright>
-// -----------------------------------------------------------------------
-
-using System.ComponentModel.Composition;
-using System.Configuration;
-using System.Dynamic;
-using Pithos.Client.WPF.Properties;
-using Pithos.Interfaces;
-
-namespace Pithos.Client.WPF.Configuration
-{
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
-
- [Export(typeof(IPithosSettings))]
- [Export]
- public class PithosSettings : IPithosSettings
- {
- private readonly Settings _settings = Settings.Default;
-
- public PithosSettings()
- {
- _settings.Upgrade();
- }
-
- public bool UseDefaultProxy
- {
- get { return _settings.UseDefaultProxy; }
- set { _settings.UseDefaultProxy = value; }
- }
-
- public bool UseManualProxy
- {
- get { return _settings.UseManualProxy; }
- set { _settings.UseManualProxy = value; }
- }
-
- public bool UseNoProxy
- {
- get { return _settings.UseNoProxy; }
- set { _settings.UseNoProxy = value; }
- }
-
- public string PithosPath
- {
- get { return _settings.PithosPath; }
- set { _settings.PithosPath = value; }
- }
-
- /* public string PithosSite
- {
- get { return _settings.PithosSite; }
- }*/
-
- public string PithosLoginUrl
- {
- get { return _settings.PithosLoginUrl; }
- }
-
- public string IconsPath
- {
- get { return _settings.IconPath; }
- set { _settings.IconPath = value; }
- }
-
- public string UserName
- {
- get { return _settings.UserName; }
- set { _settings.UserName = value; }
- }
-
- public string ApiKey
- {
- get { return _settings.ApiKey; }
- set { _settings.ApiKey = value; }
- }
-
- public AccountsCollection Accounts
- {
- get
- {
- if (_settings.Accounts==null)
- _settings.Accounts=new AccountsCollection();
- return _settings.Accounts;
- }
- set { _settings.Accounts = value; }
- }
-
- public string ProxyServer
- {
- get { return _settings.ProxyServer; }
- set { _settings.ProxyServer = value; }
- }
-
- public int ProxyPort
- {
- get { return _settings.ProxyPort; }
- set { _settings.ProxyPort = value; }
- }
-
- public string ProxyUsername
- {
- get { return _settings.ProxyUsername; }
- set { _settings.ProxyUsername = value; }
- }
-
-
- public string ProxyPassword
- {
- get { return _settings.ProxyPassword; }
- set { _settings.ProxyPassword = value; }
- }
-
- public string ProxyDomain
- {
- get { return _settings.ProxyDomain; }
- set { _settings.ProxyDomain = value; }
- }
-
- public bool ProxyAuthentication
- {
-
- get { return _settings.ProxyAuthentication; }
- set { _settings.ProxyAuthentication = value; }
- }
-
-
-
- public bool ExtensionsActivated
- {
-
- get { return _settings.ExtensionsActivated; }
- set { _settings.ExtensionsActivated = value; }
- }
-
- public bool ShowDesktopNotifications
- {
- get { return _settings.ShowDesktopNotifications; }
- set { _settings.ShowDesktopNotifications = value; }
- }
-
-
- public int PollingInterval
- {
- get { return _settings.PollingInterval; }
- set
- {
- if (value <= 0)
- throw new ArgumentOutOfRangeException();
- _settings.PollingInterval = value;
- }
- }
-
- public bool StartOnSystemStartup
- {
- get { return _settings.StartOnSystemStartup; }
- set
- {
- _settings.StartOnSystemStartup = value;
- }
- }
-
- public byte HashingParallelism
- {
- get { return _settings.HashingParallelism; }
- set { _settings.HashingParallelism = value; }
- }
-/*
- public override IEnumerable<string> GetDynamicMemberNames()
- {
- return (from SettingsProperty property in _settings.Properties
- select property.Name);
- }
-
-
- private Lazy<ILookup<string, SettingsProperty>> _propertyNames = new Lazy<ILookup<string, SettingsProperty>>(
- () => (from SettingsProperty property in
- _settings.Properties
- select property).ToLookup(property => property.Name));
-
- public override bool TryGetMember(GetMemberBinder binder, out object result)
- {
- result = null;
- if (!_propertyNames.Value.Contains(binder.Name))
- return false;
- result=_settings.Properties[binder.Name];
- return true;
- }
-*/
-
- public void Save()
- {
- _settings.Save();
- }
-
- public void Reload()
- {
- _settings.Reload();
- }
- }
-}
+#region\r
+/* -----------------------------------------------------------------------\r
+ * <copyright file="PithosSettings.cs" company="GRNet">\r
+ * \r
+ * Copyright 2011-2012 GRNET S.A. All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or\r
+ * without modification, are permitted provided that the following\r
+ * conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer in the documentation and/or other materials\r
+ * provided with the distribution.\r
+ *\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS\r
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR\r
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF\r
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * The views and conclusions contained in the software and\r
+ * documentation are those of the authors and should not be\r
+ * interpreted as representing official policies, either expressed\r
+ * or implied, of GRNET S.A.\r
+ * </copyright>\r
+ * -----------------------------------------------------------------------\r
+ */\r
+#endregion\r
+using System.ComponentModel.Composition;\r
+using System.Diagnostics;\r
+using System.IO;\r
+using System.Linq;\r
+using Pithos.Client.WPF.Properties;\r
+using Pithos.Interfaces;\r
+using log4net.Appender;\r
+using log4net.Core;\r
+using log4net.Repository.Hierarchy;\r
+\r
+namespace Pithos.Client.WPF.Configuration\r
+{\r
+ using System;\r
+\r
+ [Export(typeof(IPithosSettings))]\r
+ [Export]\r
+ public class PithosSettings : IPithosSettings\r
+ {\r
+ private readonly Settings _settings = Settings.Default;\r
+\r
+ public PithosSettings()\r
+ {\r
+ //Settings should already be upgraded by the time we reach this point\r
+ Debug.Assert(!_settings.MustUpgrade);\r
+ //_settings.Upgrade();\r
+ }\r
+\r
+ public bool UseDefaultProxy\r
+ {\r
+ get { return _settings.UseDefaultProxy; }\r
+ set { _settings.UseDefaultProxy = value; }\r
+ }\r
+\r
+ public bool UseManualProxy\r
+ {\r
+ get { return _settings.UseManualProxy; }\r
+ set { _settings.UseManualProxy = value; }\r
+ }\r
+\r
+ public bool UseNoProxy\r
+ {\r
+ get { return _settings.UseNoProxy; }\r
+ set { _settings.UseNoProxy = value; }\r
+ }\r
+\r
+ public string PithosPath\r
+ {\r
+ get { return _settings.PithosPath; }\r
+ set { _settings.PithosPath = value; }\r
+ }\r
+\r
+ /* public string PithosSite\r
+ {\r
+ get { return _settings.PithosSite; }\r
+ }*/\r
+\r
+\r
+ public string IconsPath\r
+ {\r
+ get { return _settings.IconPath; }\r
+ set { _settings.IconPath = value; }\r
+ }\r
+\r
+ public string UserName\r
+ {\r
+ get { return _settings.UserName; }\r
+ set { _settings.UserName = value; }\r
+ }\r
+\r
+ public string ApiKey\r
+ {\r
+ get { return _settings.ApiKey; }\r
+ set { _settings.ApiKey = value; }\r
+ }\r
+\r
+ public AccountsCollection Accounts\r
+ {\r
+ get { return _settings.Accounts ?? (_settings.Accounts = new AccountsCollection()); }\r
+ set { _settings.Accounts = value; }\r
+ }\r
+\r
+ public string ProxyServer\r
+ {\r
+ get { return _settings.ProxyServer; }\r
+ set { _settings.ProxyServer = value; }\r
+ }\r
+\r
+ public int ProxyPort\r
+ {\r
+ get { return _settings.ProxyPort; }\r
+ set { _settings.ProxyPort = value; }\r
+ }\r
+\r
+ public string ProxyUsername\r
+ {\r
+ get { return _settings.ProxyUsername; }\r
+ set { _settings.ProxyUsername = value; }\r
+ }\r
+\r
+\r
+ public string ProxyPassword\r
+ {\r
+ get { return _settings.ProxyPassword; }\r
+ set { _settings.ProxyPassword = value; }\r
+ }\r
+\r
+ public string ProxyDomain\r
+ {\r
+ get { return _settings.ProxyDomain; }\r
+ set { _settings.ProxyDomain = value; }\r
+ }\r
+\r
+ public bool ProxyAuthentication\r
+ {\r
+\r
+ get { return _settings.ProxyAuthentication; }\r
+ set { _settings.ProxyAuthentication = value; }\r
+ }\r
+\r
+ \r
+ \r
+ public bool ExtensionsActivated\r
+ {\r
+\r
+ get { return _settings.ExtensionsActivated; }\r
+ set { _settings.ExtensionsActivated = value; }\r
+ }\r
+\r
+ public bool ShowDesktopNotifications\r
+ {\r
+ get { return _settings.ShowDesktopNotifications; }\r
+ set { _settings.ShowDesktopNotifications = value; }\r
+ }\r
+\r
+\r
+ public int PollingInterval\r
+ {\r
+ get { return _settings.PollingInterval; }\r
+ set\r
+ {\r
+ if (value <= 0)\r
+ throw new ArgumentOutOfRangeException();\r
+ _settings.PollingInterval = value;\r
+ }\r
+ }\r
+\r
+ public TimeSpan StartupDelay\r
+ {\r
+ get { return _settings.StartupDelay; }\r
+ set\r
+ {\r
+ if (value < TimeSpan.Zero)\r
+ throw new ArgumentOutOfRangeException();\r
+ _settings.StartupDelay = value;\r
+ }\r
+ }\r
+\r
+\r
+ public bool StartOnSystemStartup\r
+ {\r
+ get { return _settings.StartOnSystemStartup; }\r
+ set\r
+ {\r
+ _settings.StartOnSystemStartup = value;\r
+ }\r
+ }\r
+\r
+ public byte HashingParallelism\r
+ {\r
+ get { return _settings.HashingParallelism; }\r
+ set { _settings.HashingParallelism = value; }\r
+ }\r
+\r
+ public string UpdateUrl\r
+ {\r
+ get { return _settings.UpdateUrl; }\r
+ }\r
+\r
+ public bool UpdateDiagnostics\r
+ {\r
+ get { return _settings.UpdateDiagnostics; }\r
+ }\r
+\r
+ public TimeSpan UpdateCheckInterval\r
+ {\r
+ get { return _settings.UpdateCheckInterval; }\r
+ }\r
+\r
+ public TimeSpan FileIdleTimeout\r
+ {\r
+ get { return _settings.FileIdleTimeout; }\r
+ }\r
+\r
+ public bool UpdateForceCheck\r
+ {\r
+ get { return _settings.UpdateForceCheck; }\r
+ }\r
+\r
+ public bool DebugLoggingEnabled\r
+ {\r
+ get { return _settings.DebugLoggingEnabled; }\r
+ set\r
+ {\r
+ _settings.DebugLoggingEnabled = value;\r
+\r
+ SetDebugLevel();\r
+ }\r
+ }\r
+\r
+ public bool IgnoreCertificateErrors\r
+ {\r
+ get { return _settings.IgnoreCertificateErrors; }\r
+ set\r
+ {\r
+ _settings.IgnoreCertificateErrors = value;\r
+\r
+ }\r
+ }\r
+\r
+ private static void SetDebugLevel()\r
+ {\r
+ var loggerRepository = (Hierarchy) log4net.LogManager.GetRepository();\r
+\r
+ var appenders = loggerRepository.GetAppenders();\r
+\r
+ var debugAppender = appenders.OfType<RollingFileAppender>()\r
+ .FirstOrDefault(a => a.Name == "DebugFileAppender");\r
+ if (debugAppender != null)\r
+ {\r
+ var pithosDataPath = PithosDataPath;\r
+ debugAppender.File = Path.Combine(pithosDataPath, "debuglog.xml");\r
+ debugAppender.Threshold = !Settings.Default.DebugLoggingEnabled ? Level.Off : Level.All;\r
+ debugAppender.ActivateOptions();\r
+ }\r
+ }\r
+\r
+ public static string PithosDataPath\r
+ {\r
+ get\r
+ {\r
+ var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);\r
+ var pithosDataPath = Path.Combine(appDataPath, "GRNET\\PITHOS");\r
+ return pithosDataPath;\r
+ }\r
+ }\r
+\r
+ public void Save()\r
+ {\r
+ LockedSave();\r
+ Proxy.SetFromSettings(this);\r
+ }\r
+\r
+ private void LockedSave()\r
+ {\r
+ lock (this)\r
+ {\r
+ _settings.Save();\r
+ }\r
+ }\r
+\r
+ public void Reload()\r
+ {\r
+ _settings.Reload();\r
+ }\r
+\r
+ public void Reset()\r
+ {\r
+ _settings.Reset();\r
+ LockedSave();\r
+ }\r
+ }\r
+}\r