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);
}
-
-
-
}
}