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
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
/// </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
\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
/// </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
/// </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
/// </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
\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
/// <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