mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-06-11 20:23:07 +08:00

* Removed hardcoded background * Background * Updated pages * Added OOBE to shellpage * Margin fixes * Fix * Resource update * Resource string update * Removed reference from installer file * Updated UI fixes and remove conflicts * Adding new settings control * PowerRename * Sidepanel updates * Shortcut Guide * Updates screeens * General page updates * Awake UX update * Changed order for power preview note * Fixes * UI fixes * KBM * IsEnabled state support * Added new controls * Update * Updated nugest packages * Replaced itemscontrol * Introducing setting button style * FancyZones page * Plugin page * Switch case * Fixed typo * Plugin manager update * Introducing SettingExpander * Setting automation properties * Accesibility improvements * VCM and cleanup * Refactoring OOBE pages part 1 * OOBE XAML refactoring * Added MinWidth to actioncontent controls * Updates to various settings * Spell update * Update to author label * Clean up * Removing redunant files * Move file * Updated files * Revert "Updated files" This reverts commit1a5c887eae
. * Revert "Move file" This reverts commit2b06c75c1f
. * Revert "Removing redunant files" This reverts commitfe79ec1701
. * Revert "Clean up" This reverts commit028e15fab6
. * Removed redundant styles * Revert "Removed redundant styles" This reverts commitdfdfd65021
. * Files cleanup * Removing converter, updating background and paddings * Styling updates * Unit test updates * Fixes * Installer fixes * Update Resources.resw * Shell page updates * Updated pagelinks * Styles re-ordering * Updated converter * Updated ToggleSwitch style * Bugfixes * Typo fix * [Settings] New UX - installer dll fixes (#12818) * [Settings] New UX - Fix some failing tests (#12822) * Bugfixes * Typo fix * Hiding VCM * Bugfixes * Download button fix * Remove Newtonsoft.Json from installer file * Updated visuals * Bugfixes * Syntax fix * Updated installer file * Bugfixes * New label * Theming support for OOBE * Put back in Documentation hyperlink * Right uid Co-authored-by: Niels Laute <niels9001@hotmail.com> Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
159 lines
5.3 KiB
C#
159 lines
5.3 KiB
C#
// 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.ComponentModel;
|
|
using Windows.UI.Accessibility;
|
|
using Windows.UI.Xaml;
|
|
using Windows.UI.Xaml.Automation;
|
|
using Windows.UI.Xaml.Controls;
|
|
|
|
namespace Microsoft.PowerToys.Settings.UI.Controls
|
|
{
|
|
[TemplateVisualState(Name = "Normal", GroupName = "CommonStates")]
|
|
[TemplateVisualState(Name = "Disabled", GroupName = "CommonStates")]
|
|
[TemplatePart(Name = PartIconPresenter, Type = typeof(ContentPresenter))]
|
|
[TemplatePart(Name = PartDescriptionPresenter, Type = typeof(ContentPresenter))]
|
|
public class Setting : ContentControl
|
|
{
|
|
private const string PartIconPresenter = "IconPresenter";
|
|
private const string PartDescriptionPresenter = "DescriptionPresenter";
|
|
private ContentPresenter _iconPresenter;
|
|
private ContentPresenter _descriptionPresenter;
|
|
private Setting _setting;
|
|
|
|
public Setting()
|
|
{
|
|
this.DefaultStyleKey = typeof(Setting);
|
|
}
|
|
|
|
public static readonly DependencyProperty HeaderProperty = DependencyProperty.Register(
|
|
"Header",
|
|
typeof(string),
|
|
typeof(Setting),
|
|
new PropertyMetadata(default(string), OnHeaderChanged));
|
|
|
|
public static readonly DependencyProperty DescriptionProperty = DependencyProperty.Register(
|
|
"Description",
|
|
typeof(object),
|
|
typeof(Setting),
|
|
new PropertyMetadata(null, OnDescriptionChanged));
|
|
|
|
public static readonly DependencyProperty IconProperty = DependencyProperty.Register(
|
|
"Icon",
|
|
typeof(object),
|
|
typeof(Setting),
|
|
new PropertyMetadata(default(string), OnIconChanged));
|
|
|
|
public static readonly DependencyProperty ActionContentProperty = DependencyProperty.Register(
|
|
"ActionContent",
|
|
typeof(object),
|
|
typeof(Setting),
|
|
null);
|
|
|
|
[Localizable(true)]
|
|
public string Header
|
|
{
|
|
get => (string)GetValue(HeaderProperty);
|
|
set => SetValue(HeaderProperty, value);
|
|
}
|
|
|
|
[Localizable(true)]
|
|
public object Description
|
|
{
|
|
get => (object)GetValue(DescriptionProperty);
|
|
set => SetValue(DescriptionProperty, value);
|
|
}
|
|
|
|
public object Icon
|
|
{
|
|
get => (object)GetValue(IconProperty);
|
|
set => SetValue(IconProperty, value);
|
|
}
|
|
|
|
public object ActionContent
|
|
{
|
|
get => (object)GetValue(ActionContentProperty);
|
|
set => SetValue(ActionContentProperty, value);
|
|
}
|
|
|
|
protected override void OnApplyTemplate()
|
|
{
|
|
IsEnabledChanged -= Setting_IsEnabledChanged;
|
|
_setting = (Setting)this;
|
|
_iconPresenter = (ContentPresenter)_setting.GetTemplateChild(PartIconPresenter);
|
|
_descriptionPresenter = (ContentPresenter)_setting.GetTemplateChild(PartDescriptionPresenter);
|
|
Update();
|
|
SetEnabledState();
|
|
IsEnabledChanged += Setting_IsEnabledChanged;
|
|
base.OnApplyTemplate();
|
|
}
|
|
|
|
private static void OnHeaderChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
((Setting)d).Update();
|
|
}
|
|
|
|
private static void OnIconChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
((Setting)d).Update();
|
|
}
|
|
|
|
private static void OnDescriptionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
((Setting)d).Update();
|
|
}
|
|
|
|
private void Setting_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
SetEnabledState();
|
|
}
|
|
|
|
private void SetEnabledState()
|
|
{
|
|
VisualStateManager.GoToState(this, IsEnabled ? "Normal" : "Disabled", true);
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (_setting == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (_setting.ActionContent != null)
|
|
{
|
|
if (_setting.ActionContent.GetType() != typeof(Button))
|
|
{
|
|
// We do not want to override the default AutomationProperties.Name of a button. Its Content property already describes what it does.
|
|
if (!string.IsNullOrEmpty(_setting.Header))
|
|
{
|
|
AutomationProperties.SetName((UIElement)_setting.ActionContent, _setting.Header);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (_setting._iconPresenter != null)
|
|
{
|
|
if (_setting.Icon == null)
|
|
{
|
|
_setting._iconPresenter.Visibility = Visibility.Collapsed;
|
|
}
|
|
else
|
|
{
|
|
_setting._iconPresenter.Visibility = Visibility.Visible;
|
|
}
|
|
}
|
|
|
|
if (_setting.Description == null)
|
|
{
|
|
_setting._descriptionPresenter.Visibility = Visibility.Collapsed;
|
|
}
|
|
else
|
|
{
|
|
_setting._descriptionPresenter.Visibility = Visibility.Visible;
|
|
}
|
|
}
|
|
}
|
|
}
|