OSDN Git Service

f555ffeaf634ed387bcc5aa6339bd08bfebc7945
[handbrake-jp/handbrake-jp-git.git] / win / C# / frmQueue.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.ComponentModel;\r
4 using System.Data;\r
5 using System.Drawing;\r
6 using System.Text;\r
7 using System.Windows.Forms;\r
8 using System.Threading;\r
9 using System.Diagnostics;\r
10 \r
11 namespace Handbrake\r
12 {\r
13     public partial class frmQueue : Form\r
14     {\r
15         private frmQueue thisWindow;\r
16 \r
17         public frmQueue()\r
18         {\r
19             InitializeComponent();\r
20         }\r
21 \r
22         private void btn_Close_Click(object sender, EventArgs e)\r
23         {\r
24             this.Hide();\r
25         }\r
26 \r
27         private void btn_delete_Click(object sender, EventArgs e)\r
28         {\r
29             list_queue.Items.Remove(list_queue.SelectedItem);\r
30         }\r
31 \r
32         private void btn_up_Click(object sender, EventArgs e)\r
33         {\r
34             int count = list_queue.Items.Count;\r
35             int itemToMove = list_queue.SelectedIndex;\r
36             int previousItemint = 0; \r
37             String previousItem = "";\r
38 \r
39              if (itemToMove > 0){\r
40                 previousItemint = itemToMove - 1;\r
41                 previousItem = list_queue.Items[previousItemint].ToString();\r
42                 list_queue.Items[previousItemint] = list_queue.Items[itemToMove];\r
43                 list_queue.Items[itemToMove] = previousItem;\r
44                 list_queue.SelectedIndex = list_queue.SelectedIndex - 1;\r
45             }\r
46         }\r
47 \r
48         private void btn_down_Click(object sender, EventArgs e)\r
49         {\r
50             int count = list_queue.Items.Count;\r
51             int itemToMove = list_queue.SelectedIndex;\r
52             int itemAfterInt = 0; \r
53             String itemAfter = "";\r
54 \r
55             if (itemToMove < (count - 1))\r
56             {\r
57                 itemAfterInt = itemToMove + 1;\r
58                 itemAfter = list_queue.Items[itemAfterInt].ToString();\r
59                 list_queue.Items[itemAfterInt] = list_queue.Items[itemToMove];\r
60                 list_queue.Items[itemToMove] = itemAfter;\r
61                 list_queue.SelectedIndex = list_queue.SelectedIndex + 1;\r
62             }\r
63         }\r
64 \r
65         private void btn_q_encoder_Click(object sender, EventArgs e)\r
66         {\r
67             progressBar.Value = 0;\r
68             lbl_progressValue.Text = "0 %";\r
69             progressBar.Update();\r
70             ThreadPool.QueueUserWorkItem(startProc);\r
71         }\r
72 \r
73         private void startProc(object state)\r
74         {\r
75             int listSize = list_queue.Items.Count;\r
76             listSize--;\r
77             int counter = 0;\r
78             int progressSplit = listSize / 100;\r
79 \r
80             while (counter <= listSize)\r
81             {\r
82                 String query = list_queue.Items[0].ToString();\r
83 \r
84                 Process hbProc = new Process();\r
85                 hbProc.StartInfo.FileName = "hbcli.exe";\r
86                 hbProc.StartInfo.Arguments = query;\r
87                 hbProc.StartInfo.UseShellExecute = false;\r
88                 hbProc.Start();\r
89                 // Set the process Priority\r
90                 string priority = Properties.Settings.Default.processPriority;\r
91                 switch (priority)\r
92                 {\r
93                     case "Realtime":\r
94                         hbProc.PriorityClass = ProcessPriorityClass.RealTime;\r
95                         break;\r
96                     case "High":\r
97                         hbProc.PriorityClass = ProcessPriorityClass.High;\r
98                         break;\r
99                     case "Above Normal":\r
100                         hbProc.PriorityClass = ProcessPriorityClass.AboveNormal;\r
101                         break;\r
102                     case "Normal":\r
103                         hbProc.PriorityClass = ProcessPriorityClass.Normal;\r
104                         break;\r
105                     case "Low":\r
106                         hbProc.PriorityClass = ProcessPriorityClass.Idle;\r
107                         break;\r
108                     default:\r
109                         hbProc.PriorityClass = ProcessPriorityClass.BelowNormal;\r
110                         break;\r
111                 }\r
112 \r
113                 hbProc.WaitForExit();\r
114                 hbProc.Close();\r
115                 counter++;\r
116                 //updateUIElements(progressSplit);\r
117             }\r
118         }\r
119 \r
120         private void updateUIElements(int progressSplit)\r
121         {\r
122             // This needs to be written so there is no cross-thread problems ********************\r
123             thisWindow.list_queue.Items.Remove(0);\r
124             progressBar.Value = progressBar.Value + progressSplit;\r
125             progressBar.Update();\r
126         }\r
127     }\r
128 }