summaryrefslogtreecommitdiffstats
path: root/win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs
diff options
context:
space:
mode:
authorsr55 <[email protected]>2011-12-27 18:41:31 +0000
committersr55 <[email protected]>2011-12-27 18:41:31 +0000
commit20fd52b888f111ac2d7670fa3c41e495661cdebd (patch)
tree9f8f53b17435ed3a8a14df338ec26410a3ecba75 /win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs
parent015a2a45691dee523047f3b2a1a3628a2dd106f9 (diff)
WinGui: (WPF) Initial work to implement the "Queue" and "Add Preset" Windows. Additional setup work around the main window.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4389 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs')
-rw-r--r--win/CS/HandBrakeWPF/ViewModels/AddPresetViewModel.cs87
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>