AdvancedPasteTranscodeAction.cs
1 // Copyright (c) Microsoft Corporation 2 // The Microsoft Corporation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using System.Collections.Generic; 6 using System.Text.Json.Serialization; 7 8 using Microsoft.PowerToys.Settings.UI.Library.Helpers; 9 10 namespace Microsoft.PowerToys.Settings.UI.Library; 11 12 public sealed class AdvancedPasteTranscodeAction : Observable, IAdvancedPasteAction 13 { 14 public static class PropertyNames 15 { 16 public const string TranscodeToMp3 = "transcode-to-mp3"; 17 public const string TranscodeToMp4 = "transcode-to-mp4"; 18 } 19 20 private AdvancedPasteAdditionalAction _transcodeToMp3 = new(); 21 private AdvancedPasteAdditionalAction _transcodeToMp4 = new(); 22 private bool _isShown = true; 23 24 [JsonPropertyName("isShown")] 25 public bool IsShown 26 { 27 get => _isShown; 28 set => Set(ref _isShown, value); 29 } 30 31 [JsonPropertyName(PropertyNames.TranscodeToMp3)] 32 public AdvancedPasteAdditionalAction TranscodeToMp3 33 { 34 get => _transcodeToMp3; 35 init => Set(ref _transcodeToMp3, value ?? new()); 36 } 37 38 [JsonPropertyName(PropertyNames.TranscodeToMp4)] 39 public AdvancedPasteAdditionalAction TranscodeToMp4 40 { 41 get => _transcodeToMp4; 42 init => Set(ref _transcodeToMp4, value ?? new()); 43 } 44 45 [JsonIgnore] 46 public IEnumerable<IAdvancedPasteAction> SubActions => [TranscodeToMp3, TranscodeToMp4]; 47 }