// -------------------------------------------------------------------------------------------------------------------- // // 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.Windows; using Caliburn.Micro; using HandBrakeWPF.Properties; using HandBrakeWPF.Services.Interfaces; using HandBrakeWPF.Services.Presets; using HandBrakeWPF.Services.Presets.Interfaces; using HandBrakeWPF.Services.Presets.Model; using HandBrakeWPF.ViewModels.Interfaces; /// /// The Add Preset View Model /// public class ManagePresetViewModel : ViewModelBase, IManagePresetViewModel { private readonly IPresetService presetService; private readonly IErrorService errorService; private readonly IWindowManager windowManager; private Preset existingPreset; /// /// Initializes a new instance of the class. /// /// /// The Preset Service /// /// /// The Error Service /// /// /// The window Manager. /// public ManagePresetViewModel(IPresetService presetService, IErrorService errorService, IWindowManager windowManager) { this.presetService = presetService; this.errorService = errorService; this.windowManager = windowManager; this.Title = "Manage Preset"; this.Preset = new Preset { IsBuildIn = false, IsDefault = false, Category = PresetService.UserPresetCatgoryName }; } /// /// Gets the Preset /// public Preset Preset { get; private set; } /// /// Prepare the Preset window to create a Preset Object later. /// /// /// The preset To Edit. /// public void Setup(Preset presetToEdit) { this.Preset = new Preset(presetToEdit); // Clone. We will not touch the existing object. this.existingPreset = presetToEdit; } /// /// Add a Preset /// public void Save() { if (string.IsNullOrEmpty(this.Preset.Name)) { this.errorService.ShowMessageBox( Resources.AddPresetViewModel_PresetMustProvideName, Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error); return; } if (this.presetService.CheckIfPresetExists(this.Preset.Name)) { MessageBoxResult result = this.errorService.ShowMessageBox( Resources.AddPresetViewModel_PresetWithSameNameOverwriteWarning, Resources.Error, MessageBoxButton.YesNo, MessageBoxImage.Error); if (result == MessageBoxResult.No) { return; } } // Save the Preset this.presetService.Replace(this.existingPreset, this.Preset); this.Close(); } /// /// Cancel adding a preset /// public void Cancel() { this.Close(); } /// /// Close this window. /// public void Close() { this.TryClose(); } } }