summaryrefslogtreecommitdiffstats
path: root/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs
diff options
context:
space:
mode:
authorsr55 <[email protected]>2013-11-19 22:41:36 +0000
committersr55 <[email protected]>2013-11-19 22:41:36 +0000
commitf0dbe6e2a2af173e60a20da86c78692757e69112 (patch)
tree5c7e67c77449b3839654e2d34e1105faec5ed114 /win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs
parent830bb18b173a1c68720eb0df2ed860daea7d4c7e (diff)
WinGui: Finish off moving the User Settings service to the UI Layer.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5898 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs')
-rw-r--r--win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs226
1 files changed, 0 insertions, 226 deletions
diff --git a/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs b/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs
deleted file mode 100644
index 7f40bffff..000000000
--- a/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs
+++ /dev/null
@@ -1,226 +0,0 @@
-// --------------------------------------------------------------------------------------------------------------------
-// <copyright file="UserSettingService.cs" company="HandBrake Project (http://handbrake.fr)">
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
-// </copyright>
-// <summary>
-// The User Setting Serivce
-// </summary>
-// --------------------------------------------------------------------------------------------------------------------
-
-namespace HandBrake.ApplicationServices.Services
-{
- using System;
- using System.Collections.Specialized;
- using System.IO;
- using System.Linq;
- using System.Reflection;
- using System.Xml.Serialization;
-
- using HandBrake.ApplicationServices.Collections;
- using HandBrake.ApplicationServices.EventArgs;
- using HandBrake.ApplicationServices.Exceptions;
- using HandBrake.ApplicationServices.Services.Interfaces;
-
- /// <summary>
- /// The User Setting Serivce
- /// </summary>
- public class UserSettingService : IUserSettingService
- {
- /// <summary>
- /// The Settings File
- /// </summary>
- private readonly string settingsFile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\HandBrake\\settings.xml";
-
- /// <summary>
- /// The XML Serializer
- /// </summary>
- readonly XmlSerializer serializer = new XmlSerializer(typeof(SerializableDictionary<string, object>));
-
- /// <summary>
- /// The User Settings
- /// </summary>
- private SerializableDictionary<string, object> userSettings;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="UserSettingService"/> class.
- /// </summary>
- public UserSettingService()
- {
- this.Load();
- }
-
- /// <summary>
- /// The setting changed.
- /// </summary>
- public event SettingEventHandler SettingChanged;
-
- /// <summary>
- /// Set the specified user setting.
- /// </summary>
- /// <param name="name">
- /// Name of the property
- /// </param>
- /// <param name="value">
- /// The value to store.
- /// </param>
- public void SetUserSetting(string name, object value)
- {
- this.userSettings[name] = value;
- this.Save();
-
- this.OnSettingChanged(new SettingChangedEventArgs { Key = name, Value = value });
- }
-
- /// <summary>
- /// Get user setting for a given key.
- /// </summary>
- /// <param name="name">
- /// The name.
- /// </param>
- /// <typeparam name="T">
- /// The Type of the setting
- /// </typeparam>
- /// <returns>
- /// The user setting
- /// </returns>
- public T GetUserSetting<T>(string name)
- {
- if (this.userSettings.ContainsKey(name))
- {
- return (T)this.userSettings[name];
- }
-
- return default(T);
- }
-
- /// <summary>
- /// Get an StringCollection type user setting
- /// </summary>
- /// <param name="name">
- /// The setting name
- /// </param>
- /// <returns>
- /// The settings value
- /// </returns>
- public StringCollection GetUserSettingStringCollection(string name)
- {
- return (StringCollection)this.userSettings[name];
- }
-
- /// <summary>
- /// The on setting changed.
- /// </summary>
- /// <param name="e">
- /// The e.
- /// </param>
- protected virtual void OnSettingChanged(SettingChangedEventArgs e)
- {
- SettingEventHandler handler = this.SettingChanged;
- if (handler != null)
- {
- handler(this, e);
- }
- }
-
- /// <summary>
- /// Save the User Settings
- /// </summary>
- private void Save()
- {
- try
- {
- string directory = Path.GetDirectoryName(this.settingsFile);
- if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
- {
- Directory.CreateDirectory(directory);
- }
-
- using (FileStream strm = new FileStream(this.settingsFile, FileMode.Create, FileAccess.Write))
- {
- serializer.Serialize(strm, this.userSettings);
- }
- }
- catch (Exception exc)
- {
- throw new GeneralApplicationException(
- "A problem occured when trying to save your preferences.",
- "Any settings you changed may need to be reset the next time HandBrake launches.",
- exc);
- }
- }
-
- /// <summary>
- /// Load the User Settings
- /// </summary>
- private void Load()
- {
- try
- {
- // Load up the users current settings file.
- if (File.Exists(this.settingsFile))
- {
- using (StreamReader reader = new StreamReader(this.settingsFile))
- {
- SerializableDictionary<string, object> data = (SerializableDictionary<string, object>)serializer.Deserialize(reader);
- this.userSettings = data;
- }
- }
- else
- {
- this.userSettings = new SerializableDictionary<string, object>();
- }
-
- // Add any missing / new settings
- SerializableDictionary<string, object> defaults = this.GetDefaults();
- foreach (var item in defaults.Where(item => !this.userSettings.Keys.Contains(item.Key)))
- {
- this.userSettings.Add(item.Key, item.Value);
- this.Save();
- }
- }
- catch (Exception exc)
- {
- try
- {
- this.userSettings = this.GetDefaults();
- if (File.Exists(this.settingsFile))
- {
- File.Delete(this.settingsFile);
- }
- this.Save();
-
- throw new GeneralApplicationException("Warning, your settings have been reset!", "Your user settings file was corrupted or inaccessible. Settings have been reset to defaults.", exc);
- }
- catch (Exception)
- {
- throw new GeneralApplicationException("Unable to load user settings file: " + this.settingsFile, "Your user settings file appears to be inaccessible or corrupted. You may have to delete the file and let HandBrake generate a new one.", exc);
- }
- }
- }
-
- /// <summary>
- /// Load Default Settings
- /// </summary>
- /// <returns>
- /// The get defaults.
- /// </returns>
- private SerializableDictionary<string, object> GetDefaults()
- {
- try
- {
- Assembly assembly = Assembly.GetEntryAssembly();
- Stream stream = assembly.GetManifestResourceStream("HandBrakeWPF.defaultsettings.xml");
- if (stream != null)
- {
- return (SerializableDictionary<string, object>)this.serializer.Deserialize(stream);
- }
- }
- catch (Exception exc)
- {
- return new SerializableDictionary<string, object>();
- }
-
- return new SerializableDictionary<string, object>();
- }
- }
-}