using System.Linq;\r
using System.Windows.Forms;\r
using Functions;\r
+\r
+ using HandBrake.ApplicationServices.Model;\r
+\r
using Model;\r
\r
/// <summary>\r
/// </summary>\r
public partial class Subtitles : UserControl\r
{\r
+ #region Priavate Variables and Collections\r
+\r
/// <summary>\r
/// Map of languages to language codes\r
/// </summary>\r
/// </summary>\r
private readonly List<SubtitleInfo> subList = new List<SubtitleInfo>();\r
\r
+ #endregion\r
+\r
/// <summary>\r
/// Initializes a new instance of the <see cref="Subtitles"/> class.\r
/// </summary>\r
srt_lang.SelectedIndex = 40;\r
}\r
\r
+ #region Public Methods\r
/// <summary>\r
/// Gets the CLI Query for this panel\r
/// </summary>\r
srtLang += srtLang == string.Empty ? langMap[item.SrtLang] : "," + langMap[item.SrtLang];\r
srtCodeset += srtCodeset == string.Empty ? item.SrtCharCode : "," + item.SrtCharCode;\r
\r
- if (item.Default == "Yes")\r
+ if (item.Default)\r
srtDefault = srtCount.ToString();\r
\r
itemToAdd = item.SrtPath;\r
tempSub = item.Track.Split(' ');\r
trackId = tempSub[0];\r
\r
- if (item.Forced == "Yes")\r
+ if (item.Forced)\r
itemToAdd = trackId;\r
\r
if (itemToAdd != string.Empty)\r
if (trackId.Trim() == "Foreign") // foreign audio search\r
trackId = "scan";\r
\r
- if (item.Burned == "Yes") // burn\r
+ if (item.Burned) // burn\r
subtitleBurn = trackId;\r
\r
- if (item.Default == "Yes") // default\r
+ if (item.Default) // default\r
subtitleDefault = trackId;\r
}\r
}\r
}\r
}\r
\r
- /* Primary Controls */\r
+ /// <summary>\r
+ /// Checks of the current settings will require the m4v file extension\r
+ /// </summary>\r
+ /// <returns>True if Yes</returns>\r
+ public bool RequiresM4V()\r
+ {\r
+ return this.subList.Any(track => track.SubtitleType != SubtitleType.VobSub);\r
+ }\r
+\r
+ /// <summary>\r
+ /// Automatically setup the subtitle tracks.\r
+ /// This handles the automatic setup of subitles which the user can control from the program options\r
+ /// </summary>\r
+ /// <param name="subs">List of Subtitles</param>\r
+ public void SetSubtitleTrackAuto(object[] subs)\r
+ {\r
+ drp_subtitleTracks.Items.Clear();\r
+ drp_subtitleTracks.Items.Add("Foreign Audio Search (Bitmap)");\r
+ drp_subtitleTracks.Items.AddRange(subs);\r
+ drp_subtitleTracks.SelectedIndex = 0;\r
+ Clear();\r
+\r
+ this.AutomaticSubtitleSelection();\r
+ }\r
+\r
+ /// <summary>\r
+ /// Automatic Subtitle Selection based on user preferences.\r
+ /// </summary>\r
+ public void AutomaticSubtitleSelection()\r
+ {\r
+ // Handle Native Language and "Dub Foreign language audio" and "Use Foreign language audio and Subtitles" Options\r
+ if (Properties.Settings.Default.NativeLanguage != "Any")\r
+ {\r
+ if (Properties.Settings.Default.DubMode != 1) // We need to add a subtitle track if this is false.\r
+ {\r
+ foreach (object item in drp_subtitleTracks.Items)\r
+ {\r
+ if (item.ToString().Contains(Properties.Settings.Default.NativeLanguage))\r
+ {\r
+ drp_subtitleTracks.SelectedItem = item;\r
+ BtnAddSubTrackClick(this, new EventArgs());\r
+ }\r
+ }\r
+\r
+ if (drp_subtitleTracks.SelectedIndex == 0 && Properties.Settings.Default.useClosedCaption)\r
+ {\r
+ foreach (object item in drp_subtitleTracks.Items)\r
+ {\r
+ if (item.ToString().Contains("Closed"))\r
+ {\r
+ drp_subtitleTracks.SelectedItem = item;\r
+ BtnAddSubTrackClick(this, new EventArgs());\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ /// <summary>\r
+ /// Clear the Subtitle List\r
+ /// </summary>\r
+ public void Clear()\r
+ {\r
+ lv_subList.Items.Clear();\r
+ subList.Clear();\r
+ }\r
+ #endregion\r
+\r
+ #region Primary Controls\r
\r
/// <summary>\r
/// Add a Subtitle track.\r
string forcedVal = check_forced.CheckState == CheckState.Checked ? "Yes" : "No";\r
string defaultSub = check_default.CheckState == CheckState.Checked ? "Yes" : "No";\r
string burnedVal = check_burned.CheckState == CheckState.Checked &&\r
- (!drp_subtitleTracks.Text.Contains("Text"))\r
+ (drp_subtitleTracks.Text.Contains("(VOBSUB)") || drp_subtitleTracks.Text.Contains("(SSA)"))\r
? "Yes"\r
: "No";\r
string srtCode = "-", srtLangVal = "-", srtPath = "-", srtFile = "-";\r
\r
if (drp_subtitleTracks.SelectedItem.ToString().Contains(".srt"))\r
{\r
- burnedVal = "No";\r
- forcedVal = "No";\r
srtFiles.TryGetValue(drp_subtitleTracks.SelectedItem.ToString(), out srtPath);\r
srtFile = drp_subtitleTracks.SelectedItem.ToString();\r
srtLangVal = srt_lang.SelectedItem.ToString();\r
srtCode = srt_charcode.SelectedItem.ToString();\r
srtOffsetMs = (int)srt_offset.Value;\r
- if (defaultSub == "Yes") SetNoSrtDefault();\r
+ if (defaultSub == "Yes") this.SetDefaultToOffForAllSRTTracks();\r
}\r
else\r
{\r
- if (defaultSub == "Yes") SetNoDefault();\r
- if (burnedVal == "Yes") SetNoBurned();\r
+ if (defaultSub == "Yes") this.SetDefaultToOffForAllTracks();\r
+ if (burnedVal == "Yes") this.SetBurnedToOffForAllTracks();\r
}\r
\r
string trackName = (drp_subtitleTracks.SelectedItem.ToString().Contains(".srt"))\r
SubtitleInfo track = new SubtitleInfo\r
{\r
Track = trackName,\r
- Forced = forcedVal,\r
- Burned = burnedVal,\r
- Default = defaultSub,\r
+ Forced = check_forced.Checked,\r
+ Burned = check_burned.Checked,\r
+ Default = check_default.Checked,\r
SrtLang = srtLangVal,\r
SrtCharCode = srtCode,\r
SrtOffset = srtOffsetMs,\r
/// </param>\r
private void BtnRemoveSubTrackClick(object sender, EventArgs e)\r
{\r
- RemoveTrack();\r
+ this.RemoveSelectedTrack();\r
}\r
\r
/// <summary>\r
srt_lang.SelectedItem = track.SrtLang;\r
srt_offset.Value = track.SrtOffset;\r
srt_charcode.SelectedItem = track.SrtCharCode;\r
- check_default.CheckState = track.Default == "Yes" ? CheckState.Checked : CheckState.Unchecked;\r
+ check_default.CheckState = track.Default ? CheckState.Checked : CheckState.Unchecked;\r
SubGroupBox.Text = "Selected Track: " + track.Track;\r
}\r
else // We have Bitmap/CC\r
drp_subtitleTracks.SelectedIndex = c;\r
c++;\r
}\r
- check_forced.CheckState = track.Forced == "Yes" ? CheckState.Checked : CheckState.Unchecked;\r
- check_burned.CheckState = track.Burned == "Yes" ? CheckState.Checked : CheckState.Unchecked;\r
- check_default.CheckState = track.Default == "Yes" ? CheckState.Checked : CheckState.Unchecked;\r
+ check_forced.CheckState = track.Forced ? CheckState.Checked : CheckState.Unchecked;\r
+ check_burned.CheckState = track.Burned ? CheckState.Checked : CheckState.Unchecked;\r
+ check_default.CheckState = track.Default ? CheckState.Checked : CheckState.Unchecked;\r
SubGroupBox.Text = "Selected Track: " +\r
lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[0].Text;\r
}\r
SubGroupBox.Text = "Selected Track: None (Click \"Add\" to add another track to the list)";\r
}\r
\r
- /* Bitmap / CC / SRT Controls */\r
+ #endregion\r
+\r
+ #region Subtitle Controls\r
\r
/// <summary>\r
/// Handle the Subtitle track dropdown changed event\r
lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[1].Text = check_forced.Checked ? "Yes" : "No";\r
lv_subList.Select();\r
\r
- subList[lv_subList.SelectedIndices[0]].Forced = check_forced.Checked ? "Yes" : "No";\r
+ subList[lv_subList.SelectedIndices[0]].Forced = check_forced.Checked;\r
// Update SubList List<SubtitleInfo> \r
}\r
\r
if (lv_subList.Items.Count == 0 || lv_subList.SelectedIndices.Count == 0) return;\r
\r
if (check_burned.Checked) // Make sure we only have 1 burned track\r
- SetNoBurned();\r
+ this.SetBurnedToOffForAllTracks();\r
\r
lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[2].Text = check_burned.Checked ? "Yes" : "No";\r
lv_subList.Select();\r
\r
- subList[lv_subList.SelectedIndices[0]].Burned = check_burned.Checked ? "Yes" : "No";\r
+ subList[lv_subList.SelectedIndices[0]].Burned = check_burned.Checked;\r
// Update SubList List<SubtitleInfo> \r
}\r
\r
\r
if (check_default.Checked) // Make sure we only have 1 default track\r
if (lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[0].Text.Contains(".srt"))\r
- SetNoSrtDefault();\r
+ this.SetDefaultToOffForAllSRTTracks();\r
else\r
- SetNoDefault();\r
+ this.SetDefaultToOffForAllTracks();\r
\r
lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[3].Text = check_default.Checked ? "Yes" : "No";\r
lv_subList.Select();\r
\r
- subList[lv_subList.SelectedIndices[0]].Default = check_default.Checked ? "Yes" : "No";\r
+ subList[lv_subList.SelectedIndices[0]].Default = check_default.Checked;\r
// Update SubList List<SubtitleInfo>\r
}\r
\r
// Update SubList List<SubtitleInfo>\r
}\r
\r
- /* Right Click Menu */\r
+ #endregion\r
+\r
+ #region Right Click Menu\r
\r
/// <summary>\r
/// Move an item in the subtitle list up\r
/// </param>\r
private void MnuRemoveClick(object sender, EventArgs e)\r
{\r
- RemoveTrack();\r
+ this.RemoveSelectedTrack();\r
}\r
\r
- /* Functions */\r
+ #endregion\r
\r
+ #region Helpers\r
/// <summary>\r
/// Set all Non SRT tracks to Default = NO\r
/// </summary>\r
- private void SetNoDefault()\r
+ private void SetDefaultToOffForAllTracks()\r
{\r
int c = 0;\r
foreach (ListViewItem item in lv_subList.Items)\r
if (item.SubItems[3].Text == "Yes")\r
{\r
item.SubItems[3].Text = "No";\r
- subList[c].Default = "No";\r
+ subList[c].Default = false;\r
}\r
}\r
c++;\r
/// <summary>\r
/// Set all subtitle tracks so that they have no default.\r
/// </summary>\r
- private void SetNoSrtDefault()\r
+ private void SetDefaultToOffForAllSRTTracks()\r
{\r
int c = 0;\r
foreach (ListViewItem item in lv_subList.Items)\r
if (item.SubItems[3].Text == "Yes")\r
{\r
item.SubItems[3].Text = "No";\r
- subList[c].Default = "No";\r
+ subList[c].Default = false;\r
}\r
}\r
c++;\r
/// <summary>\r
/// Set all tracks to Burned = No\r
/// </summary>\r
- private void SetNoBurned()\r
+ private void SetBurnedToOffForAllTracks()\r
{\r
int c = 0;\r
foreach (ListViewItem item in lv_subList.Items)\r
if (item.SubItems[2].Text == "Yes")\r
{\r
item.SubItems[2].Text = "No";\r
- subList[c].Burned = "No";\r
+ subList[c].Burned = false;\r
}\r
c++;\r
}\r
/// <summary>\r
/// Remove a selected track\r
/// </summary>\r
- private void RemoveTrack()\r
+ private void RemoveSelectedTrack()\r
{\r
// Remove the Item and reselect the control if the following conditions are met.\r
if (lv_subList.SelectedItems.Count != 0)\r
}\r
}\r
}\r
-\r
- /// <summary>\r
- /// Clear the Subtitle List\r
- /// </summary>\r
- public void Clear()\r
- {\r
- lv_subList.Items.Clear();\r
- subList.Clear();\r
- }\r
-\r
- /// <summary>\r
- /// Checks of the current settings will require the m4v file extension\r
- /// </summary>\r
- /// <returns>True if Yes</returns>\r
- public bool RequiresM4V()\r
- {\r
- return this.lv_subList.Items.Cast<ListViewItem>().Any(item => item.SubItems.Count != 5 || item.SubItems[1].Text.Contains("(Text)"));\r
- }\r
-\r
- /// <summary>\r
- /// Automatically setup the subtitle tracks.\r
- /// This handles the automatic setup of subitles which the user can control from the program options\r
- /// </summary>\r
- /// <param name="subs">List of Subtitles</param>\r
- public void SetSubtitleTrackAuto(object[] subs)\r
- {\r
- drp_subtitleTracks.Items.Clear();\r
- drp_subtitleTracks.Items.Add("Foreign Audio Search (Bitmap)");\r
- drp_subtitleTracks.Items.AddRange(subs);\r
- drp_subtitleTracks.SelectedIndex = 0;\r
- Clear();\r
-\r
- this.AutomaticSubtitleSelection();\r
- }\r
-\r
- /// <summary>\r
- /// Automatic Subtitle Selection based on user preferences.\r
- /// </summary>\r
- public void AutomaticSubtitleSelection()\r
- {\r
- // Handle Native Language and "Dub Foreign language audio" and "Use Foreign language audio and Subtitles" Options\r
- if (Properties.Settings.Default.NativeLanguage != "Any")\r
- {\r
- if (Properties.Settings.Default.DubMode != 1) // We need to add a subtitle track if this is false.\r
- {\r
- foreach (object item in drp_subtitleTracks.Items)\r
- {\r
- if (item.ToString().Contains(Properties.Settings.Default.NativeLanguage))\r
- {\r
- drp_subtitleTracks.SelectedItem = item;\r
- BtnAddSubTrackClick(this, new EventArgs());\r
- }\r
- }\r
-\r
- if (drp_subtitleTracks.SelectedIndex == 0 && Properties.Settings.Default.useClosedCaption)\r
- {\r
- foreach (object item in drp_subtitleTracks.Items)\r
- {\r
- if (item.ToString().Contains("Closed"))\r
- {\r
- drp_subtitleTracks.SelectedItem = item;\r
- BtnAddSubTrackClick(this, new EventArgs());\r
- }\r
- }\r
- }\r
- }\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Get the list of subtitles.\r
- /// </summary>\r
- /// <returns>A List of SubtitleInfo Object</returns>\r
- public List<SubtitleInfo> GetSubtitleInfoList()\r
- {\r
- return subList;\r
- }\r
+ #endregion\r
}\r
}
\ No newline at end of file