aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Dlna/PlayTo/Configuration/PlayToConfiguration.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Dlna/PlayTo/Configuration/PlayToConfiguration.cs')
-rw-r--r--MediaBrowser.Dlna/PlayTo/Configuration/PlayToConfiguration.cs120
1 files changed, 91 insertions, 29 deletions
diff --git a/MediaBrowser.Dlna/PlayTo/Configuration/PlayToConfiguration.cs b/MediaBrowser.Dlna/PlayTo/Configuration/PlayToConfiguration.cs
index d3fcb24ada..5874f30e47 100644
--- a/MediaBrowser.Dlna/PlayTo/Configuration/PlayToConfiguration.cs
+++ b/MediaBrowser.Dlna/PlayTo/Configuration/PlayToConfiguration.cs
@@ -1,26 +1,31 @@
-namespace MediaBrowser.Dlna.PlayTo.Configuration
+using MediaBrowser.Model.Logging;
+using System;
+using System.IO;
+using System.Xml.Serialization;
+namespace MediaBrowser.Dlna.PlayTo.Configuration
{
public class PlayToConfiguration
{
- private static readonly string[] _supportedStaticFormats = { "mp3", "flac", "m4a", "wma", "avi", "mp4", "mkv", "ts" };
- public static string[] SupportedStaticFormats
+ [XmlIgnore]
+ public static PlayToConfiguration Instance
{
- get
- {
- return _supportedStaticFormats;
- }
+ get;
+ private set;
}
- private static readonly DlnaProfile[] _profiles = GetDefaultProfiles();
- public static DlnaProfile[] Profiles
+ [XmlIgnore]
+ public string[] SupportedStaticFormats
{
get
{
- return _profiles;
+ return new[] { "mp3", "flac", "m4a", "wma", "avi", "mp4", "mkv" };
}
}
- private static DlnaProfile[] GetDefaultProfiles()
+ public DlnaProfile[] Profiles
+ { get; set; }
+
+ public static DlnaProfile[] GetDefaultProfiles()
{
var profile0 = new DlnaProfile
{
@@ -31,9 +36,9 @@
ModelName = "Samsung DTV DMR",
TranscodeSettings = new[]
{
- new TranscodeSettings {Container = "mkv", MimeType = "x-mkv"},
- new TranscodeSettings {Container = "flac", TargetContainer = "mp3"},
- new TranscodeSettings {Container = "m4a", TargetContainer = "mp3"}
+ new TranscodeSetting {Container = "mkv", MimeType = "x-mkv"},
+ new TranscodeSetting {Container = "flac", TargetContainer = "mp3"},
+ new TranscodeSetting {Container = "m4a", TargetContainer = "mp3"}
}
};
@@ -45,9 +50,9 @@
ModelNumber = @"(1\.0)|(AllShare1\.0)",
TranscodeSettings = new[]
{
- new TranscodeSettings {Container = "mkv", MimeType = "x-mkv"},
- new TranscodeSettings {Container = "flac", TargetContainer = "mp3"},
- new TranscodeSettings {Container = "m4a", TargetContainer = "mp3"}
+ new TranscodeSetting {Container = "mkv", MimeType = "x-mkv"},
+ new TranscodeSetting {Container = "flac", TargetContainer = "mp3"},
+ new TranscodeSetting {Container = "m4a", TargetContainer = "mp3"}
}
};
@@ -59,9 +64,9 @@
ModelNumber = @"(1\.0)|(AllShare1\.0)",
TranscodeSettings = new[]
{
- new TranscodeSettings {Container = "mkv", MimeType = "x-mkv"},
- new TranscodeSettings {Container = "flac", TargetContainer = "mp3"},
- new TranscodeSettings {Container = "m4a", TargetContainer = "mp3"}
+ new TranscodeSetting {Container = "mkv", MimeType = "x-mkv"},
+ new TranscodeSetting {Container = "flac", TargetContainer = "mp3"},
+ new TranscodeSetting {Container = "m4a", TargetContainer = "mp3"}
}
};
@@ -72,9 +77,9 @@
ModelName = "Xbox 360",
TranscodeSettings = new[]
{
- new TranscodeSettings {Container = "mkv", TargetContainer = "ts"},
- new TranscodeSettings {Container = "flac", TargetContainer = "mp3"},
- new TranscodeSettings {Container = "m4a", TargetContainer = "mp3"}
+ new TranscodeSetting {Container = "mkv", TargetContainer = "ts"},
+ new TranscodeSetting {Container = "flac", TargetContainer = "mp3"},
+ new TranscodeSetting {Container = "m4a", TargetContainer = "mp3"}
}
};
@@ -86,9 +91,9 @@
FriendlyName = "Xbox-SystemOS",
TranscodeSettings = new[]
{
- new TranscodeSettings {Container = "mkv", TargetContainer = "ts"},
- new TranscodeSettings {Container = "flac", TargetContainer = "mp3"},
- new TranscodeSettings {Container = "m4a", TargetContainer = "mp3"}
+ new TranscodeSetting {Container = "mkv", TargetContainer = "ts"},
+ new TranscodeSetting {Container = "flac", TargetContainer = "mp3"},
+ new TranscodeSetting {Container = "m4a", TargetContainer = "mp3"}
}
};
@@ -97,7 +102,7 @@
Name = "Sony Bravia TV (2012)",
ClientType = "TV",
FriendlyName = @"BRAVIA KDL-\d{2}[A-Z]X\d5(\d|G).*",
- TranscodeSettings = TranscodeSettings.GetDefaultTranscodingSettings()
+ TranscodeSettings = TranscodeSetting.GetDefaultTranscodingSettings()
};
//WDTV does not need any transcoding of the formats we support statically
@@ -106,7 +111,7 @@
Name = "WDTV Live [Profile]",
ClientType = "DLNA",
ModelName = "WD TV HD Live",
- TranscodeSettings = new TranscodeSettings[] { }
+ TranscodeSettings = new TranscodeSetting[] { }
};
var profile7 = new DlnaProfile
@@ -115,7 +120,7 @@
Name = "Linksys DMA2100 [Profile]",
ClientType = "DLNA",
ModelName = "DMA2100us",
- TranscodeSettings = new TranscodeSettings[] { }
+ TranscodeSettings = new TranscodeSetting[] { }
};
return new[]
@@ -130,5 +135,62 @@
profile7
};
}
+
+ public static void Load(string path, ILogger logger)
+ {
+ if (!File.Exists(path))
+ {
+ Instance = CreateNewSettingsFile(path, logger);
+
+ }
+ else
+ {
+ try
+ {
+ XmlSerializer deserializer = new XmlSerializer(typeof(PlayToConfiguration));
+ using (var textReader = new StreamReader(path))
+ {
+ var configuration = (PlayToConfiguration)deserializer.Deserialize(textReader);
+ Instance = configuration;
+ textReader.Close();
+ }
+ }
+ catch (Exception e)
+ {
+ // Something went wrong with the loading of the file
+ // Maybe a user created a faulty config?
+ // Delete the file and use default settings
+ logger.ErrorException("Error loading PlayTo configuration", e);
+ Instance = CreateNewSettingsFile(path, logger);
+ }
+ }
+ }
+
+ private static PlayToConfiguration CreateNewSettingsFile(string path, ILogger logger)
+ {
+ var defaultConfig = new PlayToConfiguration();
+ defaultConfig.Profiles = PlayToConfiguration.GetDefaultProfiles();
+
+ try
+ {
+ if (File.Exists(path))
+ File.Delete(path);
+
+ XmlSerializer serializer = new XmlSerializer(typeof(PlayToConfiguration));
+
+ using (var fileStream = new StreamWriter(path))
+ {
+ serializer.Serialize(fileStream, defaultConfig);
+ fileStream.Close();
+ }
+ }
+ catch(Exception e)
+ {
+ //Something went wrong deleting or creating the file, Log and continue with the default profile unsaved
+ logger.ErrorException("Error creating default PlayTo configuration", e);
+ }
+ return defaultConfig;
+ }
+
}
}