]> granicus.if.org Git - handbrake/commitdiff
WinGui: Support importing preset categories that can be exported from the MacGUI...
authorsr55 <sr55.hb@outlook.com>
Wed, 7 Jun 2017 19:31:46 +0000 (20:31 +0100)
committersr55 <sr55.hb@outlook.com>
Wed, 7 Jun 2017 19:31:46 +0000 (20:31 +0100)
win/CS/HandBrake.ApplicationServices/Interop/Json/Presets/PresetCategory.cs
win/CS/HandBrakeWPF/Properties/Resources.Designer.cs
win/CS/HandBrakeWPF/Properties/Resources.resx
win/CS/HandBrakeWPF/Services/Presets/Factories/JsonPresetFactory.cs
win/CS/HandBrakeWPF/Services/Presets/PresetService.cs

index 799ea0876437327b0cc07178c54a8c4d9a24ab75..182772106f9c7715cf5cdd17eacce8677f6286f1 100644 (file)
@@ -31,6 +31,11 @@ namespace HandBrake.ApplicationServices.Interop.Json.Presets
         /// </summary>\r
         public string PresetName { get; set; }\r
 \r
+        /// <summary>\r
+        /// Description for the preset group.\r
+        /// </summary>\r
+        public string PresetDescription { get; set; }\r
+\r
         /// <summary>\r
         /// Gets or sets the type.\r
         /// </summary>\r
index 13bc0a31225d7fdf0003c9b02d3bbc153e7e77b2..a2b1d136a9da1a0e46486aae778180756a9e17da 100644 (file)
@@ -832,7 +832,7 @@ namespace HandBrakeWPF.Properties {
         }\r
         \r
         /// <summary>\r
-        ///   Looks up a localized string similar to This preset appears to already exist. Would you like to overwrite it?.\r
+        ///   Looks up a localized string similar to The preset &quot;{0}&quot; already exists. Would you like to overwrite it?.\r
         /// </summary>\r
         public static string Main_PresetOverwriteWarning {\r
             get {\r
index dbd14c314ee02d7466fdbfdae5313605a44b4ec3..2e318f3cdbe2ff9a340163a653b3a13eafc11034 100644 (file)
@@ -378,7 +378,7 @@ In order to use the QuickSync encoder, you must:
     <value>You can not import a preset with the same name as a built-in preset.</value>\r
   </data>\r
   <data name="Main_PresetOverwriteWarning" xml:space="preserve">\r
-    <value>This preset appears to already exist. Would you like to overwrite it?</value>\r
+    <value>The preset "{0}" already exists. Would you like to overwrite it?</value>\r
   </data>\r
   <data name="Main_Presets" xml:space="preserve">\r
     <value>Presets</value>\r
index 55eb3f1b98b69bd05f4ea66c8bea3d83b1342c0f..9b252e0309484653f463bba7c8af0ca6d5deb0c8 100644 (file)
@@ -429,6 +429,11 @@ namespace HandBrakeWPF.Services.Presets.Factories
 \r
                     // track.CompressionLevel = audioTrack.AudioCompressionLevel;\r
                     // track.AudioDitherMethod = audioTrack.AudioDitherMethod;\r
+                    if (audioTrack.AudioEncoder == "ca_aac")\r
+                    {\r
+                        audioTrack.AudioEncoder = "av_aac"; // No Core Audio support on windows.\r
+                    }\r
+\r
                     track.Encoder = EnumHelper<AudioEncoder>.GetValue(audioTrack.AudioEncoder);\r
                     track.MixDown = HandBrakeEncoderHelpers.GetMixdown(audioTrack.AudioMixdown);\r
 \r
index 61e051fcd30e8793c80d8b2b0577da56704d1d5d..b581becb2df99aae668b34783eac63e6b5a2826a 100644 (file)
@@ -43,6 +43,8 @@ namespace HandBrakeWPF.Services.Presets
     /// </summary>\r
     public class PresetService : IPresetService\r
     {\r
+        // TODO Strip out the error handling from this service and let upstream UI layer handle it.\r
+\r
         #region Private Variables\r
 \r
         public const int ForcePresetReset = 3;\r
@@ -195,50 +197,30 @@ namespace HandBrakeWPF.Services.Presets
                 {\r
                     foreach (var objectPreset in container.PresetList)\r
                     {\r
-                        HBPreset hbPreset = JsonConvert.DeserializeObject<HBPreset>(objectPreset.ToString());\r
-\r
-                        Preset preset = null;\r
-                        try\r
+                        PresetCategory category = JsonConvert.DeserializeObject<PresetCategory>(objectPreset.ToString());\r
+                        if (category != null && category.ChildrenArray.Count > 0)\r
                         {\r
-                            preset = JsonPresetFactory.ImportPreset(hbPreset);\r
-                            preset.Category = UserPresetCatgoryName; // TODO can we get this from the preset?\r
-\r
-                            // IF we are using Source Max, Set the Max Width / Height values.\r
-                            if (preset.PictureSettingsMode == PresetPictureSettingsMode.SourceMaximum)\r
+                            foreach (HBPreset hbPreset in category.ChildrenArray)\r
                             {\r
-                                preset.Task.MaxWidth = preset.Task.Height;\r
-                                preset.Task.MaxHeight = preset.Task.Width;\r
+                                Preset preset = this.ConvertHbPreset(hbPreset);\r
+                                if (preset != null)\r
+                                {\r
+                                    this.AddOrUpdateImportedPreset(preset);\r
+                                }\r
                             }\r
                         }\r
-                        catch (Exception exc)\r
-                        {\r
-                            this.errorService.ShowError(Resources.Main_PresetImportFailed, Resources.Main_PresetImportFailedSolution, exc);\r
-                        }\r
-\r
-                        if (preset == null)\r
-                        {\r
-                            this.errorService.ShowError(Resources.Main_PresetImportFailed, Resources.Main_PresetImportFailedSolution, string.Empty);\r
-                            return;\r
-                        }\r
-\r
-                        if (this.CheckIfPresetExists(preset.Name))\r
+                        else\r
                         {\r
-                            if (!this.CanUpdatePreset(preset.Name))\r
-                            {\r
-                                MessageBox.Show(Resources.Main_PresetErrorBuiltInName, Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);\r
-                                return;\r
-                            }\r
-\r
-                            MessageBoxResult result = MessageBox.Show(Resources.Main_PresetOverwriteWarning, Resources.Overwrite, MessageBoxButton.YesNo, MessageBoxImage.Warning);\r
-                            if (result == MessageBoxResult.Yes)\r
+                            HBPreset hbPreset = JsonConvert.DeserializeObject<HBPreset>(objectPreset.ToString());\r
+                            if (hbPreset != null)\r
                             {\r
-                                this.Update(preset);\r
+                                Preset preset = this.ConvertHbPreset(hbPreset);\r
+                                if (preset != null)\r
+                                {\r
+                                    this.AddOrUpdateImportedPreset(preset);\r
+                                }\r
                             }\r
                         }\r
-                        else\r
-                        {\r
-                            this.Add(preset, false);\r
-                        }\r
                     }\r
                 }\r
             }\r
@@ -871,6 +853,51 @@ namespace HandBrakeWPF.Services.Presets
             }\r
         }\r
 \r
+        private Preset ConvertHbPreset(HBPreset hbPreset)\r
+        {\r
+            Preset preset = null;\r
+\r
+            preset = JsonPresetFactory.ImportPreset(hbPreset);\r
+            preset.Category = UserPresetCatgoryName; // TODO can we get this from the preset?\r
+\r
+            // IF we are using Source Max, Set the Max Width / Height values.\r
+            if (preset.PictureSettingsMode == PresetPictureSettingsMode.SourceMaximum)\r
+            {\r
+                preset.Task.MaxWidth = preset.Task.Height;\r
+                preset.Task.MaxHeight = preset.Task.Width;\r
+            }\r
+\r
+            return preset;\r
+        }\r
+\r
+        private void AddOrUpdateImportedPreset(Preset preset)\r
+        {\r
+            if (preset == null)\r
+            {\r
+                this.errorService.ShowError(Resources.Main_PresetImportFailed, Resources.Main_PresetImportFailedSolution, string.Empty);\r
+                return;\r
+            }\r
+\r
+            if (this.CheckIfPresetExists(preset.Name))\r
+            {\r
+                if (!this.CanUpdatePreset(preset.Name))\r
+                {\r
+                    MessageBox.Show(Resources.Main_PresetErrorBuiltInName, Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);\r
+                    return;\r
+                }\r
+\r
+                MessageBoxResult result = MessageBox.Show(string.Format(Resources.Main_PresetOverwriteWarning, preset.Name), Resources.Overwrite, MessageBoxButton.YesNo, MessageBoxImage.Warning);\r
+                if (result == MessageBoxResult.Yes)\r
+                {\r
+                    this.Update(preset);\r
+                }\r
+            }\r
+            else\r
+            {\r
+                this.Add(preset, false);\r
+            }\r
+        }\r
+\r
         #endregion\r
     }\r
 }\r