// -------------------------------------------------------------------------------------------------------------------- // // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. // // // The Add Preset View Model // // -------------------------------------------------------------------------------------------------------------------- namespace HandBrakeWPF.ViewModels { using System.ComponentModel.Composition; using System.Windows; using Caliburn.Micro; using HandBrake.ApplicationServices.Model; using HandBrake.ApplicationServices.Services.Interfaces; using HandBrake.ApplicationServices.Utilities; using HandBrakeWPF.Services.Interfaces; using HandBrakeWPF.ViewModels.Interfaces; /// /// The Add Preset View Model /// [Export(typeof(IAddPresetViewModel))] public class AddPresetViewModel : ViewModelBase, IAddPresetViewModel { /// /// Backing field for the Preset Service /// private readonly IPresetService presetService; /// /// Backing field for the error service /// private readonly IErrorService errorService; /// /// Initializes a new instance of the class. /// /// /// The window manager. /// /// /// The Preset Service /// /// /// The Error Service /// public AddPresetViewModel(IWindowManager windowManager, IPresetService presetService, IErrorService errorService) { this.presetService = presetService; this.errorService = errorService; this.Title = "Add Preset"; this.Preset = new Preset {IsBuildIn = false, IsDefault = false, Category = "User Presets"}; } /// /// Gets or sets the Preset /// public Preset Preset { get; private set; } /// /// Prepare the Preset window to create a Preset Object later. /// /// /// The Encode Task. /// 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); } /// /// Add a Preset /// 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(); } /// /// Close this window. /// public void Close() { this.TryClose(); } } }