diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj index 2c146f5fc..81ee80791 100644 --- a/Artemis/Artemis/Artemis.csproj +++ b/Artemis/Artemis/Artemis.csproj @@ -629,6 +629,7 @@ + diff --git a/Artemis/Artemis/DAL/ProfileProvider.cs b/Artemis/Artemis/DAL/ProfileProvider.cs index 0207e7a03..7060f8801 100644 --- a/Artemis/Artemis/DAL/ProfileProvider.cs +++ b/Artemis/Artemis/DAL/ProfileProvider.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Reflection; using System.Xml.Serialization; using Artemis.DeviceProviders; using Artemis.Models; @@ -12,7 +13,8 @@ namespace Artemis.DAL { public static class ProfileProvider { - private static Logger _logger = LogManager.GetCurrentClassLogger(); + private static readonly Logger _logger = LogManager.GetCurrentClassLogger(); + private static readonly string ProfileFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Artemis\profiles"; @@ -70,6 +72,7 @@ namespace Artemis.DAL private static List ReadProfiles() { CheckProfiles(); + InstallDefaults(); var profiles = new List(); // Create the directory structure @@ -83,7 +86,7 @@ namespace Artemis.DAL { using (var file = new StreamReader(path)) { - var prof = (ProfileModel)deserializer.Deserialize(file); + var prof = (ProfileModel) deserializer.Deserialize(file); if (prof.GameName?.Length > 1 && prof.KeyboardSlug?.Length > 1 && prof.Name?.Length > 1) profiles.Add(prof); } @@ -92,12 +95,25 @@ namespace Artemis.DAL { _logger.Error("Failed to load profile: {0} - {1}", path, e.InnerException.Message); } - } return profiles; } + /// + /// Unpacks the default profiles into the profile directory + /// + private static void InstallDefaults() + { + var test = Assembly.GetExecutingAssembly().GetManifestResourceNames(); + //var stream = + // Assembly.GetExecutingAssembly() + // .GetManifestResourceStream("Artemis.Properties.Resources.logo.jpg"); + + //Resources. + //ZipPackage.Open(Re.defaultProfiles) + } + /// /// Makes sure the profile directory structure is in order and places default profiles /// diff --git a/Artemis/Artemis/Properties/Resources.Designer.cs b/Artemis/Artemis/Properties/Resources.Designer.cs index 50e5d22e3..b237a9be5 100644 --- a/Artemis/Artemis/Properties/Resources.Designer.cs +++ b/Artemis/Artemis/Properties/Resources.Designer.cs @@ -120,6 +120,16 @@ namespace Artemis.Properties { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] defaultProfiles { + get { + object obj = ResourceManager.GetObject("defaultProfiles", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized string similar to "Artemis" ///{ diff --git a/Artemis/Artemis/Properties/Resources.resx b/Artemis/Artemis/Properties/Resources.resx index 29d7d58bc..938085066 100644 --- a/Artemis/Artemis/Properties/Resources.resx +++ b/Artemis/Artemis/Properties/Resources.resx @@ -175,4 +175,7 @@ ..\Resources\Keyboards\blackwidow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Keyboards\default-profiles.zip;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/Artemis/Artemis/Resources/Keyboards/default-profiles.zip b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip new file mode 100644 index 000000000..a7f03cbde Binary files /dev/null and b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip differ