]> granicus.if.org Git - handbrake/commitdiff
WinGui: Fix issues with "Any" language selection with the "First" option used. ...
authorsr55 <sr55.hb@outlook.com>
Sun, 30 Dec 2018 21:25:51 +0000 (21:25 +0000)
committersr55 <sr55.hb@outlook.com>
Sun, 30 Dec 2018 21:25:51 +0000 (21:25 +0000)
win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs
win/CS/HandBrakeWPF/ViewModels/SubtitlesViewModel.cs

index d5b7840ff2cfe5e28aa99415de4322fd0fe3d556..90a3d249f1af2a299e3aa07603649bd5dff43f63 100644 (file)
@@ -393,24 +393,6 @@ namespace HandBrakeWPF.ViewModels
             this.NotifyOfPropertyChange(() => this.Task);\r
         }\r
 \r
-        /// <summary>\r
-        /// Add all remaining for selected languages.\r
-        /// </summary>\r
-        public void AddAllRemainingForSelectedLanguages()\r
-        {\r
-            // Add them if they are not already added.\r
-            foreach (Audio sourceTrack in this.GetSelectedLanguagesTracks())\r
-            {\r
-                // Step 2: Check if the track list already contrains this track\r
-                bool found = this.Task.AudioTracks.Any(audioTrack => Equals(audioTrack.ScannedTrack, sourceTrack));\r
-                if (!found)\r
-                {\r
-                    // If it doesn't, add it.\r
-                    this.Add(sourceTrack, true);\r
-                }\r
-            }\r
-        }\r
-\r
         #endregion\r
 \r
         #region Methods\r
@@ -479,24 +461,6 @@ namespace HandBrakeWPF.ViewModels
             return true;\r
         }\r
 \r
-        /// <summary>\r
-        /// Add all source tracks that don't currently exist on the list.\r
-        /// </summary>\r
-        private void AddAllRemainingTracks()\r
-        {\r
-            // For all the source audio tracks\r
-            foreach (Audio sourceTrack in this.SourceTracks)\r
-            {\r
-                // Step 2: Check if the track list already contrains this track\r
-                bool found = this.Task.AudioTracks.Any(audioTrack => Equals(audioTrack.ScannedTrack, sourceTrack));\r
-                if (!found)\r
-                {\r
-                    // If it doesn't, add it.\r
-                    this.Add(sourceTrack, true);\r
-                }\r
-            }\r
-        }\r
-\r
         /// <summary>\r
         /// Attempt to automatically select the correct audio tracks based on the users settings.\r
         /// </summary>\r
@@ -549,6 +513,13 @@ namespace HandBrakeWPF.ViewModels
         /// </summary>\r
         private void AddFirstForSelectedLanguages()\r
         {\r
+            bool anyLanguageSelected = this.AudioBehaviours.SelectedLangauges.Contains(Constants.Any);\r
+\r
+            if (anyLanguageSelected && this.Task.AudioTracks.Count >= 1)\r
+            {\r
+                return;\r
+            }\r
+\r
             foreach (Audio sourceTrack in this.GetSelectedLanguagesTracks())\r
             {\r
                 // Step 2: Check if the track list already contrains this track\r
@@ -569,6 +540,48 @@ namespace HandBrakeWPF.ViewModels
 \r
                     // If it doesn't, add it.\r
                     this.Add(sourceTrack, true);\r
+\r
+                    // If we are using "(Any)" then break here. We only add the first track in this instance.\r
+                    if (anyLanguageSelected)\r
+                    {\r
+                        break;\r
+                    }\r
+                }\r
+            }\r
+        }\r
+\r
+        /// <summary>\r
+        /// Add all source tracks that don't currently exist on the list.\r
+        /// </summary>\r
+        private void AddAllRemainingTracks()\r
+        {\r
+            // For all the source audio tracks\r
+            foreach (Audio sourceTrack in this.SourceTracks)\r
+            {\r
+                // Step 2: Check if the track list already contrains this track\r
+                bool found = this.Task.AudioTracks.Any(audioTrack => Equals(audioTrack.ScannedTrack, sourceTrack));\r
+                if (!found)\r
+                {\r
+                    // If it doesn't, add it.\r
+                    this.Add(sourceTrack, true);\r
+                }\r
+            }\r
+        }\r
+\r
+        /// <summary>\r
+        /// Add all remaining for selected languages.\r
+        /// </summary>\r
+        public void AddAllRemainingForSelectedLanguages()\r
+        {\r
+            // Add them if they are not already added.\r
+            foreach (Audio sourceTrack in this.GetSelectedLanguagesTracks())\r
+            {\r
+                // Step 2: Check if the track list already contrains this track\r
+                bool found = this.Task.AudioTracks.Any(audioTrack => Equals(audioTrack.ScannedTrack, sourceTrack));\r
+                if (!found)\r
+                {\r
+                    // If it doesn't, add it.\r
+                    this.Add(sourceTrack, true);\r
                 }\r
             }\r
         }\r
@@ -605,21 +618,15 @@ namespace HandBrakeWPF.ViewModels
         /// </returns>\r
         private IEnumerable<Audio> GetSelectedLanguagesTracks()\r
         {\r
-            List<Audio> trackList = new List<Audio>();\r
-\r
-            List<string> isoCodes = LanguageUtilities.GetLanguageCodes(this.AudioBehaviours.SelectedLangauges.ToArray());\r
+            // Translate to Iso Codes\r
+            List<string> iso6392Codes = this.AudioBehaviours.SelectedLangauges.Contains(Constants.Any)\r
+                ? LanguageUtilities.GetIsoCodes()\r
+                : LanguageUtilities.GetLanguageCodes(this.AudioBehaviours.SelectedLangauges.ToArray());\r
 \r
-            if (isoCodes.Contains(Constants.Undefined))\r
-            {\r
-                isoCodes = LanguageUtilities.GetIsoCodes();\r
-            }\r
-\r
-            foreach (string code in isoCodes)\r
-            {\r
-                trackList.AddRange(this.SourceTracks.Where(source => source.LanguageCode.Trim() == code));\r
-            }\r
+            List<Audio> availableTracks =\r
+                this.SourceTracks.Where(audio => iso6392Codes.Contains(audio.LanguageCode.Trim())).ToList();\r
 \r
-            return trackList;\r
+            return availableTracks;\r
         }\r
 \r
         #endregion\r
index fb8dc838ceb6fa57655342abf6d308d592071c52..a847bc0607ab51ef5aff9da166c59ef208c03d0d 100644 (file)
@@ -183,14 +183,7 @@ namespace HandBrakeWPF.ViewModels
         /// </summary>\r
         public void AddAllRemainingForSelectedLanguages()\r
         {\r
-            // Translate to Iso Codes\r
-            List<string> iso6392Codes = this.SubtitleBehaviours.SelectedLangauges.Contains(Constants.Any)\r
-                                            ? LanguageUtilities.GetIsoCodes()\r
-                                            : LanguageUtilities.GetLanguageCodes(\r
-                                                this.SubtitleBehaviours.SelectedLangauges.ToArray());\r
-                                 \r
-            List<Subtitle> availableTracks =\r
-                this.SourceTracks.Where(subtitle => iso6392Codes.Contains(subtitle.LanguageCodeClean)).ToList();\r
+            List<Subtitle> availableTracks = this.GetSelectedLanguagesTracks();\r
 \r
             foreach (Subtitle subtitle in this.SourceTitlesSubset(availableTracks))\r
             {\r
@@ -203,9 +196,10 @@ namespace HandBrakeWPF.ViewModels
         /// </summary>\r
         public void AddFirstForSelectedLanguages()\r
         {\r
+            bool anyLanguageSelected = this.SubtitleBehaviours.SelectedLangauges.Contains(Constants.Any);\r
             foreach (Subtitle sourceTrack in this.GetSelectedLanguagesTracks())\r
             {\r
-                // Step 2: Check if the track list already contrains this track\r
+                // Step 2: Check if the track list already contains this track\r
                 bool found = this.Task.SubtitleTracks.Any(track => Equals(track.SourceTrack, sourceTrack));\r
                 if (!found)\r
                 {\r
@@ -228,6 +222,12 @@ namespace HandBrakeWPF.ViewModels
 \r
                     // If it doesn't, add it.\r
                     this.Add(sourceTrack);\r
+\r
+                    // If we are using "(Any)" then break here. We only add the first track in this instance.\r
+                    if (anyLanguageSelected)\r
+                    {\r
+                        break;\r
+                    }\r
                 }\r
             }\r
         }\r
@@ -632,21 +632,18 @@ namespace HandBrakeWPF.ViewModels
         /// <returns>\r
         /// A list of source subtitle tracks.\r
         /// </returns>\r
-        private IEnumerable<Subtitle> GetSelectedLanguagesTracks()\r
+        private List<Subtitle> GetSelectedLanguagesTracks()\r
         {\r
-            List<Subtitle> trackList = new List<Subtitle>();\r
-\r
-            List<string> isoCodes = this.SubtitleBehaviours.SelectedLangauges.Contains(Constants.Any)\r
-                                            ? LanguageUtilities.GetIsoCodes()\r
-                                            : LanguageUtilities.GetLanguageCodes(\r
-                                                this.SubtitleBehaviours.SelectedLangauges.ToArray());\r
+            // Translate to Iso Codes\r
+            List<string> iso6392Codes = this.SubtitleBehaviours.SelectedLangauges.Contains(Constants.Any)\r
+                ? LanguageUtilities.GetIsoCodes()\r
+                : LanguageUtilities.GetLanguageCodes(\r
+                    this.SubtitleBehaviours.SelectedLangauges.ToArray());\r
 \r
-            foreach (string code in isoCodes)\r
-            {\r
-                trackList.AddRange(this.SourceTracks.Where(source => source.LanguageCode == code));\r
-            }\r
+            List<Subtitle> availableTracks =\r
+                this.SourceTracks.Where(subtitle => iso6392Codes.Contains(subtitle.LanguageCodeClean)).ToList();\r
 \r
-            return trackList;\r
+           return availableTracks;\r
         }\r
 \r
         /// <summary>\r