X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=win%2FC%23%2FfrmQueue.cs;h=326fb72411b7d85ecbdb58de1bf6e44ddbc30640;hb=b8c7cf18f82ad8552e4a79ab3e93794a2e7759e5;hp=7699216910625d20e1e6971fc91a54e8f440e79f;hpb=8620edb5a07485eb1c971ad360a74912a4c93245;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/win/C#/frmQueue.cs b/win/C#/frmQueue.cs index 76992169..326fb724 100644 --- a/win/C#/frmQueue.cs +++ b/win/C#/frmQueue.cs @@ -8,46 +8,53 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Forms; +using Handbrake.EncodeQueue; +using System.Collections.ObjectModel; +using Handbrake.Model; namespace Handbrake { public partial class frmQueue : Form { private delegate void UpdateHandler(); - Queue.QueueHandler queue; + private Queue queue; + private frmMain mainWindow; - public frmQueue(Queue.QueueHandler q) + public frmQueue(Queue q, frmMain mw) { InitializeComponent(); + this.mainWindow = mw; + this.queue = q; - queue.OnEncodeStart += new EventHandler(queue_OnEncodeStart); - queue.OnQueueFinished += new EventHandler(queue_OnQueueFinished); - queue.OnPaused += new EventHandler(queue_OnPaused); + queue.EncodeStarted += new EventHandler(QueueOnEncodeStart); + queue.QueueCompleted += new EventHandler(QueueOnQueueFinished); + queue.QueuePauseRequested += new EventHandler(QueueOnPaused); } - void queue_OnPaused(object sender, EventArgs e) + + private void QueueOnPaused(object sender, EventArgs e) { - setUIEncodeFinished(); - updateUIElements(); + SetUIEncodeFinished(); + UpdateUIElements(); } - void queue_OnQueueFinished(object sender, EventArgs e) + private void QueueOnQueueFinished(object sender, EventArgs e) { - setUIEncodeFinished(); - resetQueue(); // Reset the Queue Window + SetUIEncodeFinished(); + ResetQueue(); // Reset the Queue Window } - void queue_OnEncodeStart(object sender, EventArgs e) + private void QueueOnEncodeStart(object sender, EventArgs e) { - setUIEncodeStarted(); // make sure the UI is set correctly - setCurrentEncodeInformation(); - updateUIElements(); // Redraw the Queue, a new encode has started. + SetUIEncodeStarted(); // make sure the UI is set correctly + SetCurrentEncodeInformation(); + UpdateUIElements(); // Redraw the Queue, a new encode has started. } /// /// Initializes the Queue list with the Arraylist from the Queue class /// - public void setQueue() + public void SetQueue() { - updateUIElements(); + UpdateUIElements(); } /// @@ -55,7 +62,7 @@ namespace Handbrake /// public new void Show() { - Show(true); + Show(true); } /// @@ -64,58 +71,60 @@ namespace Handbrake /// Indicates whether to call setQueue() before showing the window public void Show(bool doSetQueue) { - if (doSetQueue) setQueue(); + if (doSetQueue) SetQueue(); base.Show(); - Activate(); + + //Activate(); } // Start and Stop Controls private void btn_encode_Click(object sender, EventArgs e) { - if (queue.isPaused) + if (queue.PauseRequested) { - setUIEncodeStarted(); + SetUIEncodeStarted(); MessageBox.Show("Encoding restarted", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); } - if (!queue.isEncodeStarted) - queue.startEncode(); + if (!queue.IsEncoding) + queue.Start(); } private void btn_pause_Click(object sender, EventArgs e) { - queue.pauseEncode(); - setUIEncodeFinished(); - resetQueue(); + queue.Pause(); + SetUIEncodeFinished(); + ResetQueue(); 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); } + // Window Display Management - private void setUIEncodeStarted() + private void SetUIEncodeStarted() { if (InvokeRequired) { - BeginInvoke(new UpdateHandler(setUIEncodeStarted)); + BeginInvoke(new UpdateHandler(SetUIEncodeStarted)); return; } btn_encode.Enabled = false; btn_pause.Visible = true; } - private void setUIEncodeFinished() + private void SetUIEncodeFinished() { if (InvokeRequired) { - BeginInvoke(new UpdateHandler(setUIEncodeFinished)); + BeginInvoke(new UpdateHandler(SetUIEncodeFinished)); return; } btn_pause.Visible = false; btn_encode.Enabled = true; } - private void resetQueue() + private void ResetQueue() { if (InvokeRequired) { - BeginInvoke(new UpdateHandler(resetQueue)); + BeginInvoke(new UpdateHandler(ResetQueue)); return; } btn_pause.Visible = false; @@ -130,23 +139,23 @@ namespace Handbrake lbl_encodesPending.Text = list_queue.Items.Count + " encode(s) pending"; } - private void redrawQueue() + private void RedrawQueue() { if (InvokeRequired) { - BeginInvoke(new UpdateHandler(redrawQueue)); + BeginInvoke(new UpdateHandler(RedrawQueue)); return; } list_queue.Items.Clear(); - List theQueue = queue.getQueue(); - foreach (Queue.QueueItem queue_item in theQueue) + ReadOnlyCollection theQueue = queue.CurrentQueue; + foreach (Job queue_item in theQueue) { string q_item = queue_item.Query; Functions.QueryParser parsed = Functions.QueryParser.Parse(q_item); // Get the DVD Title - string title = parsed.DVDTitle == 0 ? "Auto" : parsed.DVDTitle.ToString(); + string title = parsed.DVDTitle == 0 ? "Auto" : parsed.DVDTitle.ToString(); // Get the DVD Chapters string chapters; @@ -166,51 +175,49 @@ namespace Handbrake item.SubItems.Add(queue_item.Destination); // Destination item.SubItems.Add(parsed.VideoEncoder); // Video - // Display the first 4 audio tracks. - String audio = parsed.AudioEncoder1; - if (parsed.AudioEncoder2 != null) - audio += ", " + parsed.AudioEncoder2; - - if (parsed.AudioEncoder3 != null) - audio += ", " + parsed.AudioEncoder3; - - if (parsed.AudioEncoder4 != null) - audio += ", " + parsed.AudioEncoder4; - + // Display The Audio Track Information + string audio = string.Empty; + foreach (AudioTrack track in parsed.AudioInformation) + { + if (audio != "") + audio += ", " + track.Encoder; + else + audio = track.Encoder; + } item.SubItems.Add(audio); // Audio list_queue.Items.Add(item); } } - private void updateUIElements() + private void UpdateUIElements() { if (InvokeRequired) { - BeginInvoke(new UpdateHandler(updateUIElements)); + BeginInvoke(new UpdateHandler(UpdateUIElements)); return; } - redrawQueue(); + RedrawQueue(); lbl_encodesPending.Text = list_queue.Items.Count + " encode(s) pending"; } - private void setCurrentEncodeInformation() + private void SetCurrentEncodeInformation() { try { if (InvokeRequired) { - BeginInvoke(new UpdateHandler(setCurrentEncodeInformation)); + BeginInvoke(new UpdateHandler(SetCurrentEncodeInformation)); } // found query is a global varible - Functions.QueryParser parsed = Functions.QueryParser.Parse(queue.getLastQueryItem().Query); - lbl_source.Text = queue.getLastQueryItem().Source; - lbl_dest.Text = queue.getLastQueryItem().Destination; + Functions.QueryParser parsed = Functions.QueryParser.Parse(queue.LastEncode.Query); + lbl_source.Text = queue.LastEncode.Source; + lbl_dest.Text = queue.LastEncode.Destination; lbl_title.Text = parsed.DVDTitle == 0 ? "Auto" : parsed.DVDTitle.ToString(); if (Equals(parsed.DVDChapterStart, 0)) - lbl_chapt.Text = "Auto"; + lbl_chapt.Text = "Auto"; else { string chapters = parsed.DVDChapterStart.ToString(); @@ -220,16 +227,16 @@ namespace Handbrake } lbl_vEnc.Text = parsed.VideoEncoder; - String audio = parsed.AudioEncoder1; - if (parsed.AudioEncoder2 != null) - audio += ", " + parsed.AudioEncoder2; - - if (parsed.AudioEncoder3 != null) - audio += ", " + parsed.AudioEncoder3; - - if (parsed.AudioEncoder4 != null) - audio += ", " + parsed.AudioEncoder4; + // Display The Audio Track Information + string audio = string.Empty; + foreach (AudioTrack track in parsed.AudioInformation) + { + if (audio != "") + audio += ", " + track.Encoder; + else + audio = track.Encoder; + } lbl_aEnc.Text = audio; } catch (Exception) @@ -237,7 +244,7 @@ namespace Handbrake // Do Nothing } } - private void deleteSelectedItems() + private void DeleteSelectedItems() { // If there are selected items if (list_queue.SelectedIndices.Count > 0) @@ -251,16 +258,15 @@ namespace Handbrake // Reverse the list to delete the items from last to first (preserves indices) selectedIndices.Reverse(); - + // Remove each selected item foreach (int selectedIndex in selectedIndices) - queue.remove(selectedIndex); + queue.Remove(selectedIndex); - queue.write2disk("hb_queue_recovery.xml"); // Update the queue recovery file - updateUIElements(); + UpdateUIElements(); // Select the item where the first deleted item was previously - if (firstSelectedIndex < list_queue.Items.Count) + if (firstSelectedIndex < list_queue.Items.Count) list_queue.Items[firstSelectedIndex].Selected = true; } @@ -268,10 +274,39 @@ namespace Handbrake } // Queue Management + private void mnu_up_Click(object sender, EventArgs e) + { + MoveUp(); + } + private void mnu_Down_Click(object sender, EventArgs e) + { + MoveDown(); + } + private void mnu_delete_Click(object sender, EventArgs e) + { + DeleteSelectedItems(); + } private void btn_up_Click(object sender, EventArgs e) { + MoveUp(); + } + private void btn_down_Click(object sender, EventArgs e) + { + MoveDown(); + } + private void btn_delete_Click(object sender, EventArgs e) + { + DeleteSelectedItems(); + } + private void list_queue_deleteKey(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Delete) + DeleteSelectedItems(); + } + private void MoveUp() + { // If there are selected items and the first item is not selected - if (list_queue.SelectedIndices.Count > 0 && ! list_queue.SelectedIndices.Contains(0)) + if (list_queue.SelectedIndices.Count > 0 && !list_queue.SelectedIndices.Contains(0)) { // Copy the selected indices to preserve them during the movement List selectedIndices = new List(list_queue.SelectedIndices.Count); @@ -280,10 +315,9 @@ namespace Handbrake // Move up each selected item foreach (int selectedIndex in selectedIndices) - queue.moveUp(selectedIndex); + queue.MoveUp(selectedIndex); - queue.write2disk("hb_queue_recovery.xml"); // Update the queue recovery file - updateUIElements(); + UpdateUIElements(); // Keep the selected item(s) selected, now moved up one index foreach (int selectedIndex in selectedIndices) @@ -293,11 +327,11 @@ namespace Handbrake list_queue.Select(); // Activate the control to show the selected items } - private void btn_down_Click(object sender, EventArgs e) + private void MoveDown() { // If there are selected items and the last item is not selected - if (list_queue.SelectedIndices.Count > 0 && - ! list_queue.SelectedIndices.Contains(list_queue.Items[list_queue.Items.Count-1].Index)) + if (list_queue.SelectedIndices.Count > 0 && + !list_queue.SelectedIndices.Contains(list_queue.Items[list_queue.Items.Count - 1].Index)) { // Copy the selected indices to preserve them during the movement List selectedIndices = new List(list_queue.SelectedIndices.Count); @@ -309,28 +343,18 @@ namespace Handbrake // Move down each selected item foreach (int selectedIndex in selectedIndices) - queue.moveDown(selectedIndex); - - queue.write2disk("hb_queue_recovery.xml"); // Update the queue recovery file - updateUIElements(); + queue.MoveDown(selectedIndex); + + UpdateUIElements(); // Keep the selected item(s) selected, now moved down one index foreach (int selectedIndex in selectedIndices) if (selectedIndex + 1 < list_queue.Items.Count) // Defensive programming: ensure index is good - list_queue.Items[selectedIndex + 1].Selected = true; + list_queue.Items[selectedIndex + 1].Selected = true; } list_queue.Select(); // Activate the control to show the selected items } - private void btn_delete_Click(object sender, EventArgs e) - { - deleteSelectedItems(); - } - private void list_queue_deleteKey(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Delete) - deleteSelectedItems(); - } // Queue Import/Export Features private void mnu_batch_Click(object sender, EventArgs e) @@ -339,7 +363,7 @@ namespace Handbrake SaveFile.Filter = "Batch|.bat"; SaveFile.ShowDialog(); if (SaveFile.FileName != String.Empty) - queue.writeBatchScript(SaveFile.FileName); + queue.WriteBatchScriptToFile(SaveFile.FileName); } private void mnu_export_Click(object sender, EventArgs e) { @@ -347,26 +371,42 @@ namespace Handbrake SaveFile.Filter = "HandBrake Queue|*.queue"; SaveFile.ShowDialog(); if (SaveFile.FileName != String.Empty) - queue.write2disk(SaveFile.FileName); + queue.WriteQueueStateToFile(SaveFile.FileName); } private void mnu_import_Click(object sender, EventArgs e) { OpenFile.FileName = ""; OpenFile.ShowDialog(); if (OpenFile.FileName != String.Empty) - queue.recoverQueue(OpenFile.FileName); - updateUIElements(); + queue.LoadQueueFromFile(OpenFile.FileName); + UpdateUIElements(); } private void mnu_readd_Click(object sender, EventArgs e) { - if (queue.getLastQueryItem() != null) + if (!queue.LastEncode.IsEmpty) + { + queue.Add(queue.LastEncode.Query, queue.LastEncode.Source, queue.LastEncode.Destination, queue.LastEncode.CustomQuery); + UpdateUIElements(); + } + } + private void mnu_reconfigureJob_Click(object sender, EventArgs e) + { + if (list_queue.SelectedIndices != null) { - queue.add(queue.getLastQueryItem().Query, queue.getLastQueryItem().Source, queue.getLastQueryItem().Destination); - queue.write2disk("hb_queue_recovery.xml"); // Update the queue recovery file - updateUIElements(); + lock (queue) + { + lock (list_queue) + { + int index = list_queue.SelectedIndices[0]; + mainWindow.RecievingJob(queue.GetJob(index)); + queue.Remove(index); + RedrawQueue(); + } + } } } + // Hide's the window when the user tries to "x" out of the window instead of closing it. protected override void OnClosing(CancelEventArgs e) { @@ -374,8 +414,5 @@ namespace Handbrake this.Hide(); base.OnClosing(e); } - - - } }