WinGui: Fix another instance of the Caliburn vs Json.net sillyness where objects...
[HandBrake.git] / win / CS / HandBrakeWPF / Model / Audio / AudioBehaviours.cs
blob8d49f5ab72c9f9b4b57b8e7ef64ab8c6d9fd6102
1 // --------------------------------------------------------------------------------------------------------------------
2 // <copyright file="AudioBehaviours.cs" company="HandBrake Project (http://handbrake.fr)">
3 // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
4 // </copyright>
5 // <summary>
6 // Audio Behaviours
7 // </summary>
8 // --------------------------------------------------------------------------------------------------------------------
10 namespace HandBrakeWPF.Model.Audio
12 using System.ComponentModel;
13 using System.Linq;
15 using HandBrake.ApplicationServices.Utilities;
17 /// <summary>
18 /// Audio Behaviours
19 /// </summary>
20 public class AudioBehaviours : PropertyChangedBase
22 private AudioBehaviourModes selectedBehaviour;
23 private BindingList<string> selectedLangauges;
24 private AudioTrackDefaultsMode trackDefaultBehaviour;
26 /// <summary>
27 /// Initializes a new instance of the <see cref="AudioBehaviours"/> class.
28 /// </summary>
29 public AudioBehaviours()
31 this.SelectedBehaviour = AudioBehaviourModes.None;
32 this.SelectedTrackDefaultBehaviour = AudioTrackDefaultsMode.None;
33 this.SelectedLangauges = new BindingList<string>();
36 /// <summary>
37 /// Initializes a new instance of the <see cref="AudioBehaviours"/> class.
38 /// </summary>
39 /// <param name="behaviours">
40 /// The behaviours.
41 /// </param>
42 public AudioBehaviours(AudioBehaviours behaviours)
44 this.SelectedBehaviour = behaviours.SelectedBehaviour;
45 this.SelectedTrackDefaultBehaviour = behaviours.SelectedTrackDefaultBehaviour;
46 this.SelectedLangauges = new BindingList<string>(behaviours.selectedLangauges.ToList());
49 /// <summary>
50 /// Gets or sets the selected behaviour.
51 /// </summary>
52 public AudioBehaviourModes SelectedBehaviour
54 get
56 return this.selectedBehaviour;
59 set
61 if (value == this.selectedBehaviour)
63 return;
65 this.selectedBehaviour = value;
66 this.NotifyOfPropertyChange(() => this.SelectedBehaviour);
70 /// <summary>
71 /// Gets or sets the track default behaviour.
72 /// </summary>
73 public AudioTrackDefaultsMode SelectedTrackDefaultBehaviour
75 get
77 return this.trackDefaultBehaviour;
79 set
81 if (value == this.trackDefaultBehaviour)
83 return;
85 this.trackDefaultBehaviour = value;
86 this.NotifyOfPropertyChange(() => this.SelectedTrackDefaultBehaviour);
90 /// <summary>
91 /// Gets or sets the selected langauges.
92 /// </summary>
93 public BindingList<string> SelectedLangauges
95 get
97 return this.selectedLangauges;
99 set
101 if (Equals(value, this.selectedLangauges))
103 return;
105 this.selectedLangauges = value;
106 this.NotifyOfPropertyChange(() => this.SelectedLangauges);
110 /// <summary>
111 /// Clone this object
112 /// </summary>
113 /// <returns>
114 /// The <see cref="object"/>.
115 /// </returns>
116 public AudioBehaviours Clone()
118 AudioBehaviours cloned = new AudioBehaviours
120 SelectedBehaviour = this.selectedBehaviour,
121 SelectedLangauges = new BindingList<string>(),
122 SelectedTrackDefaultBehaviour = this.SelectedTrackDefaultBehaviour
125 foreach (var item in this.SelectedLangauges)
127 cloned.SelectedLangauges.Add(item);
130 return cloned;