X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=win%2FC%23%2FfrmQueue.cs;h=2684772bbd8cfedbadf1b3a2d5ede9526ee010c6;hb=4560ade3c833f282f02d15a9473e233488617df9;hp=b6d19045e92ef2a07a47e1b3001a1598293e6e60;hpb=1e8b4b3a524acf7ffb55c24ee650f6a447ad7327;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/win/C#/frmQueue.cs b/win/C#/frmQueue.cs index b6d19045..2684772b 100644 --- a/win/C#/frmQueue.cs +++ b/win/C#/frmQueue.cs @@ -9,10 +9,15 @@ namespace Handbrake using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; + using System.IO; using System.Windows.Forms; using Functions; + + using HandBrake.ApplicationServices.Model; + using HandBrake.ApplicationServices.Services; + using HandBrake.ApplicationServices.Services.Interfaces; + using Model; - using Services; /// /// The Queue Window @@ -27,7 +32,7 @@ namespace Handbrake /// /// An instance of the Queue service /// - private readonly Queue queue; + private readonly IQueue queue; /// /// A reference to the main application window @@ -43,7 +48,7 @@ namespace Handbrake /// /// The main window. /// - public frmQueue(Queue q, frmMain mw) + public frmQueue(IQueue q, frmMain mw) { InitializeComponent(); @@ -53,6 +58,82 @@ namespace Handbrake queue.EncodeStarted += new EventHandler(QueueOnEncodeStart); queue.QueueCompleted += new EventHandler(QueueOnQueueFinished); queue.QueuePauseRequested += new EventHandler(QueueOnPaused); + queue.QueueListChanged += new EventHandler(queue_QueueListChanged); + + queue.EncodeStarted += new EventHandler(queue_EncodeStarted); + queue.EncodeEnded += new EventHandler(queue_EncodeEnded); + + drp_completeOption.Text = Properties.Settings.Default.CompletionOption; + } + + /// + /// Queue Changed + /// + /// + /// The sender. + /// + /// + /// The e. + /// + private void queue_QueueListChanged(object sender, EventArgs e) + { + UpdateUiElementsOnQueueChange(); + } + + /// + /// Encode Ended + /// + /// + /// The sender. + /// + /// + /// The e. + /// + private void queue_EncodeEnded(object sender, EventArgs e) + { + queue.EncodeStatusChanged -= EncodeQueue_EncodeStatusChanged; + ResetEncodeText(); + } + + /// + /// Queue Started + /// + /// + /// The sender. + /// + /// + /// The e. + /// + private void queue_EncodeStarted(object sender, EventArgs e) + { + this.SetCurrentEncodeInformation(); + queue.EncodeStatusChanged += EncodeQueue_EncodeStatusChanged; + } + + /// + /// Display the Encode Status + /// + /// + /// The sender. + /// + /// + /// The e. + /// + private void EncodeQueue_EncodeStatusChanged(object sender, HandBrake.ApplicationServices.EncodeProgressEventArgs e) + { + if (this.InvokeRequired) + { + this.BeginInvoke(new Encode.EncodeProgessStatus(EncodeQueue_EncodeStatusChanged), new[] { sender, e }); + return; + } + + lbl_encodeStatus.Text = + string.Format( + "Encoding: Pass {0} of {1}, {2:00.00}% Time Remaining: {3}", + e.Task, + e.TaskCount, + e.PercentComplete, + e.EstimatedTimeLeft); } /// @@ -67,7 +148,7 @@ namespace Handbrake private void QueueOnPaused(object sender, EventArgs e) { SetUiEncodeFinished(); - UpdateUiElements(); + UpdateUiElementsOnQueueChange(); } /// @@ -97,8 +178,7 @@ namespace Handbrake 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. + UpdateUiElementsOnQueueChange(); // Redraw the Queue, a new encode has started. } /// @@ -106,7 +186,7 @@ namespace Handbrake /// public void SetQueue() { - UpdateUiElements(); + UpdateUiElementsOnQueueChange(); } /// @@ -125,8 +205,6 @@ namespace Handbrake { if (doSetQueue) SetQueue(); base.Show(); - - // Activate(); } /// @@ -136,14 +214,13 @@ namespace Handbrake /// the EventArgs private void BtnEncodeClick(object sender, EventArgs e) { - if (queue.PauseRequested) + if (queue.Paused) { SetUiEncodeStarted(); - MessageBox.Show("Encoding restarted", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); } - if (!queue.IsEncoding) - queue.Start(); + lbl_encodeStatus.Text = "Encoding ..."; + queue.Start(); } /// @@ -158,8 +235,6 @@ namespace Handbrake private void BtnPauseClick(object sender, EventArgs e) { 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); @@ -208,12 +283,24 @@ namespace Handbrake btn_pause.Visible = false; btn_encode.Enabled = true; + ResetEncodeText(); + } + + /// + /// Reset the current job text + /// + private void ResetEncodeText() + { + if (InvokeRequired) + { + BeginInvoke(new UpdateHandler(ResetEncodeText)); + return; + } + lbl_encodeStatus.Text = "Ready"; + lbl_source.Text = "-"; lbl_dest.Text = "-"; - lbl_vEnc.Text = "-"; - lbl_aEnc.Text = "-"; - lbl_title.Text = "-"; - lbl_chapt.Text = "-"; + lbl_encodeOptions.Text = "-"; lbl_encodesPending.Text = list_queue.Items.Count + " encode(s) pending"; } @@ -237,17 +324,17 @@ namespace Handbrake QueryParser parsed = Functions.QueryParser.Parse(qItem); // Get the DVD Title - string title = parsed.DVDTitle == 0 ? "Auto" : parsed.DVDTitle.ToString(); + string title = parsed.Title == 0 ? "Auto" : parsed.Title.ToString(); // Get the DVD Chapters string chapters; - if (parsed.DVDChapterStart == 0) + if (parsed.ChapterStart == 0) chapters = "Auto"; else { - chapters = parsed.DVDChapterStart.ToString(); - if (parsed.DVDChapterFinish != 0) - chapters = chapters + " - " + parsed.DVDChapterFinish; + chapters = parsed.ChapterStart.ToString(); + if (parsed.ChapterFinish != 0) + chapters = chapters + " - " + parsed.ChapterFinish; } ListViewItem item = new ListViewItem(); @@ -275,11 +362,11 @@ namespace Handbrake /// /// Update the UI elements /// - private void UpdateUiElements() + private void UpdateUiElementsOnQueueChange() { if (InvokeRequired) { - BeginInvoke(new UpdateHandler(UpdateUiElements)); + BeginInvoke(new UpdateHandler(UpdateUiElementsOnQueueChange)); return; } @@ -299,75 +386,46 @@ namespace Handbrake BeginInvoke(new UpdateHandler(SetCurrentEncodeInformation)); } - // found query is a global varible - 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(); + QueryParser parsed = QueryParser.Parse(queue.LastEncode.Query); - if (Equals(parsed.DVDChapterStart, 0)) - lbl_chapt.Text = "Auto"; + // Get title and chapters + string title = parsed.Title == 0 ? "Auto" : parsed.Title.ToString(); + string chapterlbl; + if (Equals(parsed.ChapterStart, 0)) + chapterlbl = "Auto"; else { - string chapters = parsed.DVDChapterStart.ToString(); - if (parsed.DVDChapterFinish != 0) - chapters = chapters + " - " + parsed.DVDChapterFinish; - lbl_chapt.Text = chapters; + string chapters = parsed.ChapterStart.ToString(); + if (parsed.ChapterFinish != 0) + chapters = chapters + " - " + parsed.ChapterFinish; + chapterlbl = chapters; } - lbl_vEnc.Text = parsed.VideoEncoder; - - // Display The Audio Track Information + // Get audio information string audio = string.Empty; foreach (AudioTrack track in parsed.AudioInformation) { - if (audio != string.Empty) + if (audio != string.Empty) audio += ", " + track.Encoder; else audio = track.Encoder; } - lbl_aEnc.Text = audio; - } + + // found query is a global varible + lbl_encodeStatus.Text = "Encoding ..."; + lbl_source.Text = queue.LastEncode.Source + "(Title: " + title + " Chapters: " + chapterlbl + ")"; + lbl_dest.Text = queue.LastEncode.Destination; + lbl_encodeOptions.Text = "Video: " + parsed.VideoEncoder + " Audio: " + audio + Environment.NewLine + + "x264 Options: " + parsed.H264Query; + } catch (Exception) { // Do Nothing } } - /// - /// Delete the currently selected items on the queue - /// - private void DeleteSelectedItems() - { - // If there are selected items - if (list_queue.SelectedIndices.Count > 0) - { - // Save the selected indices to select them after the move - List selectedIndices = new List(list_queue.SelectedIndices.Count); - foreach (int selectedIndex in list_queue.SelectedIndices) - selectedIndices.Add(selectedIndex); - - int firstSelectedIndex = selectedIndices[0]; - - // 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); - - UpdateUiElements(); - - // Select the item where the first deleted item was previously - if (firstSelectedIndex < list_queue.Items.Count) - list_queue.Items[firstSelectedIndex].Selected = true; - } - - list_queue.Select(); // Activate the control to show the selected items - } + /* Right Click Menu */ - // Queue Management /// /// Handle the Move Up Menu Item /// @@ -407,7 +465,7 @@ namespace Handbrake /// private void MnuEditClick(object sender, EventArgs e) { - if (list_queue.SelectedIndices != null) + if (list_queue.SelectedIndices != null && list_queue.SelectedIndices.Count != 0) { lock (queue) { @@ -436,47 +494,7 @@ namespace Handbrake DeleteSelectedItems(); } - /// - /// Handle the Button Up Click - /// - /// - /// The sender. - /// - /// - /// The e. - /// - private void BtnUpClick(object sender, EventArgs e) - { - MoveUp(); - } - - /// - /// Handle the button down click - /// - /// - /// The sender. - /// - /// - /// The e. - /// - private void BtnDownClick(object sender, EventArgs e) - { - MoveDown(); - } - - /// - /// Handle the delete button click - /// - /// - /// The sender. - /// - /// - /// The e. - /// - private void BtnDeleteClick(object sender, EventArgs e) - { - DeleteSelectedItems(); - } + /* Keyboard Shortcuts */ /// /// Handle the delete keyboard press @@ -489,10 +507,12 @@ namespace Handbrake /// private void ListQueueDeleteKey(object sender, KeyEventArgs e) { - if (e.KeyCode == Keys.Delete) + if (e.KeyCode == Keys.Delete && e.Modifiers == Keys.None) DeleteSelectedItems(); } + /* Queue Management */ + /// /// Move items up in the queue /// @@ -510,8 +530,6 @@ namespace Handbrake foreach (int selectedIndex in selectedIndices) queue.MoveUp(selectedIndex); - UpdateUiElements(); - // Keep the selected item(s) selected, now moved up one index foreach (int selectedIndex in selectedIndices) if (selectedIndex - 1 > -1) // Defensive programming: ensure index is good @@ -542,8 +560,6 @@ namespace Handbrake foreach (int selectedIndex in selectedIndices) 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 @@ -553,7 +569,37 @@ namespace Handbrake list_queue.Select(); // Activate the control to show the selected items } - // Queue Import/Export Features + /// + /// Delete the currently selected items on the queue + /// + private void DeleteSelectedItems() + { + // If there are selected items + if (list_queue.SelectedIndices.Count > 0) + { + // Save the selected indices to select them after the move + List selectedIndices = new List(list_queue.SelectedIndices.Count); + foreach (int selectedIndex in list_queue.SelectedIndices) + selectedIndices.Add(selectedIndex); + + int firstSelectedIndex = selectedIndices[0]; + + // 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); + + // Select the item where the first deleted item was previously + if (firstSelectedIndex < list_queue.Items.Count) + list_queue.Items[firstSelectedIndex].Selected = true; + } + + list_queue.Select(); // Activate the control to show the selected items + } + + /* Queue Import / Export features */ /// /// Create a batch script @@ -606,7 +652,6 @@ namespace Handbrake OpenFile.ShowDialog(); if (OpenFile.FileName != String.Empty) queue.LoadQueueFromFile(OpenFile.FileName); - UpdateUiElements(); } /// @@ -620,7 +665,7 @@ namespace Handbrake /// private void MnuReaddClick(object sender, EventArgs e) { - if (!queue.LastEncode.IsEmpty) + if (queue.LastEncode != null && !queue.LastEncode.IsEmpty) { queue.Add( queue.LastEncode.Query, @@ -628,10 +673,11 @@ namespace Handbrake queue.LastEncode.Source, queue.LastEncode.Destination, queue.LastEncode.CustomQuery); - UpdateUiElements(); } } + /* Overrides */ + /// /// Hide's the window when the user tries to "x" out of the window instead of closing it. /// @@ -644,5 +690,21 @@ namespace Handbrake this.Hide(); base.OnClosing(e); } + + /// + /// Change the OnComplete option setting. + /// + /// + /// The sender. + /// + /// + /// The EventArgs. + /// + private void CompleteOptionChanged(object sender, EventArgs e) + { + Properties.Settings.Default.CompletionOption = drp_completeOption.Text; + HandBrake.ApplicationServices.Init.CompletionOption = drp_completeOption.Text; + Properties.Settings.Default.Save(); + } } } \ No newline at end of file