// Copyright (c) Microsoft Corporation // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Text.Json; using System.Text.Json.Serialization; using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library { public class VideoConferenceConfigProperties { [CmdConfigureIgnoreAttribute] public HotkeySettings DefaultMuteCameraAndMicrophoneHotkey => new HotkeySettings() { Win = true, Ctrl = false, Alt = false, Shift = true, Key = "Q", Code = 81, }; [CmdConfigureIgnoreAttribute] public HotkeySettings DefaultMuteMicrophoneHotkey => new HotkeySettings() { Win = true, Ctrl = false, Alt = false, Shift = true, Key = "A", Code = 65, }; [CmdConfigureIgnoreAttribute] public HotkeySettings DefaultPushToTalkMicrophoneHotkey => new HotkeySettings() { Win = true, Ctrl = false, Alt = false, Shift = true, Key = "I", Code = 73, }; [CmdConfigureIgnoreAttribute] public HotkeySettings DefaultMuteCameraHotkey => new HotkeySettings() { Win = true, Ctrl = false, Alt = false, Shift = true, Key = "O", Code = 79, }; public VideoConferenceConfigProperties() { MuteCameraAndMicrophoneHotkey = new KeyboardKeysProperty(DefaultMuteCameraAndMicrophoneHotkey); MuteMicrophoneHotkey = new KeyboardKeysProperty(DefaultMuteMicrophoneHotkey); PushToTalkMicrophoneHotkey = new KeyboardKeysProperty(DefaultPushToTalkMicrophoneHotkey); MuteCameraHotkey = new KeyboardKeysProperty(DefaultMuteCameraHotkey); PushToReverseEnabled = new BoolProperty(false); } [JsonPropertyName("mute_camera_and_microphone_hotkey")] public KeyboardKeysProperty MuteCameraAndMicrophoneHotkey { get; set; } [JsonPropertyName("mute_microphone_hotkey")] public KeyboardKeysProperty MuteMicrophoneHotkey { get; set; } [JsonPropertyName("push_to_talk_microphone_hotkey")] public KeyboardKeysProperty PushToTalkMicrophoneHotkey { get; set; } [JsonPropertyName("push_to_reverse_enabled")] public BoolProperty PushToReverseEnabled { get; set; } [JsonPropertyName("mute_camera_hotkey")] public KeyboardKeysProperty MuteCameraHotkey { get; set; } [JsonPropertyName("selected_camera")] public StringProperty SelectedCamera { get; set; } = string.Empty; [JsonPropertyName("selected_mic")] public StringProperty SelectedMicrophone { get; set; } = string.Empty; [JsonPropertyName("toolbar_position")] public StringProperty ToolbarPosition { get; set; } = "Top right corner"; [JsonPropertyName("toolbar_monitor")] public StringProperty ToolbarMonitor { get; set; } = "Main monitor"; [JsonPropertyName("camera_overlay_image_path")] public StringProperty CameraOverlayImagePath { get; set; } = string.Empty; [JsonPropertyName("theme")] public StringProperty Theme { get; set; } [JsonPropertyName("toolbar_hide")] public StringProperty ToolbarHide { get; set; } = "When both camera and microphone are unmuted"; [JsonPropertyName("startup_action")] public StringProperty StartupAction { get; set; } = "Nothing"; // converts the current to a json string. public string ToJsonString() { return JsonSerializer.Serialize(this); } } }