HandBrake/win/CS/HandBrakeWPF/Model/Audio/AudioBehaviours.cs
Damiano Galassi 66fe47c548
libhb: ui: add new presets key for track names (#6840)
Add AudioTrackNamePassthru and SubtitleTrackNamePassthru preset key to
preserve the existing track names, and AudioAutomaticNamingBehavior to
disable or enable the audio track automatic names.

Co-authored-by: sr55 <sr55.code@outlook.com>
2025-06-03 08:48:59 +02:00

145 lines
5.1 KiB
C#

// --------------------------------------------------------------------------------------------------------------------
// <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 HandBrakeWPF.Model.Audio
{
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using HandBrake.App.Core.Utilities;
using HandBrake.Interop.Interop;
using HandBrake.Interop.Interop.Interfaces.Model;
using HandBrake.Interop.Interop.Interfaces.Model.Encoders;
using HandBrakeWPF.ViewModels;
public class AudioBehaviours : PropertyChangedBase
{
private AudioBehaviourModes selectedBehaviour;
private BindingList<Language> selectedLanguages;
private AudioTrackDefaultsMode trackDefaultBehaviour;
private AudioTrackNamingBehaviour audioAutomaticNamingBehavior;
private bool audioTrackNamePassthru;
public AudioBehaviours()
{
this.SelectedBehaviour = AudioBehaviourModes.None;
this.SelectedTrackDefaultBehaviour = AudioTrackDefaultsMode.FirstTrack;
this.SelectedLanguages = new BindingList<Language>();
this.BehaviourTracks = new BindingList<AudioBehaviourTrack>();
this.AllowedPassthruOptions = new BindingList<HBAudioEncoder>();
this.AudioFallbackEncoder = HandBrakeEncoderHelpers.GetAudioEncoder(HBAudioEncoder.AvAac);
}
public AudioBehaviours(AudioBehaviours behaviours)
{
this.SelectedBehaviour = behaviours.SelectedBehaviour;
this.SelectedTrackDefaultBehaviour = behaviours.SelectedTrackDefaultBehaviour;
this.SelectedLanguages = new BindingList<Language>(behaviours.selectedLanguages.ToList());
this.BehaviourTracks = behaviours.BehaviourTracks;
this.AllowedPassthruOptions = new BindingList<HBAudioEncoder>(behaviours.AllowedPassthruOptions);
this.AudioFallbackEncoder = behaviours.AudioFallbackEncoder;
this.AudioTrackNamePassthru = behaviours.AudioTrackNamePassthru;
this.AudioAutomaticNamingBehavior = behaviours.AudioAutomaticNamingBehavior;
}
public AudioBehaviourModes SelectedBehaviour
{
get
{
return this.selectedBehaviour;
}
set
{
if (value == this.selectedBehaviour)
{
return;
}
this.selectedBehaviour = value;
this.NotifyOfPropertyChange(() => this.SelectedBehaviour);
}
}
public AudioTrackDefaultsMode SelectedTrackDefaultBehaviour
{
get
{
return this.trackDefaultBehaviour;
}
set
{
if (value == this.trackDefaultBehaviour)
{
return;
}
this.trackDefaultBehaviour = value;
this.NotifyOfPropertyChange(() => this.SelectedTrackDefaultBehaviour);
}
}
public BindingList<Language> SelectedLanguages
{
get
{
return this.selectedLanguages;
}
set
{
if (Equals(value, this.selectedLanguages))
{
return;
}
this.selectedLanguages = value;
this.NotifyOfPropertyChange(() => this.SelectedLanguages);
}
}
public BindingList<AudioBehaviourTrack> BehaviourTracks { get; set; }
public IList<HBAudioEncoder> AllowedPassthruOptions { get; set; }
public HBAudioEncoder AudioFallbackEncoder { get; set; }
public bool AudioTrackNamePassthru
{
get => this.audioTrackNamePassthru;
set
{
if (value == this.audioTrackNamePassthru)
{
return;
}
this.audioTrackNamePassthru = value;
this.NotifyOfPropertyChange(() => this.AudioTrackNamePassthru);
}
}
public AudioTrackNamingBehaviour AudioAutomaticNamingBehavior
{
get => this.audioAutomaticNamingBehavior;
set
{
if (value == this.audioAutomaticNamingBehavior)
{
return;
}
this.audioAutomaticNamingBehavior = value;
this.NotifyOfPropertyChange(() => this.AudioAutomaticNamingBehavior);
}
}
}
}