// -------------------------------------------------------------------------------------------------------------------- // // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. // // // The Advanced View Model // // -------------------------------------------------------------------------------------------------------------------- namespace HandBrakeWPF.ViewModels { using HandBrake.ApplicationServices.Model; using HandBrake.ApplicationServices.Services.Encode.Model; using HandBrake.ApplicationServices.Services.Scan.Model; using HandBrake.Interop.Model.Encoding; using HandBrakeWPF.Services.Presets.Model; using HandBrakeWPF.ViewModels.Interfaces; /// /// The Advanced View Model /// public class AdvancedViewModel : ViewModelBase, IAdvancedViewModel { #region Constants and Fields /// /// Backing field for displaying x264 options /// private bool? displayX264Options; /// /// The show x 264 panel. /// private bool showX264Panel; #endregion #region Properties /// /// Gets or sets the x 264 view model. /// public IX264ViewModel X264ViewModel { get; set; } /// /// Gets or sets the encoder options view model. /// public IEncoderOptionsViewModel EncoderOptionsViewModel { get; set; } /// /// Gets or sets a value indicating whether show x 264 panel. /// public bool ShowX264Panel { get { return this.showX264Panel; } set { this.showX264Panel = value; this.NotifyOfPropertyChange(() => this.ShowX264Panel); } } /// /// Gets or sets a value indicating whether DisplayX264Options. /// public bool? ShowSimplePanel { get { return this.displayX264Options; } set { this.displayX264Options = value; this.NotifyOfPropertyChange(() => this.ShowSimplePanel); } } #endregion #region Implemented Interfaces /// /// The set encoder. /// /// /// The encoder. /// public void SetEncoder(VideoEncoder encoder) { this.EncoderOptionsViewModel.SetEncoder(encoder); this.X264ViewModel.SetEncoder(encoder); if (encoder == VideoEncoder.X264) { this.ShowX264Panel = true; this.ShowSimplePanel = false; } else { this.ShowX264Panel = false; this.ShowSimplePanel = true; } } /// /// The clear. /// public void Clear() { this.EncoderOptionsViewModel.Clear(); this.X264ViewModel.Clear(); } /// /// Setup this tab for the specified preset. /// /// /// The preset. /// /// /// The task. /// public void SetPreset(Preset preset, EncodeTask task) { this.EncoderOptionsViewModel.SetPreset(preset, task); this.X264ViewModel.SetPreset(preset, task); } /// /// Update all the UI controls based on the encode task passed in. /// /// /// The task. /// public void UpdateTask(EncodeTask task) { this.EncoderOptionsViewModel.UpdateTask(task); this.X264ViewModel.UpdateTask(task); this.SetEncoder(task.VideoEncoder); } /// /// Setup this window for a new source /// /// /// The title. /// /// /// The preset. /// /// /// The task. /// public void SetSource(Title title, Preset preset, EncodeTask task) { this.EncoderOptionsViewModel.SetSource(title, preset, task); this.X264ViewModel.SetSource(title, preset, task); } #endregion } }