From 642656971cff02c39dfcae9eb317e3ee979b7341 Mon Sep 17 00:00:00 2001 From: Emby Toolbox Date: Sat, 16 May 2026 15:04:43 +0500 Subject: [PATCH] Move subtitle default option to add dialog --- EmbyToolbox/Models/AddFilesOptions.cs | 1 + .../ViewModels/AddFilesOptionsViewModel.cs | 31 +++----- EmbyToolbox/ViewModels/ConversionViewModel.cs | 4 +- EmbyToolbox/Views/AddFilesOptionsDialog.xaml | 72 ++++++++++++------- EmbyToolbox/Views/ConversionView.xaml | 19 ----- 5 files changed, 62 insertions(+), 65 deletions(-) diff --git a/EmbyToolbox/Models/AddFilesOptions.cs b/EmbyToolbox/Models/AddFilesOptions.cs index b30eea2..15d4736 100644 --- a/EmbyToolbox/Models/AddFilesOptions.cs +++ b/EmbyToolbox/Models/AddFilesOptions.cs @@ -3,5 +3,6 @@ namespace EmbyToolbox.Models; public sealed class AddFilesOptions { public string Profile { get; init; } = "Emby"; + public bool DisableSubtitleDefault { get; init; } public bool RemoveForeignAudioAndSubtitles { get; init; } } diff --git a/EmbyToolbox/ViewModels/AddFilesOptionsViewModel.cs b/EmbyToolbox/ViewModels/AddFilesOptionsViewModel.cs index c18c513..60b7825 100644 --- a/EmbyToolbox/ViewModels/AddFilesOptionsViewModel.cs +++ b/EmbyToolbox/ViewModels/AddFilesOptionsViewModel.cs @@ -10,17 +10,20 @@ public sealed class AddFilesOptionsViewModel : INotifyPropertyChanged private readonly Action _onAdd; private readonly Action _onCancel; + private bool _disableSubtitleDefault; private bool _removeForeignAudioAndSubtitles; private ConversionProfilePresetRow? _selectedProfile; public AddFilesOptionsViewModel( IReadOnlyList profiles, string selectedProfileName, + bool disableSubtitleDefault, Action onAdd, Action onCancel) { _onAdd = onAdd; _onCancel = onCancel; + _disableSubtitleDefault = disableSubtitleDefault; Profiles = new ObservableCollection(profiles); _selectedProfile = Profiles.FirstOrDefault(p => p.Profile.Equals(selectedProfileName, StringComparison.OrdinalIgnoreCase)) ?? Profiles.FirstOrDefault(p => p.Profile.Equals("Emby", StringComparison.OrdinalIgnoreCase)) @@ -29,46 +32,33 @@ public sealed class AddFilesOptionsViewModel : INotifyPropertyChanged CancelCommand = new RelayCommand(() => _onCancel()); } - /// Взаимоисключающие опции: два свойства, чтобы не использовать TwoWay на одно поле с конвертером (переполнение стека в WPF). - public bool OptionKeepAllTracks + public bool DisableSubtitleDefault { - get => !_removeForeignAudioAndSubtitles; + get => _disableSubtitleDefault; set { - if (!value) + if (_disableSubtitleDefault == value) { return; } - if (!_removeForeignAudioAndSubtitles) - { - return; - } - - _removeForeignAudioAndSubtitles = false; + _disableSubtitleDefault = value; OnPropertyChanged(); - OnPropertyChanged(nameof(OptionRemoveForeignTracks)); } } - public bool OptionRemoveForeignTracks + public bool RemoveForeignAudioAndSubtitles { get => _removeForeignAudioAndSubtitles; set { - if (!value) + if (_removeForeignAudioAndSubtitles == value) { return; } - if (_removeForeignAudioAndSubtitles) - { - return; - } - - _removeForeignAudioAndSubtitles = true; + _removeForeignAudioAndSubtitles = value; OnPropertyChanged(); - OnPropertyChanged(nameof(OptionKeepAllTracks)); } } @@ -98,6 +88,7 @@ public sealed class AddFilesOptionsViewModel : INotifyPropertyChanged new AddFilesOptions { Profile = string.IsNullOrWhiteSpace(_selectedProfile?.Profile) ? "Emby" : _selectedProfile.Profile, + DisableSubtitleDefault = _disableSubtitleDefault, RemoveForeignAudioAndSubtitles = _removeForeignAudioAndSubtitles }); } diff --git a/EmbyToolbox/ViewModels/ConversionViewModel.cs b/EmbyToolbox/ViewModels/ConversionViewModel.cs index afe2f7a..da050a4 100644 --- a/EmbyToolbox/ViewModels/ConversionViewModel.cs +++ b/EmbyToolbox/ViewModels/ConversionViewModel.cs @@ -1632,7 +1632,7 @@ public sealed class ConversionViewModel : INotifyPropertyChanged var cts = _analysisCts; var token = cts.Token; var autoRemoveForeignTracksForBatch = addOptions.RemoveForeignAudioAndSubtitles; - var disableSubtitleDefaultForBatch = DisableSubtitleDefault; + var disableSubtitleDefaultForBatch = addOptions.DisableSubtitleDefault; var app = Application.Current; try { @@ -1756,10 +1756,12 @@ public sealed class ConversionViewModel : INotifyPropertyChanged var vm = new AddFilesOptionsViewModel( _presetRowsForSetup(), CurrentProfileNameForNewTasks(), + DisableSubtitleDefault, options => { selected = options; _defaultQueueProfile = options.Profile; + DisableSubtitleDefault = options.DisableSubtitleDefault; SyncDefaultProfileFromList(_presetRowsForSetup()); dialog.DialogResult = true; dialog.Close(); diff --git a/EmbyToolbox/Views/AddFilesOptionsDialog.xaml b/EmbyToolbox/Views/AddFilesOptionsDialog.xaml index 959577a..1b5171c 100644 --- a/EmbyToolbox/Views/AddFilesOptionsDialog.xaml +++ b/EmbyToolbox/Views/AddFilesOptionsDialog.xaml @@ -3,25 +3,40 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Параметры добавления" Width="520" - Height="300" + Height="230" ResizeMode="NoResize" WindowStartupLocation="CenterOwner" Background="{DynamicResource Ui.Brush.Surface}"> - - - + + + + + + + + + + + - + + SelectedItem="{Binding SelectedProfile, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" + Margin="0,0,0,12"> - - - - - - + + - + + + + +