+\r
+ this.queue = q;\r
+ queue.NewJobStarted += new EventHandler(queueOnEncodeStart);\r
+ queue.QueueCompleted += new EventHandler(queueOnQueueFinished);\r
+ queue.QueuePauseRequested += new EventHandler(queueOnPaused);\r
+ }\r
+ void queueOnPaused(object sender, EventArgs e)\r
+ {\r
+ setUIEncodeFinished();\r
+ updateUIElements();\r
+ }\r
+ void queueOnQueueFinished(object sender, EventArgs e)\r
+ {\r
+ setUIEncodeFinished();\r
+ resetQueue(); // Reset the Queue Window\r
+ }\r
+ void queueOnEncodeStart(object sender, EventArgs e)\r
+ {\r
+ setUIEncodeStarted(); // make sure the UI is set correctly\r
+ setCurrentEncodeInformation();\r
+ updateUIElements(); // Redraw the Queue, a new encode has started.\r
+ }\r
+\r
+ /// <summary>\r
+ /// Initializes the Queue list with the Arraylist from the Queue class\r
+ /// </summary>\r
+ public void setQueue()\r
+ {\r
+ updateUIElements();\r
+ }\r
+\r
+ /// <summary>\r
+ /// Initializes the Queue list, then shows and activates the window\r
+ /// </summary>\r
+ public new void Show()\r
+ {\r
+ Show(true);\r
+ }\r
+\r
+ /// <summary>\r
+ /// Initializes the Queue list only if doSetQueue is true, then shows and activates the window\r
+ /// </summary>\r
+ /// <param name="doSetQueue">Indicates whether to call setQueue() before showing the window</param>\r
+ public void Show(bool doSetQueue)\r
+ {\r
+ if (doSetQueue) setQueue();\r
+ base.Show();\r
+\r
+ //Activate();\r
+ }\r
+\r
+ // Start and Stop Controls\r
+ private void btn_encode_Click(object sender, EventArgs e)\r
+ {\r
+ if (queue.PauseRequested)\r
+ {\r
+ setUIEncodeStarted();\r
+ MessageBox.Show("Encoding restarted", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);\r
+ }\r
+\r
+ if (!queue.isEncoding)\r
+ queue.StartEncodeQueue();\r
+\r
+ }\r
+ private void btn_pause_Click(object sender, EventArgs e)\r
+ {\r
+ queue.RequestPause();\r
+ setUIEncodeFinished();\r
+ resetQueue();\r
+ MessageBox.Show("No further items on the queue will start. The current encode process will continue until it is finished. \nClick 'Encode' when you wish to continue encoding the queue.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+ }\r
+\r
+ // Window Display Management\r
+ private void setUIEncodeStarted()\r
+ {\r
+ if (InvokeRequired)\r
+ {\r
+ BeginInvoke(new UpdateHandler(setUIEncodeStarted));\r
+ return;\r
+ }\r
+ btn_encode.Enabled = false;\r
+ btn_pause.Visible = true;\r
+ }\r
+ private void setUIEncodeFinished()\r
+ {\r
+ if (InvokeRequired)\r
+ {\r
+ BeginInvoke(new UpdateHandler(setUIEncodeFinished));\r
+ return;\r
+ }\r
+ btn_pause.Visible = false;\r
+ btn_encode.Enabled = true;\r
+ }\r
+ private void resetQueue()\r
+ {\r
+ if (InvokeRequired)\r
+ {\r
+ BeginInvoke(new UpdateHandler(resetQueue));\r
+ return;\r
+ }\r
+ btn_pause.Visible = false;\r
+ btn_encode.Enabled = true;\r
+\r
+ lbl_source.Text = "-";\r
+ lbl_dest.Text = "-";\r
+ lbl_vEnc.Text = "-";\r
+ lbl_aEnc.Text = "-";\r
+ lbl_title.Text = "-";\r
+ lbl_chapt.Text = "-";\r
+\r
+ lbl_encodesPending.Text = list_queue.Items.Count + " encode(s) pending";\r
+ }\r
+ private void redrawQueue()\r
+ {\r
+ if (InvokeRequired)\r
+ {\r
+ BeginInvoke(new UpdateHandler(redrawQueue));\r
+ return;\r
+ }\r
+\r
+ list_queue.Items.Clear();\r
+ ReadOnlyCollection<Job> theQueue = queue.CurrentQueue;\r
+ foreach (Job queue_item in theQueue)\r
+ {\r
+ string q_item = queue_item.Query;\r
+ Functions.QueryParser parsed = Functions.QueryParser.Parse(q_item);\r
+\r
+ // Get the DVD Title\r
+ string title = parsed.DVDTitle == 0 ? "Auto" : parsed.DVDTitle.ToString();\r
+\r
+ // Get the DVD Chapters\r
+ string chapters;\r
+ if (parsed.DVDChapterStart == 0)\r
+ chapters = "Auto";\r
+ else\r
+ {\r
+ chapters = parsed.DVDChapterStart.ToString();\r
+ if (parsed.DVDChapterFinish != 0)\r
+ chapters = chapters + " - " + parsed.DVDChapterFinish;\r
+ }\r
+\r
+ ListViewItem item = new ListViewItem();\r
+ item.Text = title; // Title\r
+ item.SubItems.Add(chapters); // Chapters\r
+ item.SubItems.Add(queue_item.Source); // Source\r
+ item.SubItems.Add(queue_item.Destination); // Destination\r
+ item.SubItems.Add(parsed.VideoEncoder); // Video\r
+\r
+ // Display The Audio Track Information\r
+ string audio = string.Empty;\r
+ foreach (Functions.AudioTrack track in parsed.AudioInformation)\r
+ {\r
+ if (audio != "")\r
+ audio += ", " + track.Encoder;\r
+ else\r
+ audio = track.Encoder;\r
+ }\r
+ item.SubItems.Add(audio); // Audio\r
+\r
+ list_queue.Items.Add(item);\r
+ }\r
+ }\r
+ private void updateUIElements()\r
+ {\r
+ if (InvokeRequired)\r
+ {\r
+ BeginInvoke(new UpdateHandler(updateUIElements));\r
+ return;\r
+ }\r
+\r
+ redrawQueue();\r
+ lbl_encodesPending.Text = list_queue.Items.Count + " encode(s) pending";\r