X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=win%2FC%23%2FfrmActivityWindow.cs;h=613a1a4c2c31a912d16abb5fa1f0940996703642;hb=4f0019f03c2e85e8634150ff0c9a31bee6d35ce5;hp=e3468927e9079248fe012687c35d0bafe669dbc3;hpb=c63aa009f42272821994d6d43f130da9243e6dbb;p=handbrake-jp%2Fhandbrake-jp-git.git
diff --git a/win/C#/frmActivityWindow.cs b/win/C#/frmActivityWindow.cs
index e3468927..613a1a4c 100644
--- a/win/C#/frmActivityWindow.cs
+++ b/win/C#/frmActivityWindow.cs
@@ -22,6 +22,8 @@ namespace Handbrake
///
public partial class frmActivityWindow : Form
{
+ /* Private Variables */
+
///
/// The current position in the log file
///
@@ -40,35 +42,39 @@ namespace Handbrake
///
/// The Scan Object
///
- private Scan scan;
+ private ScanService scan;
///
/// The Type of log that the window is currently dealing with
///
private ActivityLogMode mode;
+ /* Constructor */
+
///
/// Initializes a new instance of the class.
///
- ///
- /// The mode.
- ///
///
/// The encode.
///
///
/// The scan.
///
- public frmActivityWindow(ActivityLogMode mode, Encode encode, Scan scan)
+ public frmActivityWindow(Encode encode, ScanService scan)
{
InitializeComponent();
this.encode = encode;
this.scan = scan;
- this.mode = mode;
this.position = 0;
+
+ // Listen for Scan and Encode Starting Events
+ scan.ScanStared += scan_ScanStared;
+ encode.EncodeStarted += encode_EncodeStarted;
}
+ /* Delegates */
+
///
/// A callback function for updating the ui
///
@@ -82,7 +88,15 @@ namespace Handbrake
///
private delegate void SetTextClearCallback();
- // Public
+ ///
+ /// Set mode callback
+ ///
+ ///
+ /// The set mode.
+ ///
+ private delegate void SetModeCallback(ActivityLogMode setMode);
+
+ /* Private Methods */
///
/// Set the window to scan mode
@@ -90,14 +104,44 @@ namespace Handbrake
///
/// The set Mode.
///
- public void SetMode(ActivityLogMode setMode)
+ private void SetMode(ActivityLogMode setMode)
{
- Reset();
- this.mode = setMode;
- this.Text = mode == ActivityLogMode.Scan ? "Activity Window (Scan Log)" : "Activity Window (Enocde Log)";
- }
+ if (IsHandleCreated)
+ {
+ if (rtf_actLog.InvokeRequired)
+ {
+ IAsyncResult invoked = BeginInvoke(new SetModeCallback(SetMode), new object[] {setMode});
+ EndInvoke(invoked);
+ }
+ else
+ {
+ Reset();
+ this.mode = setMode;
+
+ Array values = Enum.GetValues(typeof(ActivityLogMode));
+ Properties.Settings.Default.ActivityWindowLastMode = (int) values.GetValue(Convert.ToInt32(setMode));
+ Properties.Settings.Default.Save();
- // Logging
+ this.Text = mode == ActivityLogMode.Scan
+ ? "Activity Window (Scan Log)"
+ : "Activity Window (Encode Log)";
+
+ if (mode == ActivityLogMode.Scan)
+ {
+ scan.ScanCompleted += stopWindowRefresh;
+ encode.EncodeEnded -= stopWindowRefresh;
+ }
+ else
+ {
+ scan.ScanCompleted -= stopWindowRefresh;
+ encode.EncodeEnded += stopWindowRefresh;
+ }
+
+ // Start a fresh window timer
+ windowTimer = new Timer(new TimerCallback(LogMonitor), null, 1000, 1000);
+ }
+ }
+ }
///
/// On Window load, start a new timer
@@ -110,7 +154,51 @@ namespace Handbrake
///
private void NewActivityWindow_Load(object sender, EventArgs e)
{
- windowTimer = new Timer(new TimerCallback(LogMonitor), null, 1000, 1000);
+ ActivityLogMode activitLogMode = (ActivityLogMode) Enum.ToObject(typeof(ActivityLogMode), Properties.Settings.Default.ActivityWindowLastMode);
+ SetMode(activitLogMode);
+ }
+
+ ///
+ /// Set the Log window to encode mode when an encode starts.
+ ///
+ ///
+ /// The sender.
+ ///
+ ///
+ /// The e.
+ ///
+ private void encode_EncodeStarted(object sender, EventArgs e)
+ {
+ SetMode(ActivityLogMode.Encode);
+ }
+
+ ///
+ /// Set the log widow to scan mode when a scan starts
+ ///
+ ///
+ /// The sender.
+ ///
+ ///
+ /// The e.
+ ///
+ private void scan_ScanStared(object sender, EventArgs e)
+ {
+ SetMode(ActivityLogMode.Scan);
+ }
+
+ ///
+ /// Stop refreshing the window when no scanning or encoding is happening.
+ ///
+ ///
+ /// The sender.
+ ///
+ ///
+ /// The e.
+ ///
+ private void stopWindowRefresh(object sender, EventArgs e)
+ {
+ windowTimer.Dispose();
+ LogMonitor(null);
}
///
@@ -133,7 +221,7 @@ namespace Handbrake
private StringBuilder GetLog()
{
StringBuilder appendText = new StringBuilder();
-
+
if (this.mode == ActivityLogMode.Scan)
{
if (scan == null || scan.ActivityLog == string.Empty)
@@ -213,6 +301,12 @@ namespace Handbrake
else
lock (rtf_actLog)
rtf_actLog.AppendText(text.ToString());
+
+ // Stop the refresh process if log has finished.
+ if (text.ToString().Contains("HandBrake has Exited"))
+ {
+ windowTimer.Dispose();
+ }
}
}
catch (Exception)
@@ -301,7 +395,7 @@ namespace Handbrake
windowTimer = new Timer(new TimerCallback(LogMonitor), null, 1000, 1000);
}
- // Menus and Buttons
+ /* Menus and Buttons */
///
/// Copy log to clipboard
@@ -383,7 +477,7 @@ namespace Handbrake
SetMode(ActivityLogMode.Encode);
}
- // Overrides
+ /* Overrides */
///
/// override onclosing
@@ -393,6 +487,12 @@ namespace Handbrake
///
protected override void OnClosing(CancelEventArgs e)
{
+ scan.ScanStared -= scan_ScanStared;
+ encode.EncodeStarted -= encode_EncodeStarted;
+
+ scan.ScanCompleted -= stopWindowRefresh;
+ encode.EncodeEnded -= stopWindowRefresh;
+
windowTimer.Dispose();
e.Cancel = true;
this.Dispose();