OSDN Git Service

62e32d374a430ba5da825896b5fc1638beb99deb
[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 delegate void ProgressUpdateHandler();\r
16 \r
17         public frmQueue()\r
18         {\r
19             InitializeComponent();\r
20         }\r
21 \r
22         int initialListCount = 0;\r
23         bool started = false;\r
24 \r
25       \r
26         private void btn_q_encoder_Click(object sender, EventArgs e)\r
27         {\r
28             progressBar.Value = 0;\r
29             lbl_progressValue.Text = "0 %";\r
30             progressBar.Step = 100 / list_queue.Items.Count;\r
31             progressBar.Update();\r
32             ThreadPool.QueueUserWorkItem(startProc);\r
33         }\r
34 \r
35         /*\r
36          * \r
37          * Code to Handle the CLI and updating of the UI as each process is completed.\r
38          * \r
39          */\r
40         private void startProc(object state)\r
41         {\r
42             started = true;\r
43             initialListCount = list_queue.Items.Count;\r
44             for (int i = 0; i < initialListCount; i++)\r
45             {\r
46                 string query = list_queue.Items[0].ToString();\r
47 \r
48                 Functions.CLI process = new Functions.CLI();\r
49                 Process hbProc = process.runCli(this, query, false, false, false, false);\r
50                 \r
51                 hbProc.WaitForExit();\r
52                 hbProc.Close();\r
53                 hbProc.Dispose();\r
54                 updateUIElements();\r
55 \r
56                 if ((initialListCount - i) != (list_queue.Items.Count))\r
57                 {\r
58                     initialListCount++;\r
59                 }\r
60             }\r
61             started = false;\r
62             resetQueue();\r
63             MessageBox.Show("Encode Queue Completed!", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
64         }\r
65 \r
66         private void updateUIElements()\r
67         {\r
68             if (this.InvokeRequired)\r
69             {\r
70                 this.BeginInvoke(new ProgressUpdateHandler(updateUIElements));\r
71                 return;\r
72             }\r
73             this.list_queue.Items.RemoveAt(0);\r
74             progressBar.PerformStep();\r
75             lbl_progressValue.Text = string.Format("{0} %", progressBar.Value);\r
76             progressBar.Update();\r
77         }\r
78 \r
79         private void resetQueue()\r
80         {\r
81             if (this.InvokeRequired)\r
82             {\r
83                 this.BeginInvoke(new ProgressUpdateHandler(resetQueue));\r
84                 return;\r
85             }\r
86             lbl_progressValue.Text = "0 %";\r
87             progressBar.Value = 0;\r
88             progressBar.Update();\r
89         }\r
90 \r
91         /*\r
92          * \r
93          * Code to Re-arrange / Delete items from the Queue\r
94          * \r
95          */\r
96         private void btn_up_Click(object sender, EventArgs e)\r
97         {\r
98             int count = list_queue.Items.Count;\r
99             int itemToMove = list_queue.SelectedIndex;\r
100             int previousItemint = 0;\r
101             String previousItem = "";\r
102 \r
103             if (itemToMove > 0)\r
104             {\r
105                 previousItemint = itemToMove - 1;\r
106                 previousItem = list_queue.Items[previousItemint].ToString();\r
107                 list_queue.Items[previousItemint] = list_queue.Items[itemToMove];\r
108                 list_queue.Items[itemToMove] = previousItem;\r
109                 list_queue.SelectedIndex = list_queue.SelectedIndex - 1;\r
110             }\r
111         }\r
112 \r
113         private void btn_down_Click(object sender, EventArgs e)\r
114         {\r
115             int count = list_queue.Items.Count;\r
116             int itemToMove = list_queue.SelectedIndex;\r
117             int itemAfterInt = 0;\r
118             String itemAfter = "";\r
119 \r
120             if (itemToMove < (count - 1))\r
121             {\r
122                 itemAfterInt = itemToMove + 1;\r
123                 itemAfter = list_queue.Items[itemAfterInt].ToString();\r
124                 list_queue.Items[itemAfterInt] = list_queue.Items[itemToMove];\r
125                 list_queue.Items[itemToMove] = itemAfter;\r
126                 list_queue.SelectedIndex = list_queue.SelectedIndex + 1;\r
127             }\r
128         }\r
129 \r
130         private void btn_delete_Click(object sender, EventArgs e)\r
131         {\r
132             list_queue.Items.Remove(list_queue.SelectedItem);\r
133             if (started == true)\r
134                 initialListCount--;\r
135         }\r
136 \r
137         /*\r
138          * Hide the Queue Window\r
139          */\r
140         private void btn_Close_Click(object sender, EventArgs e)\r
141         {\r
142             this.Hide();\r
143         }\r
144     }\r
145 }