OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / Controls / AudioPanel.cs
index 272f88c..b394e3c 100644 (file)
@@ -12,93 +12,96 @@ namespace Handbrake.Controls
     public partial class AudioPanel : UserControl\r
     {\r
         public event EventHandler AudioListChanged;\r
+\r
         public AudioPanel()\r
         {\r
             InitializeComponent();\r
+            drp_audioMix.SelectedIndex = 0;\r
         }\r
-        \r
+\r
         // Audio Track Options\r
-        private void drp_track1Audio_SelectedIndexChanged(object sender, EventArgs e)\r
+        private void drp_audioTrack_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
             {\r
-                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[1].Text = drp_track1Audio.Text;\r
+                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[1].Text = drp_audioTrack.Text;\r
                 lv_audioList.Select();\r
             }\r
-\r
         }\r
-        private void drp_audenc_1_SelectedIndexChanged(object sender, EventArgs e)\r
+        private void drp_audenc_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
-            if (drp_audenc_1.Text.Contains("AC3") || drp_audenc_1.Text.Contains("DTS"))\r
+            // Setup the widgets with the correct avail options\r
+            if (drp_audioEncoder.Text.Contains("AAC"))\r
             {\r
-                drp_audmix_1.Enabled = false;\r
-                drp_audbit_1.Enabled = false;\r
-                drp_audsr_1.Enabled = false;\r
-\r
-                drp_audmix_1.SelectedIndex = 0;\r
-                drp_audbit_1.SelectedIndex = 0;\r
-                drp_audsr_1.SelectedIndex = 0;\r
+                setMixDown(true);\r
+                setBitrate(160);\r
             }\r
             else\r
             {\r
-                drp_audmix_1.Enabled = true;\r
-                drp_audbit_1.Enabled = true;\r
-                drp_audsr_1.Enabled = true;\r
-\r
-                drp_audmix_1.Text = "Automatic";\r
-                drp_audbit_1.Text = "160";\r
-                drp_audsr_1.Text = "Auto";\r
+                setMixDown(false);\r
+                setBitrate(320);\r
             }\r
 \r
-            if (drp_audenc_1.Text.Contains("AAC"))\r
+            // Configure the widgets with values\r
+            if (drp_audioEncoder.Text.Contains("AC3") || drp_audioEncoder.Text.Contains("DTS"))\r
             {\r
-                setMixDownAllOptions(drp_audmix_1);\r
-                setBitrateSelections160(drp_audbit_1);\r
+                drp_audioMix.Enabled = false;\r
+                drp_audioBitrate.Enabled = false;\r
+                drp_audioSample.Enabled = false;\r
+\r
+                drp_audioMix.SelectedIndex = 0;\r
+                drp_audioBitrate.SelectedIndex = 0;\r
+                drp_audioSample.SelectedIndex = 0;\r
             }\r
             else\r
             {\r
-                setMixDownNotAAC(drp_audmix_1);\r
-                setBitrateSelections320(drp_audbit_1);\r
+                drp_audioMix.Enabled = true;\r
+                drp_audioBitrate.Enabled = true;\r
+                drp_audioSample.Enabled = true;\r
+\r
+                drp_audioMix.SelectedIndex = 0;\r
+                drp_audioBitrate.SelectedIndex = 9;\r
+                drp_audioSample.SelectedIndex = 0;\r
             }\r
 \r
             // Update an item in the Audio list if required.\r
             if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
             {\r
-                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[2].Text = drp_audenc_1.Text;\r
+                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[2].Text = drp_audioEncoder.Text;\r
                 lv_audioList.Select();\r
             }\r
         }\r
-        private void drp_audmix_1_SelectedIndexChanged(object sender, EventArgs e)\r
+        private void drp_audmix_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
-            if ((drp_audenc_1.Text.Contains("AAC")) && (drp_audmix_1.Text == "6 Channel Discrete"))\r
-                setBitrateSelections384(drp_audbit_1);\r
-            else if ((drp_audenc_1.Text.Contains("AAC")) && (drp_audmix_1.Text != "6 Channel Discrete"))\r
-                setBitrateSelections160(drp_audbit_1); drp_audbit_1.Text = "160";\r
+            if ((drp_audioEncoder.Text.Contains("AAC")) && (drp_audioMix.Text == "6 Channel Discrete"))\r
+                setBitrate(384);\r
+            else if ((drp_audioEncoder.Text.Contains("AAC")) && (drp_audioMix.Text != "6 Channel Discrete"))\r
+                setBitrate(160);\r
 \r
             // Update an item in the Audio list if required.\r
             if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
             {\r
-                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[3].Text = drp_audmix_1.Text;\r
+                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[3].Text = drp_audioMix.Text;\r
                 lv_audioList.Select();\r
             }\r
         }\r
-        private void drp_audsr_1_SelectedIndexChanged(object sender, EventArgs e)\r
+        private void drp_audsr_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             // Update an item in the Audio list if required.\r
             if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
             {\r
-                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[4].Text = drp_audsr_1.Text;\r
+                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[4].Text = drp_audioSample.Text;\r
                 lv_audioList.Select();\r
             }\r
         }\r
-        private void drp_audbit_1_SelectedIndexChanged(object sender, EventArgs e)\r
+        private void drp_audbit_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             // Update an item in the Audio list if required.\r
             if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
             {\r
-                if (drp_audenc_1.Text.Contains("AC3"))\r
-                    drp_audbit_1.Text = "Auto";\r
-                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[5].Text = drp_audbit_1.Text;\r
+                if (drp_audioEncoder.Text.Contains("AC3"))\r
+                    drp_audioBitrate.SelectedItem = "Auto";\r
+                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[5].Text = drp_audioBitrate.Text;\r
                 lv_audioList.Select();\r
             }\r
         }\r
@@ -114,7 +117,7 @@ namespace Handbrake.Controls
             // Update an item in the Audio list if required.\r
             if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
             {\r
-                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[6].Text = lbl_drc.Text;\r
+                lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[6].Text = value.ToString();\r
                 lv_audioList.Select();\r
             }\r
         }\r
@@ -122,14 +125,18 @@ namespace Handbrake.Controls
         // Track Controls\r
         private void btn_addAudioTrack_Click(object sender, EventArgs e)\r
         {\r
+            double value = 0;\r
+            if (tb_drc.Value != 0)\r
+                value = ((tb_drc.Value - 1) / 10.0) + 1;\r
+\r
             // Create a new row for the Audio list based on the currently selected items in the dropdown.\r
-            ListViewItem newTrack = new ListViewItem(getNewID().ToString());\r
-            newTrack.SubItems.Add(drp_track1Audio.Text);\r
-            newTrack.SubItems.Add(drp_audenc_1.Text);\r
-            newTrack.SubItems.Add(drp_audmix_1.Text);\r
-            newTrack.SubItems.Add(drp_audsr_1.Text);\r
-            newTrack.SubItems.Add(drp_audbit_1.Text);\r
-            newTrack.SubItems.Add(lbl_drc.Text);\r
+            ListViewItem newTrack = new ListViewItem(GetNewID().ToString());\r
+            newTrack.SubItems.Add(drp_audioTrack.Text);\r
+            newTrack.SubItems.Add(drp_audioEncoder.Text);\r
+            newTrack.SubItems.Add(drp_audioMix.Text);\r
+            newTrack.SubItems.Add(drp_audioSample.Text);\r
+            newTrack.SubItems.Add(drp_audioBitrate.Text);\r
+            newTrack.SubItems.Add(value.ToString());\r
             lv_audioList.Items.Add(newTrack);\r
 \r
             // The Audio List has changed to raise the event.\r
@@ -142,7 +149,7 @@ namespace Handbrake.Controls
         }\r
         private void btn_RemoveAudioTrack_Click(object sender, EventArgs e)\r
         {\r
-            removeAudioTrack();\r
+            RemoveAudioTrack();\r
         }\r
 \r
         // Audio List Menu\r
@@ -182,9 +189,9 @@ namespace Handbrake.Controls
         }\r
         private void audioList_remove_Click(object sender, EventArgs e)\r
         {\r
-            removeAudioTrack();\r
+            RemoveAudioTrack();\r
         }\r
-        private void removeAudioTrack()\r
+        private void RemoveAudioTrack()\r
         {\r
             // Remove the Item and reselect the control if the following conditions are met.\r
             if (lv_audioList.SelectedItems.Count != 0)\r
@@ -214,66 +221,112 @@ namespace Handbrake.Controls
         }\r
 \r
         // Public Functions\r
-        public void setTrackList(Parsing.Title selectedTitle)\r
+        public void SetTrackList(Parsing.Title selectedTitle)\r
         {\r
-            drp_track1Audio.Items.Clear();\r
-            drp_track1Audio.Items.Add("Automatic");\r
-            drp_track1Audio.Items.Add("None");\r
-            drp_track1Audio.Items.AddRange(selectedTitle.AudioTracks.ToArray());\r
-            drp_track1Audio.SelectedIndex = 0;\r
+            drp_audioTrack.Items.Clear();\r
+            drp_audioTrack.Items.Add("Automatic");\r
+            drp_audioTrack.Items.Add("None");\r
+            drp_audioTrack.Items.AddRange(selectedTitle.AudioTracks.ToArray());\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
+                drp_audioTrack.SelectedIndex = 0;\r
+            else\r
+            {\r
+                if (Properties.Settings.Default.DubAudio) // "Dub Foreign language audio" \r
+                {\r
+                    int i = 0;\r
+                    foreach (object item in drp_audioTrack.Items)\r
+                    {\r
+                        if (item.ToString().Contains(Properties.Settings.Default.NativeLanguage))\r
+                        {\r
+                            drp_audioTrack.SelectedIndex = i;\r
+                            break;\r
+                        }\r
+\r
+                        i++;\r
+                    }\r
+\r
+                    if (drp_audioTrack.SelectedItem != null)\r
+                        foreach (ListViewItem item in lv_audioList.Items)\r
+                            item.SubItems[1].Text = drp_audioTrack.SelectedItem.ToString();\r
+                    else\r
+                    {\r
+                        drp_audioTrack.SelectedIndex = 0;\r
+                        if (drp_audioTrack.SelectedItem != null)\r
+                            foreach (ListViewItem item in lv_audioList.Items)\r
+                                item.SubItems[1].Text = drp_audioTrack.SelectedItem.ToString();\r
+                    }\r
+                }\r
+                else\r
+                    drp_audioTrack.SelectedIndex = 0; // "Use Foreign language audio and Subtitles"\r
+            }\r
+            drp_audioMix.SelectedIndex = 0;\r
         }\r
-        public ListView getAudioPanel()\r
+        public ListView GetAudioPanel()\r
         {\r
             return lv_audioList;\r
         }\r
-        public void setAudioByContainer(String path)\r
+        public void SetContainer(String path)\r
         {\r
+            string oldval = drp_audioEncoder.Text;\r
             if ((path.Contains("MP4")) || (path.Contains("M4V")))\r
             {\r
-                string oldval = drp_audenc_1.Text;\r
-                drp_audenc_1.Items.Clear();\r
-                drp_audenc_1.Items.Add("AAC (faac)");\r
-                drp_audenc_1.Items.Add("AC3 Passthru");\r
+                drp_audioEncoder.Items.Clear();\r
+                drp_audioEncoder.Items.Add("AAC (faac)");\r
+                drp_audioEncoder.Items.Add("AC3 Passthru");\r
                 if ((oldval != "AAC (faac)") && (oldval != "AC3 Passthru"))\r
-                    drp_audenc_1.SelectedIndex = 0;\r
+                    drp_audioEncoder.SelectedIndex = 0;\r
+                else\r
+                    drp_audioEncoder.SelectedItem = oldval;\r
 \r
             }\r
             else if (path.Contains("MKV"))\r
             {\r
-                drp_audenc_1.Items.Clear();\r
-                drp_audenc_1.Items.Add("AAC (faac)");\r
-                drp_audenc_1.Items.Add("MP3 (lame)");\r
-                drp_audenc_1.Items.Add("AC3 Passthru");\r
-                drp_audenc_1.Items.Add("DTS Passthru");\r
-                drp_audenc_1.Items.Add("Vorbis (vorbis)");\r
-\r
-                if (drp_audenc_1.Text == string.Empty)\r
-                    drp_audenc_1.SelectedIndex = 0;\r
+                drp_audioEncoder.Items.Clear();\r
+                drp_audioEncoder.Items.Add("AAC (faac)");\r
+                drp_audioEncoder.Items.Add("MP3 (lame)");\r
+                drp_audioEncoder.Items.Add("AC3 Passthru");\r
+                drp_audioEncoder.Items.Add("DTS Passthru");\r
+                drp_audioEncoder.Items.Add("Vorbis (vorbis)");\r
+                drp_audioEncoder.SelectedItem = oldval;\r
+\r
+                if (drp_audioEncoder.Text == string.Empty)\r
+                    drp_audioEncoder.SelectedIndex = 0;\r
             }\r
 \r
             // Make sure the table is updated with new audio codecs\r
             foreach (ListViewItem row in lv_audioList.Items)\r
             {\r
-                if (!drp_audenc_1.Items.Contains(row.SubItems[2].Text))\r
-                    row.SubItems[2].Text = drp_audenc_1.Items[0].ToString();\r
+                if (!drp_audioEncoder.Items.Contains(row.SubItems[2].Text))\r
+                    row.SubItems[2].Text = drp_audioEncoder.Items[0].ToString();\r
             }\r
         }\r
-        public void addTrackForPreset(ListViewItem item)\r
+        public void AddTrackForPreset(ListViewItem item)\r
         {\r
             lv_audioList.Items.Add(item);\r
             if (this.AudioListChanged != null)\r
                 this.AudioListChanged(this, new EventArgs());\r
         }\r
-        public void clearAudioList()\r
+        public void ClearAudioList()\r
         {\r
             lv_audioList.Items.Clear();\r
             if (this.AudioListChanged != null)\r
                 this.AudioListChanged(this, new EventArgs());\r
         }\r
-        public int getNewID()\r
+        public int GetNewID()\r
         {\r
             return lv_audioList.Items.Count + 1;\r
         }\r
+        public Boolean RequiresM4V()\r
+        {\r
+            foreach (ListViewItem item in lv_audioList.Items)\r
+            {\r
+                if (item.SubItems[2].Text.Contains("AC3"))\r
+                    return true;\r
+            }\r
+            return false;\r
+        }\r
 \r
         // Helper Functions \r
         private void reGenerateListIDs()\r
@@ -285,85 +338,52 @@ namespace Handbrake.Controls
                 i++;\r
             }\r
         }\r
-        private static void setBitrateSelections384(ComboBox dropDown)\r
-        {\r
-            dropDown.Items.Clear();\r
-            dropDown.Items.Add("32");\r
-            dropDown.Items.Add("40");\r
-            dropDown.Items.Add("48");\r
-            dropDown.Items.Add("56");\r
-            dropDown.Items.Add("64");\r
-            dropDown.Items.Add("80");\r
-            dropDown.Items.Add("86");\r
-            dropDown.Items.Add("112");\r
-            dropDown.Items.Add("128");\r
-            dropDown.Items.Add("160");\r
-            dropDown.Items.Add("192");\r
-            dropDown.Items.Add("224");\r
-            dropDown.Items.Add("256");\r
-            dropDown.Items.Add("320");\r
-            dropDown.Items.Add("384");\r
-        }\r
-        private static void setBitrateSelections320(ComboBox dropDown)\r
-        {\r
-            dropDown.Items.Clear();\r
-            dropDown.Items.Add("32");\r
-            dropDown.Items.Add("40");\r
-            dropDown.Items.Add("48");\r
-            dropDown.Items.Add("56");\r
-            dropDown.Items.Add("64");\r
-            dropDown.Items.Add("80");\r
-            dropDown.Items.Add("86");\r
-            dropDown.Items.Add("112");\r
-            dropDown.Items.Add("128");\r
-            dropDown.Items.Add("160");\r
-            dropDown.Items.Add("192");\r
-            dropDown.Items.Add("224");\r
-            dropDown.Items.Add("256");\r
-            dropDown.Items.Add("320");\r
-        }\r
-        private static void setBitrateSelections160(ComboBox dropDown)\r
-        {\r
-            dropDown.Items.Clear();\r
-            dropDown.Items.Add("32");\r
-            dropDown.Items.Add("40");\r
-            dropDown.Items.Add("48");\r
-            dropDown.Items.Add("56");\r
-            dropDown.Items.Add("64");\r
-            dropDown.Items.Add("80");\r
-            dropDown.Items.Add("86");\r
-            dropDown.Items.Add("112");\r
-            dropDown.Items.Add("128");\r
-            dropDown.Items.Add("160");\r
-        }\r
-        private static void setMixDownAllOptions(ComboBox dropdown)\r
+        private void setBitrate(int max)\r
         {\r
-            dropdown.Items.Clear();\r
-            dropdown.Items.Add("Automatic");\r
-            dropdown.Items.Add("Mono");\r
-            dropdown.Items.Add("Stereo");\r
-            dropdown.Items.Add("Dolby Surround");\r
-            dropdown.Items.Add("Dolby Pro Logic II");\r
-            dropdown.Items.Add("6 Channel Discrete");\r
+            if (max > 160)\r
+            {\r
+                drp_audioBitrate.Items.Add("192");\r
+                drp_audioBitrate.Items.Add("224");\r
+                drp_audioBitrate.Items.Add("256");\r
+                drp_audioBitrate.Items.Add("320");\r
+                if (max == 384)\r
+                    drp_audioBitrate.Items.Add("384");\r
+                else\r
+                    drp_audioBitrate.Items.Remove("384");\r
+            }\r
+            else\r
+            {\r
+                drp_audioBitrate.Items.Remove("192");\r
+                drp_audioBitrate.Items.Remove("224");\r
+                drp_audioBitrate.Items.Remove("256");\r
+                drp_audioBitrate.Items.Remove("320");\r
+                drp_audioBitrate.Items.Remove("384");\r
+            }\r
+            if (drp_audioBitrate.SelectedItem == null)\r
+                drp_audioBitrate.SelectedIndex = drp_audioBitrate.Items.Count - 1;\r
         }\r
-        private static void setMixDownNotAAC(ComboBox dropdown)\r
+        private void setMixDown(Boolean aac)\r
         {\r
-            dropdown.Items.Clear();\r
-            dropdown.Items.Add("Automatic");\r
-            dropdown.Items.Add("Stereo");\r
-            dropdown.Items.Add("Dolby Surround");\r
-            dropdown.Items.Add("Dolby Pro Logic II");\r
+            drp_audioMix.Items.Clear();\r
+            drp_audioMix.Items.Add("Automatic");\r
+            if (aac)\r
+                drp_audioMix.Items.Add("Mono");\r
+            drp_audioMix.Items.Add("Stereo");\r
+            drp_audioMix.Items.Add("Dolby Surround");\r
+            drp_audioMix.Items.Add("Dolby Pro Logic II");\r
+            if (aac)\r
+                drp_audioMix.Items.Add("6 Channel Discrete");\r
         }\r
         private void lv_audioList_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             // Set the dropdown controls based on the selected item in the Audio List.\r
             if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)\r
             {\r
-                drp_track1Audio.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[1].Text;\r
-                drp_audenc_1.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[2].Text;\r
-                drp_audmix_1.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[3].Text;\r
-                drp_audsr_1.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[4].Text;\r
-                drp_audbit_1.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[5].Text;\r
+                drp_audioTrack.SelectedItem = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[1].Text;\r
+                drp_audioEncoder.SelectedItem = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[2].Text;\r
+                drp_audioMix.SelectedItem = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[3].Text;\r
+                drp_audioSample.SelectedItem = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[4].Text;\r
+                drp_audioBitrate.SelectedItem = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[5].Text;\r
                 double drcValue; int drcCalculated;\r
                 double.TryParse(lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[6].Text, out drcValue);\r
                 if (drcValue == 0) drcCalculated = 0;\r
@@ -371,6 +391,7 @@ namespace Handbrake.Controls
                     drcValue = ((drcValue * 10) + 1) - 10;\r
                 int.TryParse(drcValue.ToString(), out drcCalculated);\r
                 tb_drc.Value = drcCalculated;\r
+                lbl_drc.Text = lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[6].Text;\r
 \r
                 AudioTrackGroup.Text = "Selected Track: " + lv_audioList.Items[lv_audioList.SelectedIndices[0]].SubItems[0].Text;\r
             }\r
@@ -379,4 +400,4 @@ namespace Handbrake.Controls
         }\r
 \r
     }\r
-}\r
+}
\ No newline at end of file