diff options
Diffstat (limited to 'win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs')
-rw-r--r-- | win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs | 87 |
1 files changed, 85 insertions, 2 deletions
diff --git a/win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs index 8f6919e9d..d4a6f077c 100644 --- a/win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs @@ -7,23 +7,106 @@ // </summary>
// --------------------------------------------------------------------------------------------------------------------
+using System.Windows;
+using HandBrake.ApplicationServices.Model;
+using HandBrake.ApplicationServices.Services.Interfaces;
+using HandBrake.ApplicationServices.Utilities;
+using HandBrakeWPF.Services.Interfaces;
+
namespace HandBrakeWPF.ViewModels
{
+ using System.ComponentModel.Composition;
+ using Interfaces;
using Caliburn.Micro;
/// <summary>
/// The Add Preset View Model
/// </summary>
- public class AddPresetViewModel : ViewModelBase
+ [Export(typeof(IAddPresetViewModel))]
+ public class AddPresetViewModel : ViewModelBase, IAddPresetViewModel
{
/// <summary>
+ /// Backing field for the Preset Service
+ /// </summary>
+ private readonly IPresetService presetService;
+
+ /// <summary>
+ /// Backing field for the error service
+ /// </summary>
+ private readonly IErrorService errorService;
+
+ /// <summary>
/// Initializes a new instance of the <see cref="AddPresetViewModel"/> class.
/// </summary>
/// <param name="windowManager">
/// The window manager.
/// </param>
- public AddPresetViewModel(IWindowManager windowManager) : base(windowManager)
+ /// <param name="presetService">
+ /// The Preset Service
+ /// </param>
+ /// <param name="errorService">
+ /// The Error Service
+ /// </param>
+ public AddPresetViewModel(IWindowManager windowManager, IPresetService presetService, IErrorService errorService) : base(windowManager)
+ {
+ this.presetService = presetService;
+ this.errorService = errorService;
+ this.Title = "Add Preset";
+ this.Preset = new Preset {IsBuildIn = false, IsDefault = false, Category = "User Presets"};
+ }
+
+ /// <summary>
+ /// Gets or sets the Preset
+ /// </summary>
+ public Preset Preset { get; private set; }
+
+ /// <summary>
+ /// Prepare the Preset window to create a Preset Object later.
+ /// </summary>
+ /// <param name="task">
+ /// The Encode Task.
+ /// </param>
+ public void Setup(EncodeTask task)
+ {
+ task.UsesPictureFilters = this.Preset.UsePictureFilters;
+ task.UsesMaxPictureSettings = false; // TODO
+ task.UsesPictureSettings = false; // TODO
+ this.Preset.Task = task;
+ this.Preset.Query = QueryGeneratorUtility.GenerateQuery(task);
+ }
+
+ /// <summary>
+ /// Add a Preset
+ /// </summary>
+ public void Add()
+ {
+ if (string.IsNullOrEmpty(this.Preset.Name))
+ {
+ this.errorService.ShowMessageBox("A Preset must have a Name. Please fill out the Preset Name field.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+ if (this.presetService.CheckIfPresetExists(this.Preset.Name))
+ {
+ this.errorService.ShowMessageBox("A Preset with this name already exists. Please choose a new name", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+ bool added = this.presetService.Add(this.Preset);
+ if (!added)
+ {
+ this.errorService.ShowMessageBox("Unable to add preset", "Unknown Error", MessageBoxButton.OK,
+ MessageBoxImage.Error);
+ }
+ else
+ {
+ this.Close();
+ }
+ }
+
+ public void Cancel()
{
+ this.Close();
}
/// <summary>
|