summaryrefslogtreecommitdiffstats
path: root/win/CS/HandBrake.ApplicationServices/Model
diff options
context:
space:
mode:
Diffstat (limited to 'win/CS/HandBrake.ApplicationServices/Model')
-rw-r--r--win/CS/HandBrake.ApplicationServices/Model/Audio/AudioBehaviourModes.cs28
-rw-r--r--win/CS/HandBrake.ApplicationServices/Model/Audio/AudioBehaviours.cs103
-rw-r--r--win/CS/HandBrake.ApplicationServices/Model/Preset.cs14
-rw-r--r--win/CS/HandBrake.ApplicationServices/Model/Subtitle/SubtitleBehaviourModes.cs28
-rw-r--r--win/CS/HandBrake.ApplicationServices/Model/Subtitle/SubtitleBehaviours.cs154
5 files changed, 327 insertions, 0 deletions
diff --git a/win/CS/HandBrake.ApplicationServices/Model/Audio/AudioBehaviourModes.cs b/win/CS/HandBrake.ApplicationServices/Model/Audio/AudioBehaviourModes.cs
new file mode 100644
index 000000000..0172b8b1b
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Model/Audio/AudioBehaviourModes.cs
@@ -0,0 +1,28 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="AudioBehaviourModes.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The audio behaviours.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Model.Audio
+{
+ using System.ComponentModel.DataAnnotations;
+
+ /// <summary>
+ /// The audio behaviours.
+ /// </summary>
+ public enum AudioBehaviourModes
+ {
+ [Display(Name = "None")]
+ None = 0,
+
+ [Display(Name = "First Matching Selected Language")]
+ FirstMatch,
+
+ [Display(Name = "All Matching Selected Languages")]
+ AllMatching,
+ }
+}
diff --git a/win/CS/HandBrake.ApplicationServices/Model/Audio/AudioBehaviours.cs b/win/CS/HandBrake.ApplicationServices/Model/Audio/AudioBehaviours.cs
new file mode 100644
index 000000000..119c8d26d
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Model/Audio/AudioBehaviours.cs
@@ -0,0 +1,103 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="AudioBehaviours.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Audio Behaviours
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Model.Audio
+{
+ using System.ComponentModel;
+
+ using Caliburn.Micro;
+
+ /// <summary>
+ /// Audio Behaviours
+ /// </summary>
+ public class AudioBehaviours : PropertyChangedBase
+ {
+ /// <summary>
+ /// The selected behaviour.
+ /// </summary>
+ private AudioBehaviourModes selectedBehaviour;
+
+ /// <summary>
+ /// The selected langauges.
+ /// </summary>
+ private BindingList<string> selectedLangauges;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="AudioBehaviours"/> class.
+ /// </summary>
+ public AudioBehaviours()
+ {
+ this.SelectedBehaviour = AudioBehaviourModes.None;
+ this.SelectedLangauges = new BindingList<string>();
+ }
+
+ /// <summary>
+ /// Gets or sets the selected behaviour.
+ /// </summary>
+ public AudioBehaviourModes SelectedBehaviour
+ {
+ get
+ {
+ return this.selectedBehaviour;
+ }
+
+ set
+ {
+ if (value == this.selectedBehaviour)
+ {
+ return;
+ }
+ this.selectedBehaviour = value;
+ this.NotifyOfPropertyChange(() => this.SelectedBehaviour);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the selected langauges.
+ /// </summary>
+ public BindingList<string> SelectedLangauges
+ {
+ get
+ {
+ return this.selectedLangauges;
+ }
+ set
+ {
+ if (Equals(value, this.selectedLangauges))
+ {
+ return;
+ }
+ this.selectedLangauges = value;
+ this.NotifyOfPropertyChange(() => this.SelectedLangauges);
+ }
+ }
+
+ /// <summary>
+ /// Clone this object
+ /// </summary>
+ /// <returns>
+ /// The <see cref="object"/>.
+ /// </returns>
+ public AudioBehaviours Clone()
+ {
+ AudioBehaviours cloned = new AudioBehaviours
+ {
+ SelectedBehaviour = this.selectedBehaviour,
+ SelectedLangauges = new BindingList<string>()
+ };
+
+ foreach (var item in this.SelectedLangauges)
+ {
+ cloned.SelectedLangauges.Add(item);
+ }
+
+ return cloned;
+ }
+ }
+}
diff --git a/win/CS/HandBrake.ApplicationServices/Model/Preset.cs b/win/CS/HandBrake.ApplicationServices/Model/Preset.cs
index 7003ca2c7..57faf2968 100644
--- a/win/CS/HandBrake.ApplicationServices/Model/Preset.cs
+++ b/win/CS/HandBrake.ApplicationServices/Model/Preset.cs
@@ -11,6 +11,9 @@ namespace HandBrake.ApplicationServices.Model
{
using Caliburn.Micro;
+ using HandBrake.ApplicationServices.Model.Audio;
+ using HandBrake.ApplicationServices.Model.Subtitle;
+
/// <summary>
/// A Preset for encoding with.
/// </summary>
@@ -25,6 +28,7 @@ namespace HandBrake.ApplicationServices.Model
#endregion
+
#region Properties
/// <summary>
@@ -89,6 +93,16 @@ namespace HandBrake.ApplicationServices.Model
/// </summary>
public string Version { get; set; }
+ /// <summary>
+ /// Gets or sets the audio track behaviours.
+ /// </summary>
+ public AudioBehaviours AudioTrackBehaviours { get; set; }
+
+ /// <summary>
+ /// Gets or sets the subtitle track behaviours.
+ /// </summary>
+ public SubtitleBehaviours SubtitleTrackBehaviours { get; set; }
+
#endregion
#region Public Methods
diff --git a/win/CS/HandBrake.ApplicationServices/Model/Subtitle/SubtitleBehaviourModes.cs b/win/CS/HandBrake.ApplicationServices/Model/Subtitle/SubtitleBehaviourModes.cs
new file mode 100644
index 000000000..4094c402e
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Model/Subtitle/SubtitleBehaviourModes.cs
@@ -0,0 +1,28 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="SubtitleBehaviourModes.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The subtitle behaviours modes.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Model.Subtitle
+{
+ using System.ComponentModel.DataAnnotations;
+
+ /// <summary>
+ /// The subtitle behaviours modes.
+ /// </summary>
+ public enum SubtitleBehaviourModes
+ {
+ [Display(Name = "None")]
+ None = 0,
+
+ [Display(Name = "First Matching Selected Language")]
+ FirstMatch,
+
+ [Display(Name = "All Matching Selected Languages")]
+ AllMatching,
+ }
+}
diff --git a/win/CS/HandBrake.ApplicationServices/Model/Subtitle/SubtitleBehaviours.cs b/win/CS/HandBrake.ApplicationServices/Model/Subtitle/SubtitleBehaviours.cs
new file mode 100644
index 000000000..28f5176d1
--- /dev/null
+++ b/win/CS/HandBrake.ApplicationServices/Model/Subtitle/SubtitleBehaviours.cs
@@ -0,0 +1,154 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="SubtitleBehaviours.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// A class to track the behaviours of audio track selection
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.Model.Subtitle
+{
+ using System.ComponentModel;
+
+ using Caliburn.Micro;
+
+ /// <summary>
+ /// A class to track the behaviours of audio track selection
+ /// </summary>
+ public class SubtitleBehaviours : PropertyChangedBase
+ {
+ /// <summary>
+ /// The selected behaviour.
+ /// </summary>
+ private SubtitleBehaviourModes selectedBehaviour;
+
+ /// <summary>
+ /// The selected langauges.
+ /// </summary>
+ private BindingList<string> selectedLangauges;
+
+ /// <summary>
+ /// The add foreign audio scan track.
+ /// </summary>
+ private bool addForeignAudioScanTrack;
+
+ /// <summary>
+ /// The add closed captions.
+ /// </summary>
+ private bool addClosedCaptions;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="SubtitleBehaviours"/> class.
+ /// </summary>
+ public SubtitleBehaviours()
+ {
+ this.SelectedBehaviour = SubtitleBehaviourModes.None;
+ this.SelectedLangauges = new BindingList<string>();
+ }
+
+ /// <summary>
+ /// Gets or sets the selected behaviour.
+ /// </summary>
+ public SubtitleBehaviourModes SelectedBehaviour
+ {
+ get
+ {
+ return this.selectedBehaviour;
+ }
+ set
+ {
+ if (value == this.selectedBehaviour)
+ {
+ return;
+ }
+ this.selectedBehaviour = value;
+ this.NotifyOfPropertyChange(() => this.SelectedBehaviour);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the selected langages.
+ /// </summary>
+ public BindingList<string> SelectedLangauges
+ {
+ get
+ {
+ return this.selectedLangauges;
+ }
+ set
+ {
+ if (Equals(value, this.selectedLangauges))
+ {
+ return;
+ }
+ this.selectedLangauges = value;
+ this.NotifyOfPropertyChange(() => this.SelectedLangauges);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether add foreign audio scan track.
+ /// </summary>
+ public bool AddForeignAudioScanTrack
+ {
+ get
+ {
+ return this.addForeignAudioScanTrack;
+ }
+ set
+ {
+ if (value.Equals(this.addForeignAudioScanTrack))
+ {
+ return;
+ }
+ this.addForeignAudioScanTrack = value;
+ this.NotifyOfPropertyChange(() => this.AddForeignAudioScanTrack);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether add closed captions.
+ /// </summary>
+ public bool AddClosedCaptions
+ {
+ get
+ {
+ return this.addClosedCaptions;
+ }
+ set
+ {
+ if (value.Equals(this.addClosedCaptions))
+ {
+ return;
+ }
+ this.addClosedCaptions = value;
+ this.NotifyOfPropertyChange(() => this.AddClosedCaptions);
+ }
+ }
+
+ /// <summary>
+ /// Clone this object
+ /// </summary>
+ /// <returns>
+ /// The <see cref="object"/>.
+ /// </returns>
+ public SubtitleBehaviours Clone()
+ {
+ SubtitleBehaviours cloned = new SubtitleBehaviours
+ {
+ SelectedBehaviour = this.selectedBehaviour,
+ SelectedLangauges = new BindingList<string>(),
+ AddClosedCaptions = this.addClosedCaptions,
+ AddForeignAudioScanTrack = this.addForeignAudioScanTrack,
+ };
+
+ foreach (var item in this.SelectedLangauges)
+ {
+ cloned.SelectedLangauges.Add(item);
+ }
+
+ return cloned;
+ }
+ }
+}