OSDN Git Service

Change the fifo size from being statically tuned for a Mac Pro with 4 CPUs to dynamic...
[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 using System.Runtime.InteropServices;\r
11 \r
12 namespace Handbrake\r
13 {\r
14     public partial class frmQueue : Form\r
15     {\r
16         private delegate void ProgressUpdateHandler();\r
17 \r
18         public frmQueue()\r
19         {\r
20             InitializeComponent();\r
21         }\r
22 \r
23         #region Queue Handling\r
24 \r
25         private void btn_q_encoder_Click(object sender, EventArgs e)\r
26         {\r
27             if (list_queue.Items.Count != 0)\r
28             {\r
29                 progressBar.Value = 0;\r
30                 lbl_progressValue.Text = "0 %";\r
31                 progressBar.Step = 100 / list_queue.Items.Count;\r
32                 progressBar.Update();\r
33                 ThreadPool.QueueUserWorkItem(startProc);\r
34             }\r
35              \r
36         }\r
37 \r
38         [DllImport("user32.dll")]\r
39         public static extern void LockWorkStation();\r
40         [DllImport("user32.dll")]\r
41         public static extern int ExitWindowsEx(int uFlags, int dwReason);\r
42 \r
43         private void startProc(object state)\r
44         {\r
45             try\r
46             {\r
47                 while (list_queue.Items.Count != 0)\r
48                 {\r
49                     string query = list_queue.Items[0].ToString();\r
50                     updateUIElements();\r
51                         \r
52                     Functions.CLI process = new Functions.CLI();\r
53                     Process hbProc = process.runCli(this, query, false, false, false, false);\r
54 \r
55                     hbProc.WaitForExit();\r
56                     hbProc.Close();\r
57                     hbProc.Dispose();\r
58                 }\r
59 \r
60                 resetQueue();\r
61 \r
62                 // Do something whent he encode ends.\r
63                 switch (Properties.Settings.Default.CompletionOption)\r
64                 {\r
65                     case "Shutdown":\r
66                         System.Diagnostics.Process.Start("Shutdown", "-s -t 60");\r
67                         break;\r
68                     case "Log Off":\r
69                         ExitWindowsEx(0, 0);\r
70                         break;\r
71                     case "Suspend":\r
72                         Application.SetSuspendState(PowerState.Suspend, true, true);\r
73                         break;\r
74                     case "Hibernate":\r
75                         Application.SetSuspendState(PowerState.Hibernate, true, true);\r
76                         break;\r
77                     case "Lock System":\r
78                         LockWorkStation();\r
79                         break;\r
80                     case "Quit HandBrake":\r
81                         Application.Exit();\r
82                         break;\r
83                     default:\r
84                         break;\r
85                 }\r
86 \r
87                 MessageBox.Show("Encode Queue Completed!", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
88             }\r
89             catch (Exception exc)\r
90             {\r
91                 MessageBox.Show(exc.ToString());\r
92             }\r
93         }\r
94 \r
95         private void updateUIElements()\r
96         {\r
97             if (this.InvokeRequired)\r
98             {\r
99                 this.BeginInvoke(new ProgressUpdateHandler(updateUIElements));\r
100                 return;\r
101             }\r
102             this.list_queue.Items.RemoveAt(0);\r
103 \r
104             progressBar.PerformStep();\r
105             lbl_progressValue.Text = string.Format("{0} %", progressBar.Value);\r
106             progressBar.Update();\r
107         }\r
108 \r
109         private void resetQueue()\r
110         {\r
111             if (this.InvokeRequired)\r
112             {\r
113                 this.BeginInvoke(new ProgressUpdateHandler(resetQueue));\r
114                 return;\r
115             }\r
116             lbl_progressValue.Text = "0 %";\r
117             progressBar.Value = 0;\r
118             progressBar.Update();\r
119         }\r
120 \r
121         #endregion\r
122 \r
123         #region Queue Management\r
124 \r
125         private void btn_up_Click(object sender, EventArgs e)\r
126         {\r
127             int count = list_queue.Items.Count;\r
128             int itemToMove = list_queue.SelectedIndex;\r
129             int previousItemint = 0;\r
130             String previousItem = "";\r
131 \r
132             if (itemToMove > 0)\r
133             {\r
134                 previousItemint = itemToMove - 1;\r
135                 previousItem = list_queue.Items[previousItemint].ToString();\r
136                 list_queue.Items[previousItemint] = list_queue.Items[itemToMove];\r
137                 list_queue.Items[itemToMove] = previousItem;\r
138                 list_queue.SelectedIndex = list_queue.SelectedIndex - 1;\r
139             }\r
140         }\r
141 \r
142         private void btn_down_Click(object sender, EventArgs e)\r
143         {\r
144             int count = list_queue.Items.Count;\r
145             int itemToMove = list_queue.SelectedIndex;\r
146             int itemAfterInt = 0;\r
147             String itemAfter = "";\r
148 \r
149             if (itemToMove < (count - 1))\r
150             {\r
151                 itemAfterInt = itemToMove + 1;\r
152                 itemAfter = list_queue.Items[itemAfterInt].ToString();\r
153                 list_queue.Items[itemAfterInt] = list_queue.Items[itemToMove];\r
154                 list_queue.Items[itemToMove] = itemAfter;\r
155                 list_queue.SelectedIndex = list_queue.SelectedIndex + 1;\r
156             }\r
157         }\r
158 \r
159         private void btn_delete_Click(object sender, EventArgs e)\r
160         {\r
161             list_queue.Items.Remove(list_queue.SelectedItem);\r
162         }\r
163         #endregion\r
164 \r
165         #region Window Management\r
166 \r
167         private void btn_Close_Click(object sender, EventArgs e)\r
168         {\r
169             this.Hide();\r
170         }\r
171 \r
172         private void btn_minimise_Click(object sender, EventArgs e)\r
173         {\r
174             this.WindowState = FormWindowState.Minimized;\r
175         }\r
176 \r
177         #endregion\r
178 \r
179     }\r
180 }