// --------------------------------------------------------------------------------------------------------------------
//
// 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();
}
}
}