]> granicus.if.org Git - handbrake/commitdiff
WinGui: Improve selection behaviour of the new preset controls.
authorsr55 <sr55.hb@outlook.com>
Mon, 11 Sep 2017 18:48:03 +0000 (19:48 +0100)
committersr55 <sr55.hb@outlook.com>
Mon, 11 Sep 2017 18:48:03 +0000 (19:48 +0100)
win/CS/HandBrakeWPF/Services/Presets/Interfaces/IPresetService.cs
win/CS/HandBrakeWPF/Services/Presets/PresetService.cs
win/CS/HandBrakeWPF/UserSettingConstants.cs
win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs

index 6c6b8ceb671e3c8af8806d72779ab432eb1cb262..f75c054c5dcc4efba0a1e3af02b15c0dc876eb16 100644 (file)
@@ -35,6 +35,16 @@ namespace HandBrakeWPF.Services.Presets.Interfaces
         /// </summary>\r
         void Load();\r
 \r
+        /// <summary>\r
+        /// Save the state of the Preset Treview\r
+        /// </summary>\r
+        void SaveCategoryStates();\r
+\r
+        /// <summary>\r
+        /// Load the state of the Preset Treeview.\r
+        /// </summary>\r
+        void LoadCategoryStates();\r
+\r
         /// <summary>\r
         /// Add a new preset to the system\r
         /// </summary>\r
index 16db5359ae5f73092d12bac2b8f332434cce3b62..f4057dbc356880c13738bed8ba9c3a0cf77bc07e 100644 (file)
@@ -472,7 +472,7 @@ namespace HandBrakeWPF.Services.Presets
                 foreach (var hbpreset in category.ChildrenArray)\r
                 {\r
                     Preset preset = JsonPresetFactory.ImportPreset(hbpreset);\r
-                    preset.IsBuildIn = true; \r
+                    preset.IsBuildIn = true;\r
                     preset.Category = category.PresetName;\r
                     preset.Task.AllowedPassthruOptions = new AllowedPassthru(true); // We don't want to override the built-in preset\r
 \r
@@ -543,6 +543,39 @@ namespace HandBrakeWPF.Services.Presets
             selectedPreset.IsSelected = true;\r
         }\r
 \r
+        public void SaveCategoryStates()\r
+        {\r
+            StringCollection expandedPresets = new StringCollection();\r
+            foreach (IPresetObject presetObject in this.presets)\r
+            {\r
+                PresetDisplayCategory category = presetObject as PresetDisplayCategory;\r
+                if (category != null && category.IsExpanded)\r
+                {\r
+                    expandedPresets.Add(category.Category);\r
+                }\r
+            }\r
+\r
+            this.userSettingService.SetUserSetting(UserSettingConstants.PresetExpandedStateList, expandedPresets);\r
+        }\r
+\r
+        public void LoadCategoryStates()\r
+        {\r
+            StringCollection expandedPresets = this.userSettingService.GetUserSetting<StringCollection>(UserSettingConstants.PresetExpandedStateList);\r
+            if (expandedPresets == null || expandedPresets.Count == 0)\r
+            {\r
+                return;\r
+            }\r
+\r
+            foreach (IPresetObject presetObject in this.presets)\r
+            {\r
+                PresetDisplayCategory category = presetObject as PresetDisplayCategory;\r
+                if (category != null && expandedPresets.Contains(category.Category))\r
+                {\r
+                    category.IsExpanded = true;\r
+                }\r
+            }\r
+        }\r
+\r
         #endregion\r
 \r
         #region Private Helpers\r
@@ -654,10 +687,10 @@ namespace HandBrakeWPF.Services.Presets
                 {\r
                     string filename = this.RecoverFromCorruptedPresetFile(this.presetFile);\r
                     this.errorService.ShowMessageBox(\r
-                       Resources.PresetService_UnableToLoadPresets + filename,\r
-                       Resources.PresetService_UnableToLoad,\r
-                       MessageBoxButton.OK,\r
-                       MessageBoxImage.Exclamation);\r
+                        Resources.PresetService_UnableToLoadPresets + filename,\r
+                        Resources.PresetService_UnableToLoad,\r
+                        MessageBoxButton.OK,\r
+                        MessageBoxImage.Exclamation);\r
 \r
                     this.UpdateBuiltInPresets();\r
                     return; // Update built-in presets stores the presets locally, so just return.\r
@@ -707,7 +740,16 @@ namespace HandBrakeWPF.Services.Presets
                         foreach (HBPreset hbpreset in category.ChildrenArray)\r
                         {\r
                             Preset preset = JsonPresetFactory.ImportPreset(hbpreset);\r
-                            preset.Category = category.PresetName;\r
+                            \r
+                            // Migration\r
+                            if (category.PresetName == "User Presets")\r
+                            {\r
+                                preset.Category = UserPresetCatgoryName;\r
+                            }\r
+                            else\r
+                            {\r
+                                preset.Category = category.PresetName;\r
+                            }\r
                             preset.IsBuildIn = hbpreset.Type == 0;\r
 \r
                             // IF we are using Source Max, Set the Max Width / Height values.\r
@@ -797,9 +839,10 @@ namespace HandBrakeWPF.Services.Presets
                 // Wrap the categories in a container. \r
                 JsonSerializerSettings settings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore };\r
                 PresetTransportContainer container = new PresetTransportContainer(\r
-                    Constants.PresetVersionMajor,\r
-                    Constants.PresetVersionMinor,\r
-                    Constants.PresetVersionMicro) { PresetList = new List<object>() };\r
+                                                             Constants.PresetVersionMajor,\r
+                                                             Constants.PresetVersionMinor,\r
+                                                             Constants.PresetVersionMicro)\r
+                                                         { PresetList = new List<object>() };\r
                 container.PresetList.AddRange(presetCategories.Values);\r
                 container.PresetList.AddRange(uncategorisedPresets);\r
 \r
@@ -867,4 +910,4 @@ namespace HandBrakeWPF.Services.Presets
 \r
         #endregion\r
     }\r
-}\r
+}
\ No newline at end of file
index 74c901d2d99cc7a11b5a4fac54dcc1bf3b4913f8..cde030c2348db87f5930b80c134019f09c59dd5f 100644 (file)
@@ -105,7 +105,7 @@ namespace HandBrakeWPF
         /// The last preview duration\r
         /// </summary>\r
         public const string LastPreviewDuration = "LastPreviewDuration";\r
-    \r
+\r
         /// <summary>\r
         /// When Complete Action\r
         /// </summary>\r
@@ -146,6 +146,11 @@ namespace HandBrakeWPF
         /// </summary>\r
         public const string RemovePunctuation = "RemovePunctuation";\r
 \r
+        /// <summary>\r
+        /// The Show Preset Panel\r
+        /// </summary>\r
+        public const string ShowPresetPanel = "ShowPresetPanel";\r
+\r
         /// <summary>\r
         /// The reset when done action.\r
         /// </summary>\r
index de4476367573dd00d4a9aa1fea2f7b461852d3a2..c8cf354aca3e98e86b05d9b0ac8ae444b6dffa03 100644 (file)
@@ -418,6 +418,11 @@ namespace HandBrakeWPF.ViewModels
                 {\r
                     this.selectedPreset = value;\r
                     this.NotifyOfPropertyChange(() => this.SelectedPreset);\r
+\r
+                    if (value != null)\r
+                    {\r
+                        this.PresetSelect(value);\r
+                    }\r
                 }\r
             }\r
         }\r
@@ -1192,6 +1197,7 @@ namespace HandBrakeWPF.ViewModels
             this.presetService.Load();\r
             this.PresetsCategories = this.presetService.Presets;\r
             this.NotifyOfPropertyChange(() => this.PresetsCategories);\r
+            this.presetService.LoadCategoryStates();\r
 \r
             this.SummaryViewModel.OutputFormatChanged += this.SummaryViewModel_OutputFormatChanged;\r
 \r
@@ -1249,6 +1255,7 @@ namespace HandBrakeWPF.ViewModels
         {\r
             // Shutdown Service\r
             this.queueProcessor.Stop();\r
+            this.presetService.SaveCategoryStates();\r
 \r
             // Unsubscribe from Events.\r
             this.scanService.ScanStarted -= this.ScanStared;\r
@@ -1897,7 +1904,8 @@ namespace HandBrakeWPF.ViewModels
             Preset preset = presetViewModel.Preset;\r
 \r
             this.NotifyOfPropertyChange(() => this.CategoryPresets);\r
-            this.SelectedPreset = preset; // Reselect the preset      \r
+            this.selectedPreset = preset; // Reselect the preset      \r
+            this.NotifyOfPropertyChange(() => this.SelectedPreset);\r
         }\r
 \r
         /// <summary>\r
@@ -2037,23 +2045,24 @@ namespace HandBrakeWPF.ViewModels
                     this.SelectedPresetCategory = this.PresetsCategories.FirstOrDefault(c => c.Category == preset.Category);\r
                 }\r
 \r
-                this.SelectedPreset = preset;\r
-            }\r
+                this.selectedPreset = preset;\r
+                this.NotifyOfPropertyChange(() => this.SelectedPreset);\r
 \r
-            this.presetService.SetSelected(this.selectedPreset);\r
-            \r
-            if (this.selectedPreset != null)\r
-            {\r
-                // Tab Settings\r
-                this.PictureSettingsViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
-                this.VideoViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
-                this.FiltersViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
-                this.AudioViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
-                this.SubtitleViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
-                this.ChaptersViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
-                this.AdvancedViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
-                this.MetaDataViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
-                this.SummaryViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
+                this.presetService.SetSelected(this.selectedPreset);\r
+\r
+                if (this.selectedPreset != null)\r
+                {\r
+                    // Tab Settings\r
+                    this.PictureSettingsViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
+                    this.VideoViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
+                    this.FiltersViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
+                    this.AudioViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
+                    this.SubtitleViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
+                    this.ChaptersViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
+                    this.AdvancedViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
+                    this.MetaDataViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
+                    this.SummaryViewModel.SetPreset(this.selectedPreset, this.CurrentTask);\r
+                }\r
             }\r
         }\r
 \r
@@ -2252,7 +2261,6 @@ namespace HandBrakeWPF.ViewModels
 \r
                 this.SelectedPresetCategory = category;\r
                 this.SelectedPreset = this.presetService.DefaultPreset;\r
-                this.PresetSelect();\r
             }\r
         }\r
 \r