mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-04 10:16:24 +02:00
[PT Run > PluginAdditionalOptions] Refactoring and more settings types (#28601)
* refactor existing code * fixes * fix combo box layout * improve layout * add more settings types * combined setting * enabled state * fix spelling * improve settings.json handling on null values * textbox improvements * rework xaml code * fix xaml style * spell fixes * spell fixes * update comment
This commit is contained in:
@@ -18,10 +18,19 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
||||
_additionalOption = additionalOption;
|
||||
}
|
||||
|
||||
// Labels of single and first setting of combined types
|
||||
public string DisplayLabel => _additionalOption.DisplayLabel;
|
||||
|
||||
public string DisplayDescription => _additionalOption.DisplayDescription;
|
||||
|
||||
// Labels of second setting of combined types
|
||||
public string SecondDisplayLabel => _additionalOption.SecondDisplayLabel;
|
||||
|
||||
public string SecondDisplayDescription => _additionalOption.SecondDisplayDescription;
|
||||
|
||||
// Bool checkbox setting
|
||||
public bool ShowCheckBox => _additionalOption.PluginOptionType == PluginAdditionalOption.AdditionalOptionType.Checkbox;
|
||||
|
||||
public bool Value
|
||||
{
|
||||
get => _additionalOption.Value;
|
||||
@@ -31,29 +40,83 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
||||
{
|
||||
_additionalOption.Value = value;
|
||||
NotifyPropertyChanged();
|
||||
NotifyPropertyChanged(nameof(SecondSettingIsEnabled));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ComboBox setting
|
||||
public bool ShowComboBox => _additionalOption.PluginOptionType == PluginAdditionalOption.AdditionalOptionType.Combobox &&
|
||||
_additionalOption.ComboBoxOptions != null && _additionalOption.ComboBoxOptions.Count > 0;
|
||||
|
||||
public List<string> ComboBoxOptions => _additionalOption.ComboBoxOptions;
|
||||
|
||||
public int Option
|
||||
public int ComboBoxValue
|
||||
{
|
||||
get => _additionalOption.Option;
|
||||
get => _additionalOption.ComboBoxValue;
|
||||
set
|
||||
{
|
||||
if (value != _additionalOption.Option)
|
||||
if (value != _additionalOption.ComboBoxValue)
|
||||
{
|
||||
_additionalOption.Option = value;
|
||||
_additionalOption.ComboBoxValue = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool ShowComboBox => _additionalOption.SelectionTypeValue == (int)PluginAdditionalOption.SelectionType.Combobox && _additionalOption.ComboBoxOptions != null && _additionalOption.ComboBoxOptions.Count > 0;
|
||||
// TextBox setting
|
||||
public bool ShowTextBox => _additionalOption.PluginOptionType == PluginAdditionalOption.AdditionalOptionType.Textbox;
|
||||
|
||||
public bool ShowCheckBox => _additionalOption.SelectionTypeValue == (int)PluginAdditionalOption.SelectionType.Checkbox;
|
||||
public int TextBoxMaxLength => (_additionalOption.TextBoxMaxLength == null) ? 0 : _additionalOption.TextBoxMaxLength.Value; // 0 ist the default and means no limit.
|
||||
|
||||
public string TextValue
|
||||
{
|
||||
get => _additionalOption.TextValue;
|
||||
set
|
||||
{
|
||||
if (value != _additionalOption.TextValue)
|
||||
{
|
||||
_additionalOption.TextValue = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// NumberBox setting
|
||||
public bool ShowNumberBox => _additionalOption.PluginOptionType == PluginAdditionalOption.AdditionalOptionType.Numberbox;
|
||||
|
||||
public double NumberBoxMin => (_additionalOption.NumberBoxMin == null) ? double.MinValue : _additionalOption.NumberBoxMin.Value;
|
||||
|
||||
public double NumberBoxMax => (_additionalOption.NumberBoxMax == null) ? double.MaxValue : _additionalOption.NumberBoxMax.Value;
|
||||
|
||||
public double NumberBoxSmallChange => (_additionalOption.NumberBoxSmallChange == null) ? 1 : _additionalOption.NumberBoxSmallChange.Value;
|
||||
|
||||
public double NumberBoxLargeChange => (_additionalOption.NumberBoxLargeChange == null) ? 10 : _additionalOption.NumberBoxLargeChange.Value;
|
||||
|
||||
public double NumberValue
|
||||
{
|
||||
get => _additionalOption.NumberValue;
|
||||
set
|
||||
{
|
||||
if (value != _additionalOption.NumberValue)
|
||||
{
|
||||
_additionalOption.NumberValue = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Show combined settings cards
|
||||
public bool ShowCheckboxAndCombobox => _additionalOption.PluginOptionType == PluginAdditionalOption.AdditionalOptionType.CheckboxAndCombobox;
|
||||
|
||||
public bool ShowCheckboxAndTextbox => _additionalOption.PluginOptionType == PluginAdditionalOption.AdditionalOptionType.CheckboxAndTextbox;
|
||||
|
||||
public bool ShowCheckboxAndNumberbox => _additionalOption.PluginOptionType == PluginAdditionalOption.AdditionalOptionType.CheckboxAndNumberbox;
|
||||
|
||||
// Enabled state of ComboBox, TextBox, NumberBox (If combined with checkbox then checkbox value decides it.)
|
||||
public bool SecondSettingIsEnabled => (int)_additionalOption.PluginOptionType > 10 ? _additionalOption.Value : true;
|
||||
|
||||
// Handle property changes
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
|
||||
|
||||
Reference in New Issue
Block a user