/ src / settings-ui / Settings.UI.Library / AdvancedPasteTranscodeAction.cs
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  }