// 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.Collections.Generic;
using System.Text.Json.Serialization;
namespace Microsoft.PowerToys.Settings.UI.Library
{
public class PluginAdditionalOption
{
public enum AdditionalOptionType
{
Checkbox = 0,
Combobox = 1,
Textbox = 2,
Numberbox = 3,
CheckboxAndCombobox = 11,
CheckboxAndTextbox = 12,
CheckboxAndNumberbox = 13,
}
///
/// Gets or sets the layout type of the option in settings ui (Optional; Default is checkbox)
///
public AdditionalOptionType PluginOptionType { get; set; }
public string Key { get; set; }
public string DisplayLabel { get; set; }
///
/// Gets or sets a value to show a description of this setting in the settings ui. (Optional)
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string DisplayDescription { get; set; }
///
/// Gets or sets a value to show a label for the second setting if two combined settings are shown
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string SecondDisplayLabel { get; set; }
///
/// Gets or sets a value to show a description for the second setting in the settings ui if two combined settings are shown. (Optional)
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string SecondDisplayDescription { get; set; }
///
/// Gets or sets a value indicating whether the checkbox is set or not set
///
public bool Value { get; set; }
public int ComboBoxValue { get; set; }
///
/// Gets or sets the list of dropdown items for the ComboBox. Please use the item name as Key and an integer as Value.
/// The value gets converted in settings UI to an integer and will be saved in .
/// You can define the visibility order in settings ui by arranging the list items.
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public List> ComboBoxItems { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string TextValue { get; set; }
///
/// Gets or sets the value that specifies the maximum number of characters allowed for user input in the text box. (Optional; Default is 0 which means no limit.)
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public int? TextBoxMaxLength { get; set; }
public double NumberValue { get; set; }
///
/// Gets or sets a minimal value for the number box. (Optional; Default is Double.MinValue)
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public double? NumberBoxMin { get; set; }
///
/// Gets or sets a maximal value for the number box. (Optional; Default is Double.MaxValue)
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public double? NumberBoxMax { get; set; }
///
/// Gets or sets the value for small changes of the number box. (Optional; Default is 1)
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public double? NumberBoxSmallChange { get; set; }
///
/// Gets or sets the value for large changes of the number box. (Optional; Default is 10)
///
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public double? NumberBoxLargeChange { get; set; }
// Outdated properties kept for backward compatibility with third-party plugins. (They are only required to not have old third-party plugins crashing when propagating their plugin options.)
#pragma warning disable SA1623 // Property summary documentation should match accessors
///
/// PLEASE DON'T USE ANYMORE!! (The property was used for the list of combobox items in the past and is not functional anymore.)
///
[JsonIgnore]
public List ComboBoxOptions { get; set; }
#pragma warning restore SA1623 // Property summary documentation should match accessors
}
}