-#region
-/* -----------------------------------------------------------------------
- * <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>
- * -----------------------------------------------------------------------
- */
-#endregion
-using System.ComponentModel.Composition;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-using Pithos.Client.WPF.Properties;
-using Pithos.Interfaces;
-using log4net.Appender;
-using log4net.Core;
-using log4net.Repository.Hierarchy;
-
-namespace Pithos.Client.WPF.Configuration
-{
- using System;
-
- [Export(typeof(IPithosSettings))]
- [Export]
- public class PithosSettings : IPithosSettings
- {
- private readonly Settings _settings = Settings.Default;
-
- public PithosSettings()
- {
- //Settings should already be upgraded by the time we reach this point
- Debug.Assert(!_settings.MustUpgrade);
- //_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 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 { return _settings.Accounts ?? (_settings.Accounts = new AccountsCollection()); }
- 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 TimeSpan StartupDelay
- {
- get { return _settings.StartupDelay; }
- set
- {
- if (value < TimeSpan.Zero)
- throw new ArgumentOutOfRangeException();
- _settings.StartupDelay = value;
- }
- }
-
-
- public bool StartOnSystemStartup
- {
- get { return _settings.StartOnSystemStartup; }
- set
- {
- _settings.StartOnSystemStartup = value;
- }
- }
-
- public byte HashingParallelism
- {
- get { return _settings.HashingParallelism; }
- set { _settings.HashingParallelism = value; }
- }
-
- public string UpdateUrl
- {
- get { return _settings.UpdateUrl; }
- }
-
- public bool UpdateDiagnostics
- {
- get { return _settings.UpdateDiagnostics; }
- }
-
- public TimeSpan UpdateCheckInterval
- {
- get { return _settings.UpdateCheckInterval; }
- }
-
- public TimeSpan FileIdleTimeout
- {
- get { return _settings.FileIdleTimeout; }
- }
-
- public bool UpdateForceCheck
- {
- get { return _settings.UpdateForceCheck; }
- }
-
- public bool DebugLoggingEnabled
- {
- get { return _settings.DebugLoggingEnabled; }
- set
- {
- _settings.DebugLoggingEnabled = value;
-
- SetDebugLevel();
- }
- }
-
- public bool IgnoreCertificateErrors
- {
- get { return _settings.IgnoreCertificateErrors; }
- set
- {
- _settings.IgnoreCertificateErrors = value;
-
- }
- }
-
- private static void SetDebugLevel()
- {
- var loggerRepository = (Hierarchy) log4net.LogManager.GetRepository();
-
- var appenders = loggerRepository.GetAppenders();
-
- var debugAppender = appenders.OfType<RollingFileAppender>()
- .FirstOrDefault(a => a.Name == "DebugFileAppender");
- if (debugAppender != null)
- {
- var pithosDataPath = PithosDataPath;
- debugAppender.File = Path.Combine(pithosDataPath, "debuglog.xml");
- debugAppender.Threshold = !Settings.Default.DebugLoggingEnabled ? Level.Off : Level.All;
- debugAppender.ActivateOptions();
- }
- }
-
- public static string PithosDataPath
- {
- get
- {
- var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
- var pithosDataPath = Path.Combine(appDataPath, "GRNET\\PITHOS");
- return pithosDataPath;
- }
- }
-
- public void Save()
- {
- _settings.Save();
- Proxy.SetFromSettings(this);
- }
-
- public void Reload()
- {
- _settings.Reload();
- }
-
- public void Reset()
- {
- _settings.Reset();
- _settings.Save();
- }
- }
-}
+#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