summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsr55 <[email protected]>2017-05-27 19:46:55 +0100
committersr55 <[email protected]>2017-05-27 19:47:08 +0100
commit05faa1f855472e8783905b7fa2a8ce1ad4267722 (patch)
treef7b786b7acd59a92a55c317cd2caf7b39557a481
parentd9c418e08089da33d6580cdba32439866fb12924 (diff)
WinGui: Add a log message whent he queue is paused due to low disk space. Improve handling of automated queue pausing. #748
-rw-r--r--win/CS/HandBrakeWPF/Properties/Resources.Designer.cs27
-rw-r--r--win/CS/HandBrakeWPF/Properties/Resources.resx9
-rw-r--r--win/CS/HandBrakeWPF/Services/Queue/Interfaces/IQueueProcessor.cs8
-rw-r--r--win/CS/HandBrakeWPF/Services/Queue/QueueProcessor.cs42
-rw-r--r--win/CS/HandBrakeWPF/Utilities/DriveUtilities.cs15
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs16
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs36
7 files changed, 91 insertions, 62 deletions
diff --git a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs
index d0b3c079b..92d55b507 100644
--- a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs
+++ b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs
@@ -897,6 +897,15 @@ namespace HandBrakeWPF.Properties {
}
/// <summary>
+ /// Looks up a localized string similar to Queue Paused.
+ /// </summary>
+ public static string Main_QueuePaused {
+ get {
+ return ResourceManager.GetString("Main_QueuePaused", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Scan Cancelled..
/// </summary>
public static string Main_ScanCancelled {
@@ -1260,6 +1269,15 @@ namespace HandBrakeWPF.Properties {
}
/// <summary>
+ /// Looks up a localized string similar to Queue Paused. Warning, the drive you are encoding to is low on disk space. Please free up some space and press start to continue. You can also adjust the minimum space level in preferences..
+ /// </summary>
+ public static string PauseOnLowDiskspace {
+ get {
+ return ResourceManager.GetString("PauseOnLowDiskspace", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Output: {0}.
/// </summary>
public static string PictureSettings_OutputResolution {
@@ -1547,6 +1565,15 @@ namespace HandBrakeWPF.Properties {
}
/// <summary>
+ /// Looks up a localized string similar to Queue Paused.
+ /// </summary>
+ public static string QueueViewModel_QueuePaused {
+ get {
+ return ResourceManager.GetString("QueueViewModel_QueuePaused", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to The Queue has been paused. The currently running job will run to completion and no further jobs will start..
/// </summary>
public static string QueueViewModel_QueuePauseNotice {
diff --git a/win/CS/HandBrakeWPF/Properties/Resources.resx b/win/CS/HandBrakeWPF/Properties/Resources.resx
index 1b263c8e9..6a67940ad 100644
--- a/win/CS/HandBrakeWPF/Properties/Resources.resx
+++ b/win/CS/HandBrakeWPF/Properties/Resources.resx
@@ -840,4 +840,13 @@ Your preset file will be archived and new one created. You will need to re-creat
<value>{1}%, Pass {2} of {3}
Remaining Time: {4}</value>
</data>
+ <data name="PauseOnLowDiskspace" xml:space="preserve">
+ <value>Queue Paused. Warning, the drive you are encoding to is low on disk space. Please free up some space and press start to continue. You can also adjust the minimum space level in preferences.</value>
+ </data>
+ <data name="Main_QueuePaused" xml:space="preserve">
+ <value>Queue Paused</value>
+ </data>
+ <data name="QueueViewModel_QueuePaused" xml:space="preserve">
+ <value>Queue Paused</value>
+ </data>
</root> \ No newline at end of file
diff --git a/win/CS/HandBrakeWPF/Services/Queue/Interfaces/IQueueProcessor.cs b/win/CS/HandBrakeWPF/Services/Queue/Interfaces/IQueueProcessor.cs
index ffc9107bb..ead10cbf3 100644
--- a/win/CS/HandBrakeWPF/Services/Queue/Interfaces/IQueueProcessor.cs
+++ b/win/CS/HandBrakeWPF/Services/Queue/Interfaces/IQueueProcessor.cs
@@ -14,7 +14,7 @@ namespace HandBrakeWPF.Services.Queue.Interfaces
using HandBrakeWPF.Services.Queue.Model;
- using IEncode = HandBrakeWPF.Services.Encode.Interfaces.IEncode;
+ using IEncode = Encode.Interfaces.IEncode;
/// <summary>
/// The Queue Processor
@@ -44,12 +44,6 @@ namespace HandBrakeWPF.Services.Queue.Interfaces
/// </summary>
event EventHandler QueuePaused;
- /// <summary>
- /// Low Diskspace has been detected.
- /// Checked before each job starts.
- /// </summary>
- event EventHandler LowDiskspaceDetected;
-
#endregion
#region Properties
diff --git a/win/CS/HandBrakeWPF/Services/Queue/QueueProcessor.cs b/win/CS/HandBrakeWPF/Services/Queue/QueueProcessor.cs
index f0425b0c0..2292d18a2 100644
--- a/win/CS/HandBrakeWPF/Services/Queue/QueueProcessor.cs
+++ b/win/CS/HandBrakeWPF/Services/Queue/QueueProcessor.cs
@@ -17,9 +17,12 @@ namespace HandBrakeWPF.Services.Queue
using System.Xml.Serialization;
using HandBrake.ApplicationServices.Model;
+ using HandBrake.ApplicationServices.Services.Logging;
+ using HandBrake.ApplicationServices.Services.Logging.Model;
using HandBrake.ApplicationServices.Utilities;
using HandBrakeWPF.Factories;
+ using HandBrakeWPF.Properties;
using HandBrakeWPF.Services.Encode.Factories;
using HandBrakeWPF.Services.Encode.Model;
using HandBrakeWPF.Services.Interfaces;
@@ -130,11 +133,6 @@ namespace HandBrakeWPF.Services.Queue
/// </summary>
public event EventHandler QueuePaused;
- /// <summary>
- /// The low diskspace detected.
- /// </summary>
- public event EventHandler LowDiskspaceDetected;
-
#endregion
#region Properties
@@ -478,8 +476,8 @@ namespace HandBrakeWPF.Services.Queue
/// </summary>
public void Pause()
{
- this.InvokeQueuePaused(EventArgs.Empty);
this.IsProcessing = false;
+ this.InvokeQueuePaused(EventArgs.Empty);
}
/// <summary>
@@ -501,17 +499,16 @@ namespace HandBrakeWPF.Services.Queue
this.EncodeService.EncodeCompleted -= this.EncodeServiceEncodeCompleted;
this.EncodeService.EncodeCompleted += this.EncodeServiceEncodeCompleted;
- if (this.EncodeService.IsEncoding)
+ if (this.EncodeService.IsPasued)
{
this.EncodeService.Resume();
+ this.IsProcessing = true;
}
if (!this.EncodeService.IsEncoding)
{
this.ProcessNextJob();
}
-
- this.IsProcessing = true;
}
#endregion
@@ -536,14 +533,6 @@ namespace HandBrakeWPF.Services.Queue
}
/// <summary>
- /// The on low diskspace detected.
- /// </summary>
- protected virtual void OnLowDiskspaceDetected()
- {
- this.LowDiskspaceDetected?.Invoke(this, EventArgs.Empty);
- }
-
- /// <summary>
/// After an encode is complete, move onto the next job.
/// </summary>
/// <param name="sender">
@@ -644,22 +633,15 @@ namespace HandBrakeWPF.Services.Queue
QueueTask job = this.GetNextJobForProcessing();
if (job != null)
{
- if (this.userSettingService.GetUserSetting<bool>(UserSettingConstants.PauseOnLowDiskspace))
+ if (this.userSettingService.GetUserSetting<bool>(UserSettingConstants.PauseOnLowDiskspace) && !DriveUtilities.HasMinimumDiskSpace(job.Task.Destination, this.userSettingService.GetUserSetting<long>(UserSettingConstants.PauseOnLowDiskspaceLevel)))
{
- string drive = Path.GetPathRoot(job.Task.Destination);
- if (!string.IsNullOrEmpty(drive) && !drive.StartsWith("\\"))
- {
- DriveInfo c = new DriveInfo(drive);
- if (c.AvailableFreeSpace < this.userSettingService.GetUserSetting<long>(UserSettingConstants.PauseOnLowDiskspaceLevel))
- {
- job.Status = QueueItemStatus.Waiting;
- this.InvokeQueueChanged(EventArgs.Empty);
- this.OnLowDiskspaceDetected();
- return; // Don't start the next job.
- }
- }
+ LogService.GetLogger().LogMessage(Resources.PauseOnLowDiskspace, LogMessageType.ScanOrEncode, LogLevel.Info);
+ job.Status = QueueItemStatus.Waiting;
+ this.Pause();
+ return; // Don't start the next job.
}
+ this.IsProcessing = true;
this.InvokeJobProcessingStarted(new QueueProgressEventArgs(job));
this.EncodeService.Start(job.Task, job.Configuration);
}
diff --git a/win/CS/HandBrakeWPF/Utilities/DriveUtilities.cs b/win/CS/HandBrakeWPF/Utilities/DriveUtilities.cs
index d07056ef8..40bb2d5c0 100644
--- a/win/CS/HandBrakeWPF/Utilities/DriveUtilities.cs
+++ b/win/CS/HandBrakeWPF/Utilities/DriveUtilities.cs
@@ -49,5 +49,20 @@ namespace HandBrakeWPF.Utilities
return drives;
}
+
+ public static bool HasMinimumDiskSpace(string destination, long minimumInBytes)
+ {
+ string drive = Path.GetPathRoot(destination);
+ if (!string.IsNullOrEmpty(drive) && !drive.StartsWith("\\"))
+ {
+ DriveInfo c = new DriveInfo(drive);
+ if (c.AvailableFreeSpace < minimumInBytes)
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
}
}
diff --git a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
index c8a59bbbc..5056f99a6 100644
--- a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
+++ b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
@@ -205,6 +205,7 @@ namespace HandBrakeWPF.ViewModels
this.scanService.ScanCompleted += this.ScanCompleted;
this.scanService.ScanStatusChanged += this.ScanStatusChanged;
this.queueProcessor.JobProcessingStarted += this.QueueProcessorJobProcessingStarted;
+ this.queueProcessor.QueuePaused += this.QueueProcessor_QueuePaused;
this.queueProcessor.QueueCompleted += this.QueueCompleted;
this.queueProcessor.QueueChanged += this.QueueChanged;
this.queueProcessor.EncodeService.EncodeStatusChanged += this.EncodeStatusChanged;
@@ -1318,6 +1319,7 @@ namespace HandBrakeWPF.ViewModels
this.queueProcessor.QueueCompleted -= this.QueueCompleted;
this.queueProcessor.QueueChanged -= this.QueueChanged;
this.queueProcessor.JobProcessingStarted -= this.QueueProcessorJobProcessingStarted;
+ this.queueProcessor.QueuePaused -= this.QueueProcessor_QueuePaused;
this.queueProcessor.EncodeService.EncodeStatusChanged -= this.EncodeStatusChanged;
this.userSettingService.SettingChanged -= this.UserSettingServiceSettingChanged;
}
@@ -2528,6 +2530,20 @@ namespace HandBrakeWPF.ViewModels
}
this.ProgramStatusLabel = Resources.Main_QueueFinished + errorDesc;
+
+ if (this.windowsSeven.IsWindowsSeven)
+ {
+ this.windowsSeven.SetTaskBarProgressToNoProgress();
+ }
+ });
+ }
+
+ private void QueueProcessor_QueuePaused(object sender, EventArgs e)
+ {
+ Execute.OnUIThread(
+ () =>
+ {
+ this.ProgramStatusLabel = Resources.Main_QueuePaused;
this.IsEncoding = false;
if (this.windowsSeven.IsWindowsSeven)
diff --git a/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs
index 2267c1a44..0c984e032 100644
--- a/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs
+++ b/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs
@@ -459,6 +459,7 @@ namespace HandBrakeWPF.ViewModels
this.queueProcessor.QueueCompleted += this.queueProcessor_QueueCompleted;
this.queueProcessor.QueueChanged += this.QueueManager_QueueChanged;
this.queueProcessor.JobProcessingStarted += this.QueueProcessorJobProcessingStarted;
+ this.queueProcessor.QueuePaused += this.QueueProcessor_QueuePaused;
}
public void Deactivate()
@@ -466,6 +467,7 @@ namespace HandBrakeWPF.ViewModels
this.queueProcessor.QueueCompleted -= this.queueProcessor_QueueCompleted;
this.queueProcessor.QueueChanged -= this.QueueManager_QueueChanged;
this.queueProcessor.JobProcessingStarted -= this.QueueProcessorJobProcessingStarted;
+ this.queueProcessor.QueuePaused -= this.QueueProcessor_QueuePaused;
}
/// <summary>
@@ -480,7 +482,7 @@ namespace HandBrakeWPF.ViewModels
this.queueProcessor.EncodeService.EncodeStatusChanged += this.EncodeService_EncodeStatusChanged;
this.queueProcessor.EncodeService.EncodeCompleted += this.EncodeService_EncodeCompleted;
this.queueProcessor.JobProcessingStarted += this.QueueProcessorJobProcessingStarted;
- this.queueProcessor.LowDiskspaceDetected += this.QueueProcessor_LowDiskspaceDetected;
+ this.queueProcessor.QueuePaused += this.QueueProcessor_QueuePaused;
this.JobsPending = string.Format(Resources.QueueViewModel_JobsPending, this.queueProcessor.Count);
this.JobStatus = Resources.QueueViewModel_QueueReady;
@@ -501,7 +503,7 @@ namespace HandBrakeWPF.ViewModels
this.queueProcessor.EncodeService.EncodeStatusChanged -= this.EncodeService_EncodeStatusChanged;
this.queueProcessor.EncodeService.EncodeCompleted -= this.EncodeService_EncodeCompleted;
this.queueProcessor.JobProcessingStarted -= this.QueueProcessorJobProcessingStarted;
- this.queueProcessor.LowDiskspaceDetected -= this.QueueProcessor_LowDiskspaceDetected;
+ this.queueProcessor.QueuePaused -= this.QueueProcessor_QueuePaused;
base.OnDeactivate(close);
}
@@ -555,29 +557,6 @@ namespace HandBrakeWPF.ViewModels
}
/// <summary>
- /// Detect Low Disk Space before starting new queue tasks.
- /// </summary>
- /// <param name="sender">Event invoker. </param>
- /// <param name="e">Event Args.</param>
- private void QueueProcessor_LowDiskspaceDetected(object sender, EventArgs e)
- {
- Execute.OnUIThreadAsync(
- () =>
- {
- this.queueProcessor.Pause();
- this.JobStatus = Resources.QueueViewModel_QueuePending;
- this.JobsPending = string.Format(Resources.QueueViewModel_JobsPending, this.queueProcessor.Count);
- this.IsQueueRunning = false;
-
- this.errorService.ShowMessageBox(
- Resources.MainViewModel_LowDiskSpaceWarning,
- Resources.MainViewModel_LowDiskSpace,
- MessageBoxButton.OK,
- MessageBoxImage.Warning);
- });
- }
-
- /// <summary>
/// Handle the Queue Changed Event.
/// </summary>
/// <param name="sender">
@@ -646,6 +625,13 @@ namespace HandBrakeWPF.ViewModels
this.IsQueueRunning = true;
}
+ private void QueueProcessor_QueuePaused(object sender, EventArgs e)
+ {
+ this.JobStatus = Resources.QueueViewModel_QueuePaused;
+ this.JobsPending = string.Format(Resources.QueueViewModel_JobsPending, this.queueProcessor.Count);
+ this.IsQueueRunning = false;
+ }
+
#endregion
}
} \ No newline at end of file