Homepage: <http://handbrake.fr>.\r
It may be used under the terms of the GNU General Public License. */\r
\r
-using System;\r
-using System.Collections.Generic;\r
-using System.ComponentModel;\r
-using System.Windows.Forms;\r
-\r
namespace Handbrake\r
{\r
+ using System;\r
+ using System.Collections.Generic;\r
+ using System.Collections.ObjectModel;\r
+ using System.ComponentModel;\r
+ using System.Windows.Forms;\r
+ using Functions;\r
+ using Model;\r
+ using Services;\r
+\r
public partial class frmQueue : Form\r
{\r
private delegate void UpdateHandler();\r
- Queue.QueueHandler queue;\r
\r
- public frmQueue(Queue.QueueHandler q)\r
+ private Queue queue;\r
+ private frmMain mainWindow;\r
+\r
+ public frmQueue(Queue q, frmMain mw)\r
{\r
InitializeComponent();\r
\r
+ this.mainWindow = mw;\r
+\r
this.queue = q;\r
- queue.OnEncodeStart += new EventHandler(queue_OnEncodeStart);\r
- queue.OnQueueFinished += new EventHandler(queue_OnQueueFinished);\r
- queue.OnPaused += new EventHandler(queue_OnPaused);\r
+ queue.EncodeStarted += new EventHandler(QueueOnEncodeStart);\r
+ queue.QueueCompleted += new EventHandler(QueueOnQueueFinished);\r
+ queue.QueuePauseRequested += new EventHandler(QueueOnPaused);\r
}\r
- void queue_OnPaused(object sender, EventArgs e)\r
+\r
+ private void QueueOnPaused(object sender, EventArgs e)\r
{\r
- setUIEncodeFinished();\r
- updateUIElements();\r
+ SetUIEncodeFinished();\r
+ UpdateUIElements();\r
}\r
- void queue_OnQueueFinished(object sender, EventArgs e)\r
+\r
+ private void QueueOnQueueFinished(object sender, EventArgs e)\r
{\r
- setUIEncodeFinished();\r
- resetQueue(); // Reset the Queue Window\r
+ SetUIEncodeFinished();\r
+ ResetQueue(); // Reset the Queue Window\r
}\r
- void queue_OnEncodeStart(object sender, EventArgs e)\r
+\r
+ private 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
+ 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
+ public void SetQueue()\r
{\r
- updateUIElements();\r
+ UpdateUIElements();\r
}\r
\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
+ if (doSetQueue) SetQueue();\r
base.Show();\r
- Activate();\r
+\r
+ // Activate();\r
}\r
\r
// Start and Stop Controls\r
private void btn_encode_Click(object sender, EventArgs e)\r
{\r
- if (queue.isPaused)\r
+ if (queue.PauseRequested)\r
{\r
- setUIEncodeStarted();\r
+ SetUIEncodeStarted();\r
MessageBox.Show("Encoding restarted", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);\r
}\r
\r
- if (!queue.isEncodeStarted)\r
- queue.startEncode();\r
-\r
+ if (!queue.IsEncoding)\r
+ queue.Start();\r
}\r
+\r
private void btn_pause_Click(object sender, EventArgs e)\r
{\r
- queue.pauseEncode();\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
+ queue.Pause();\r
+ SetUIEncodeFinished();\r
+ ResetQueue();\r
+ MessageBox.Show(\r
+ "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.", \r
+ "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
}\r
\r
+\r
// Window Display Management\r
- private void setUIEncodeStarted()\r
+ private void SetUIEncodeStarted()\r
{\r
if (InvokeRequired)\r
{\r
- BeginInvoke(new UpdateHandler(setUIEncodeStarted));\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
+ private void SetUIEncodeFinished()\r
{\r
if (InvokeRequired)\r
{\r
- BeginInvoke(new UpdateHandler(setUIEncodeFinished));\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
+ private void ResetQueue()\r
{\r
if (InvokeRequired)\r
{\r
- BeginInvoke(new UpdateHandler(resetQueue));\r
+ BeginInvoke(new UpdateHandler(ResetQueue));\r
return;\r
}\r
btn_pause.Visible = false;\r
\r
lbl_encodesPending.Text = list_queue.Items.Count + " encode(s) pending";\r
}\r
- private void redrawQueue()\r
+\r
+ private void RedrawQueue()\r
{\r
if (InvokeRequired)\r
{\r
- BeginInvoke(new UpdateHandler(redrawQueue));\r
+ BeginInvoke(new UpdateHandler(RedrawQueue));\r
return;\r
}\r
\r
list_queue.Items.Clear();\r
- List<Queue.QueueItem> theQueue = queue.getQueue();\r
- foreach (Queue.QueueItem queue_item in theQueue)\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
+ 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
// Display The Audio Track Information\r
string audio = string.Empty;\r
- foreach (Functions.AudioTrack track in parsed.AudioInformation)\r
+ foreach (AudioTrack track in parsed.AudioInformation)\r
{\r
- if (audio != "")\r
+ if (audio != string.Empty)\r
audio += ", " + track.Encoder;\r
else\r
audio = track.Encoder;\r
list_queue.Items.Add(item);\r
}\r
}\r
- private void updateUIElements()\r
+\r
+ private void UpdateUIElements()\r
{\r
if (InvokeRequired)\r
{\r
- BeginInvoke(new UpdateHandler(updateUIElements));\r
+ BeginInvoke(new UpdateHandler(UpdateUIElements));\r
return;\r
}\r
\r
- redrawQueue();\r
+ RedrawQueue();\r
lbl_encodesPending.Text = list_queue.Items.Count + " encode(s) pending";\r
}\r
- private void setCurrentEncodeInformation()\r
+\r
+ private void SetCurrentEncodeInformation()\r
{\r
try\r
{\r
if (InvokeRequired)\r
{\r
- BeginInvoke(new UpdateHandler(setCurrentEncodeInformation));\r
+ BeginInvoke(new UpdateHandler(SetCurrentEncodeInformation));\r
}\r
\r
// found query is a global varible\r
- Functions.QueryParser parsed = Functions.QueryParser.Parse(queue.lastQueueItem.Query);\r
- lbl_source.Text = queue.lastQueueItem.Source;\r
- lbl_dest.Text = queue.lastQueueItem.Destination;\r
+ QueryParser parsed = Functions.QueryParser.Parse(queue.LastEncode.Query);\r
+ lbl_source.Text = queue.LastEncode.Source;\r
+ lbl_dest.Text = queue.LastEncode.Destination;\r
\r
lbl_title.Text = parsed.DVDTitle == 0 ? "Auto" : parsed.DVDTitle.ToString();\r
\r
\r
// Display The Audio Track Information\r
string audio = string.Empty;\r
- foreach (Functions.AudioTrack track in parsed.AudioInformation)\r
+ foreach (AudioTrack track in parsed.AudioInformation)\r
{\r
- if (audio != "")\r
+ if (audio != string.Empty)\r
audio += ", " + track.Encoder;\r
else\r
audio = track.Encoder;\r
// Do Nothing\r
}\r
}\r
- private void deleteSelectedItems()\r
+\r
+ private void DeleteSelectedItems()\r
{\r
// If there are selected items\r
if (list_queue.SelectedIndices.Count > 0)\r
\r
// Remove each selected item\r
foreach (int selectedIndex in selectedIndices)\r
- queue.remove(selectedIndex);\r
+ queue.Remove(selectedIndex);\r
\r
- queue.write2disk("hb_queue_recovery.xml"); // Update the queue recovery file\r
- updateUIElements();\r
+ UpdateUIElements();\r
\r
// Select the item where the first deleted item was previously\r
if (firstSelectedIndex < list_queue.Items.Count)\r
// Queue Management\r
private void mnu_up_Click(object sender, EventArgs e)\r
{\r
- moveUp();\r
+ MoveUp();\r
}\r
+\r
private void mnu_Down_Click(object sender, EventArgs e)\r
{\r
- moveDown();\r
+ MoveDown();\r
}\r
+\r
private void mnu_delete_Click(object sender, EventArgs e)\r
{\r
- deleteSelectedItems();\r
+ DeleteSelectedItems();\r
}\r
+\r
private void btn_up_Click(object sender, EventArgs e)\r
{\r
- moveUp();\r
+ MoveUp();\r
}\r
+\r
private void btn_down_Click(object sender, EventArgs e)\r
{\r
- moveDown();\r
+ MoveDown();\r
}\r
+\r
private void btn_delete_Click(object sender, EventArgs e)\r
{\r
- deleteSelectedItems();\r
+ DeleteSelectedItems();\r
}\r
+\r
private void list_queue_deleteKey(object sender, KeyEventArgs e)\r
{\r
if (e.KeyCode == Keys.Delete)\r
- deleteSelectedItems();\r
+ DeleteSelectedItems();\r
}\r
- private void moveUp()\r
+\r
+ private void MoveUp()\r
{\r
// If there are selected items and the first item is not selected\r
if (list_queue.SelectedIndices.Count > 0 && !list_queue.SelectedIndices.Contains(0))\r
\r
// Move up each selected item\r
foreach (int selectedIndex in selectedIndices)\r
- queue.moveUp(selectedIndex);\r
+ queue.MoveUp(selectedIndex);\r
\r
- queue.write2disk("hb_queue_recovery.xml"); // Update the queue recovery file\r
- updateUIElements();\r
+ UpdateUIElements();\r
\r
// Keep the selected item(s) selected, now moved up one index\r
foreach (int selectedIndex in selectedIndices)\r
\r
list_queue.Select(); // Activate the control to show the selected items\r
}\r
- private void moveDown()\r
+\r
+ private void MoveDown()\r
{\r
// If there are selected items and the last item is not selected\r
if (list_queue.SelectedIndices.Count > 0 &&\r
\r
// Move down each selected item\r
foreach (int selectedIndex in selectedIndices)\r
- queue.moveDown(selectedIndex);\r
+ queue.MoveDown(selectedIndex);\r
\r
- queue.write2disk("hb_queue_recovery.xml"); // Update the queue recovery file\r
- updateUIElements();\r
+ UpdateUIElements();\r
\r
// Keep the selected item(s) selected, now moved down one index\r
foreach (int selectedIndex in selectedIndices)\r
// Queue Import/Export Features\r
private void mnu_batch_Click(object sender, EventArgs e)\r
{\r
- SaveFile.FileName = "";\r
+ SaveFile.FileName = string.Empty;\r
SaveFile.Filter = "Batch|.bat";\r
SaveFile.ShowDialog();\r
if (SaveFile.FileName != String.Empty)\r
- queue.writeBatchScript(SaveFile.FileName);\r
+ queue.WriteBatchScriptToFile(SaveFile.FileName);\r
}\r
+\r
private void mnu_export_Click(object sender, EventArgs e)\r
{\r
- SaveFile.FileName = "";\r
+ SaveFile.FileName = string.Empty;\r
SaveFile.Filter = "HandBrake Queue|*.queue";\r
SaveFile.ShowDialog();\r
if (SaveFile.FileName != String.Empty)\r
- queue.write2disk(SaveFile.FileName);\r
+ queue.WriteQueueStateToFile(SaveFile.FileName);\r
}\r
+\r
private void mnu_import_Click(object sender, EventArgs e)\r
{\r
- OpenFile.FileName = "";\r
+ OpenFile.FileName = string.Empty;\r
OpenFile.ShowDialog();\r
if (OpenFile.FileName != String.Empty)\r
- queue.recoverQueue(OpenFile.FileName);\r
- updateUIElements();\r
+ queue.LoadQueueFromFile(OpenFile.FileName);\r
+ UpdateUIElements();\r
}\r
+\r
private void mnu_readd_Click(object sender, EventArgs e)\r
{\r
- if (queue.lastQueueItem != null)\r
+ if (!queue.LastEncode.IsEmpty)\r
{\r
- queue.add(queue.lastQueueItem.Query, queue.lastQueueItem.Source, queue.lastQueueItem.Destination);\r
- queue.write2disk("hb_queue_recovery.xml"); // Update the queue recovery file\r
- updateUIElements();\r
+ queue.Add(queue.LastEncode.Query, queue.LastEncode.Source, queue.LastEncode.Destination, \r
+ queue.LastEncode.CustomQuery);\r
+ UpdateUIElements();\r
}\r
}\r
\r
+ private void mnu_reconfigureJob_Click(object sender, EventArgs e)\r
+ {\r
+ if (list_queue.SelectedIndices != null)\r
+ {\r
+ lock (queue)\r
+ {\r
+ lock (list_queue)\r
+ {\r
+ int index = list_queue.SelectedIndices[0];\r
+ mainWindow.RecievingJob(queue.GetJob(index));\r
+ queue.Remove(index);\r
+ RedrawQueue();\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+\r
// Hide's the window when the user tries to "x" out of the window instead of closing it.\r
protected override void OnClosing(CancelEventArgs e)\r
{\r
this.Hide();\r
base.OnClosing(e);\r
}\r
-\r
}\r
-}\r
+}
\ No newline at end of file