mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 11:48:06 +01:00
[CmdPal] Settings UX tweaks (#42303)
## Summary of the Pull Request Clean up of the Settings app with some minor styling changes. - Moved activation key related settings into the Activation expander. - On the Extensions page, seperated the alias settings for improved a11y - Added a card to the extensions settings frame <img width="1051" height="935" alt="image" src="https://github.com/user-attachments/assets/05ae5794-8e30-4af0-aa38-a3f600aa6749" /> ## PR Checklist - [ ] Closes: #xxx - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed --------- Co-authored-by: Jiří Polášek <me@jiripolasek.com>
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
x:Class="Microsoft.CmdPal.UI.App"
|
x:Class="Microsoft.CmdPal.UI.App"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:controls="using:Microsoft.CmdPal.UI.Controls"
|
||||||
xmlns:local="using:Microsoft.CmdPal.UI">
|
xmlns:local="using:Microsoft.CmdPal.UI">
|
||||||
<Application.Resources>
|
<Application.Resources>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
@@ -15,11 +16,12 @@
|
|||||||
<ResourceDictionary Source="Styles/Settings.xaml" />
|
<ResourceDictionary Source="Styles/Settings.xaml" />
|
||||||
<ResourceDictionary Source="Controls/Tag.xaml" />
|
<ResourceDictionary Source="Controls/Tag.xaml" />
|
||||||
<ResourceDictionary Source="Controls/KeyVisual/KeyVisual.xaml" />
|
<ResourceDictionary Source="Controls/KeyVisual/KeyVisual.xaml" />
|
||||||
|
<ResourceDictionary Source="Controls/IsEnabledTextBlock.xaml" />
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
<!-- Other app resources here -->
|
<!-- Other app resources here -->
|
||||||
|
|
||||||
<x:Double x:Key="SettingActionControlMinWidth">240</x:Double>
|
<x:Double x:Key="SettingActionControlMinWidth">240</x:Double>
|
||||||
|
<Style BasedOn="{StaticResource DefaultCheckBoxStyle}" TargetType="controls:CheckBoxWithDescriptionControl" />
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</Application.Resources>
|
</Application.Resources>
|
||||||
</Application>
|
</Application>
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
// 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 Microsoft.UI.Xaml;
|
||||||
|
using Microsoft.UI.Xaml.Automation;
|
||||||
|
using Microsoft.UI.Xaml.Controls;
|
||||||
|
|
||||||
|
namespace Microsoft.CmdPal.UI.Controls;
|
||||||
|
|
||||||
|
public partial class CheckBoxWithDescriptionControl : CheckBox
|
||||||
|
{
|
||||||
|
private CheckBoxWithDescriptionControl _checkBoxSubTextControl;
|
||||||
|
|
||||||
|
public CheckBoxWithDescriptionControl()
|
||||||
|
{
|
||||||
|
_checkBoxSubTextControl = (CheckBoxWithDescriptionControl)this;
|
||||||
|
this.Loaded += CheckBoxSubTextControl_Loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnApplyTemplate()
|
||||||
|
{
|
||||||
|
Update();
|
||||||
|
base.OnApplyTemplate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(Header))
|
||||||
|
{
|
||||||
|
AutomationProperties.SetName(this, Header);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckBoxSubTextControl_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
StackPanel panel = new StackPanel() { Orientation = Orientation.Vertical };
|
||||||
|
panel.Children.Add(new TextBlock() { Text = Header, TextWrapping = TextWrapping.WrapWholeWords });
|
||||||
|
|
||||||
|
// Add text box only if the description is not empty. Required for additional plugin options.
|
||||||
|
if (!string.IsNullOrWhiteSpace(Description))
|
||||||
|
{
|
||||||
|
panel.Children.Add(new IsEnabledTextBlock() { Style = (Style)App.Current.Resources["SecondaryIsEnabledTextBlockStyle"], Text = Description });
|
||||||
|
}
|
||||||
|
|
||||||
|
_checkBoxSubTextControl.Content = panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static readonly DependencyProperty HeaderProperty = DependencyProperty.Register(
|
||||||
|
"Header",
|
||||||
|
typeof(string),
|
||||||
|
typeof(CheckBoxWithDescriptionControl),
|
||||||
|
new PropertyMetadata(default(string)));
|
||||||
|
|
||||||
|
public static readonly DependencyProperty DescriptionProperty = DependencyProperty.Register(
|
||||||
|
"Description",
|
||||||
|
typeof(string),
|
||||||
|
typeof(CheckBoxWithDescriptionControl),
|
||||||
|
new PropertyMetadata(default(string)));
|
||||||
|
|
||||||
|
[Localizable(true)]
|
||||||
|
public string Header
|
||||||
|
{
|
||||||
|
get => (string)GetValue(HeaderProperty);
|
||||||
|
set => SetValue(HeaderProperty, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Localizable(true)]
|
||||||
|
public string Description
|
||||||
|
{
|
||||||
|
get => (string)GetValue(DescriptionProperty);
|
||||||
|
set => SetValue(DescriptionProperty, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<ResourceDictionary
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:controls="using:Microsoft.CmdPal.UI.Controls">
|
||||||
|
|
||||||
|
<Style x:Key="DefaultIsEnabledTextBlockStyle" TargetType="controls:IsEnabledTextBlock">
|
||||||
|
<Setter Property="Foreground" Value="{ThemeResource DefaultTextForegroundThemeBrush}" />
|
||||||
|
<Setter Property="IsTabStop" Value="False" />
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="controls:IsEnabledTextBlock">
|
||||||
|
<Grid>
|
||||||
|
<TextBlock
|
||||||
|
x:Name="Label"
|
||||||
|
FontFamily="{TemplateBinding FontFamily}"
|
||||||
|
FontSize="{TemplateBinding FontSize}"
|
||||||
|
FontWeight="{TemplateBinding FontWeight}"
|
||||||
|
Foreground="{TemplateBinding Foreground}"
|
||||||
|
Text="{TemplateBinding Text}"
|
||||||
|
TextWrapping="WrapWholeWords" />
|
||||||
|
<VisualStateManager.VisualStateGroups>
|
||||||
|
<VisualStateGroup x:Name="CommonStates">
|
||||||
|
<VisualState x:Name="Normal" />
|
||||||
|
<VisualState x:Name="Disabled">
|
||||||
|
<VisualState.Setters>
|
||||||
|
<Setter Target="Label.Foreground" Value="{ThemeResource TextFillColorDisabledBrush}" />
|
||||||
|
</VisualState.Setters>
|
||||||
|
</VisualState>
|
||||||
|
</VisualStateGroup>
|
||||||
|
</VisualStateManager.VisualStateGroups>
|
||||||
|
</Grid>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="SecondaryIsEnabledTextBlockStyle"
|
||||||
|
BasedOn="{StaticResource DefaultIsEnabledTextBlockStyle}"
|
||||||
|
TargetType="controls:IsEnabledTextBlock">
|
||||||
|
<Setter Property="Foreground" Value="{ThemeResource TextFillColorSecondaryBrush}" />
|
||||||
|
<Setter Property="FontSize" Value="12" />
|
||||||
|
</Style>
|
||||||
|
</ResourceDictionary>
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
// 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 Microsoft.UI.Xaml;
|
||||||
|
using Microsoft.UI.Xaml.Controls;
|
||||||
|
|
||||||
|
namespace Microsoft.CmdPal.UI.Controls;
|
||||||
|
|
||||||
|
[TemplateVisualState(Name = "Normal", GroupName = "CommonStates")]
|
||||||
|
[TemplateVisualState(Name = "Disabled", GroupName = "CommonStates")]
|
||||||
|
public partial class IsEnabledTextBlock : Control
|
||||||
|
{
|
||||||
|
public IsEnabledTextBlock()
|
||||||
|
{
|
||||||
|
this.Style = (Style)App.Current.Resources["DefaultIsEnabledTextBlockStyle"];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnApplyTemplate()
|
||||||
|
{
|
||||||
|
IsEnabledChanged -= IsEnabledTextBlock_IsEnabledChanged;
|
||||||
|
SetEnabledState();
|
||||||
|
IsEnabledChanged += IsEnabledTextBlock_IsEnabledChanged;
|
||||||
|
base.OnApplyTemplate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
|
||||||
|
"Text",
|
||||||
|
typeof(string),
|
||||||
|
typeof(IsEnabledTextBlock),
|
||||||
|
null);
|
||||||
|
|
||||||
|
[Localizable(true)]
|
||||||
|
public string Text
|
||||||
|
{
|
||||||
|
get => (string)GetValue(TextProperty);
|
||||||
|
set => SetValue(TextProperty, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void IsEnabledTextBlock_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
|
||||||
|
{
|
||||||
|
SetEnabledState();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetEnabledState()
|
||||||
|
{
|
||||||
|
VisualStateManager.GoToState(this, IsEnabled ? "Normal" : "Disabled", true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -66,7 +66,9 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Remove="Controls\ActionBar.xaml" />
|
<None Remove="Controls\ActionBar.xaml" />
|
||||||
|
<None Remove="Controls\KeyVisual\KeyCharPresenter.xaml" />
|
||||||
<None Remove="Controls\SearchBar.xaml" />
|
<None Remove="Controls\SearchBar.xaml" />
|
||||||
|
<None Remove="IsEnabledTextBlock.xaml" />
|
||||||
<None Remove="ListDetailPage.xaml" />
|
<None Remove="ListDetailPage.xaml" />
|
||||||
<None Remove="LoadingPage.xaml" />
|
<None Remove="LoadingPage.xaml" />
|
||||||
<None Remove="MainPage.xaml" />
|
<None Remove="MainPage.xaml" />
|
||||||
@@ -180,6 +182,18 @@
|
|||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Page Update="IsEnabledTextBlock.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Page Update="Controls\KeyVisual\KeyCharPresenter.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Styles\Colors.xaml">
|
<Page Update="Styles\Colors.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
|||||||
@@ -33,6 +33,10 @@
|
|||||||
x:Key="StringEmptyToBoolConverter"
|
x:Key="StringEmptyToBoolConverter"
|
||||||
EmptyValue="False"
|
EmptyValue="False"
|
||||||
NotEmptyValue="True" />
|
NotEmptyValue="True" />
|
||||||
|
<converters:BoolToObjectConverter
|
||||||
|
x:Key="BoolToOptionConverter"
|
||||||
|
FalseValue="1"
|
||||||
|
TrueValue="0" />
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</Page.Resources>
|
</Page.Resources>
|
||||||
|
|
||||||
@@ -47,22 +51,34 @@
|
|||||||
MaxWidth="1000"
|
MaxWidth="1000"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
Spacing="{StaticResource SettingsCardSpacing}">
|
Spacing="{StaticResource SettingsCardSpacing}">
|
||||||
|
<controls:SettingsCard x:Uid="ExtensionEnableCard">
|
||||||
<controls:SettingsCard x:Uid="ExtensionEnableCard" HeaderIcon="{ui:FontIcon Glyph=}">
|
<controls:SettingsCard.HeaderIcon>
|
||||||
|
<cpcontrols:ContentIcon>
|
||||||
|
<cpcontrols:ContentIcon.Content>
|
||||||
|
<cpcontrols:IconBox
|
||||||
|
Width="20"
|
||||||
|
Height="20"
|
||||||
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
|
SourceKey="{x:Bind ViewModel.Icon, Mode=OneWay}"
|
||||||
|
SourceRequested="{x:Bind helpers:IconCacheProvider.SourceRequested}" />
|
||||||
|
</cpcontrols:ContentIcon.Content>
|
||||||
|
</cpcontrols:ContentIcon>
|
||||||
|
</controls:SettingsCard.HeaderIcon>
|
||||||
|
<controls:SettingsCard.Header>
|
||||||
|
<TextBlock>
|
||||||
|
<Run x:Uid="ExtensionEnable" Text="Enable" />
|
||||||
|
<Run Text="{x:Bind ViewModel.DisplayName}" />
|
||||||
|
</TextBlock>
|
||||||
|
</controls:SettingsCard.Header>
|
||||||
<ToggleSwitch IsOn="{x:Bind ViewModel.IsEnabled, Mode=TwoWay}" />
|
<ToggleSwitch IsOn="{x:Bind ViewModel.IsEnabled, Mode=TwoWay}" />
|
||||||
</controls:SettingsCard>
|
</controls:SettingsCard>
|
||||||
|
|
||||||
<controls:SwitchPresenter
|
<controls:SwitchPresenter
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
TargetType="x:Boolean"
|
TargetType="x:Boolean"
|
||||||
Value="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
|
Value="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
|
||||||
|
|
||||||
<controls:Case Value="True">
|
<controls:Case Value="True">
|
||||||
|
|
||||||
<StackPanel Orientation="Vertical">
|
<StackPanel Orientation="Vertical">
|
||||||
|
|
||||||
<TextBlock x:Uid="ExtensionCommandsHeader" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" />
|
<TextBlock x:Uid="ExtensionCommandsHeader" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" />
|
||||||
|
|
||||||
<ItemsRepeater ItemsSource="{x:Bind ViewModel.TopLevelCommands, Mode=OneWay}" Layout="{StaticResource VerticalStackLayout}">
|
<ItemsRepeater ItemsSource="{x:Bind ViewModel.TopLevelCommands, Mode=OneWay}" Layout="{StaticResource VerticalStackLayout}">
|
||||||
<ItemsRepeater.ItemTemplate>
|
<ItemsRepeater.ItemTemplate>
|
||||||
<DataTemplate x:DataType="viewModels:TopLevelViewModel">
|
<DataTemplate x:DataType="viewModels:TopLevelViewModel">
|
||||||
@@ -84,22 +100,22 @@
|
|||||||
</controls:SettingsExpander.HeaderIcon>
|
</controls:SettingsExpander.HeaderIcon>
|
||||||
|
|
||||||
<!-- Content goes here -->
|
<!-- Content goes here -->
|
||||||
|
|
||||||
<controls:SettingsExpander.Items>
|
<controls:SettingsExpander.Items>
|
||||||
<controls:SettingsCard x:Uid="Settings_ExtensionPage_GlobalHotkey_SettingsCard" HeaderIcon="{ui:FontIcon Glyph=}">
|
<controls:SettingsCard x:Uid="Settings_ExtensionPage_GlobalHotkey_SettingsCard">
|
||||||
<cpcontrols:ShortcutControl HotkeySettings="{x:Bind Hotkey, Mode=TwoWay}" />
|
<cpcontrols:ShortcutControl HotkeySettings="{x:Bind Hotkey, Mode=TwoWay}" />
|
||||||
</controls:SettingsCard>
|
</controls:SettingsCard>
|
||||||
|
<controls:SettingsCard x:Uid="Settings_ExtensionPage_Alias_SettingsCard">
|
||||||
<controls:SettingsCard x:Uid="Settings_ExtensionPage_Alias_SettingsCard" HeaderIcon="{ui:FontIcon Glyph=}">
|
<TextBox
|
||||||
<StackPanel Orientation="Vertical">
|
x:Uid="Settings_ExtensionPage_Alias_PlaceholderText"
|
||||||
<TextBox Text="{x:Bind AliasText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
|
MinWidth="{StaticResource SettingActionControlMinWidth}"
|
||||||
<ToggleSwitch
|
Text="{x:Bind AliasText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
x:Uid="Settings_ExtensionPage_Alias_ToggleSwitch"
|
</controls:SettingsCard>
|
||||||
IsEnabled="{x:Bind AliasText, Converter={StaticResource StringEmptyToBoolConverter}, Mode=OneWay}"
|
<controls:SettingsCard x:Uid="Settings_ExtensionPage_AliasActivation_SettingsCard" IsEnabled="{x:Bind AliasText, Converter={StaticResource StringEmptyToBoolConverter}, Mode=OneWay}">
|
||||||
IsOn="{x:Bind IsDirectAlias, Mode=TwoWay}" />
|
<ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind IsDirectAlias, Converter={StaticResource BoolToOptionConverter}, Mode=TwoWay}">
|
||||||
</StackPanel>
|
<ComboBoxItem x:Uid="Settings_ExtensionPage_Alias_DirectComboBox" />
|
||||||
|
<ComboBoxItem x:Uid="Settings_ExtensionPage_Alias_IndirectComboBox" />
|
||||||
|
</ComboBox>
|
||||||
</controls:SettingsCard>
|
</controls:SettingsCard>
|
||||||
|
|
||||||
</controls:SettingsExpander.Items>
|
</controls:SettingsExpander.Items>
|
||||||
</controls:SettingsExpander>
|
</controls:SettingsExpander>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
@@ -130,11 +146,8 @@
|
|||||||
</cpcontrols:ContentIcon.Content>
|
</cpcontrols:ContentIcon.Content>
|
||||||
</cpcontrols:ContentIcon>
|
</cpcontrols:ContentIcon>
|
||||||
</controls:SettingsCard.HeaderIcon>
|
</controls:SettingsCard.HeaderIcon>
|
||||||
|
|
||||||
<!-- Content goes here -->
|
<!-- Content goes here -->
|
||||||
<ToggleSwitch IsOn="{x:Bind IsEnabled, Mode=TwoWay}" />
|
<ToggleSwitch IsOn="{x:Bind IsEnabled, Mode=TwoWay}" />
|
||||||
|
|
||||||
|
|
||||||
</controls:SettingsCard>
|
</controls:SettingsCard>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ItemsRepeater.ItemTemplate>
|
</ItemsRepeater.ItemTemplate>
|
||||||
@@ -145,8 +158,13 @@
|
|||||||
Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
|
Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
|
||||||
Visibility="{x:Bind ViewModel.HasSettings}" />
|
Visibility="{x:Bind ViewModel.HasSettings}" />
|
||||||
|
|
||||||
<Frame x:Name="SettingsFrame" Visibility="{x:Bind ViewModel.HasSettings}">
|
<Frame
|
||||||
|
x:Name="SettingsFrame"
|
||||||
|
Background="{ThemeResource SettingsCardBackground}"
|
||||||
|
BorderBrush="{ThemeResource SettingsCardBorderBrush}"
|
||||||
|
BorderThickness="{ThemeResource SettingsCardBorderThickness}"
|
||||||
|
CornerRadius="{StaticResource ControlCornerRadius}"
|
||||||
|
Visibility="{x:Bind ViewModel.HasSettings}">
|
||||||
<controls:SwitchPresenter
|
<controls:SwitchPresenter
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
TargetType="x:Boolean"
|
TargetType="x:Boolean"
|
||||||
@@ -163,7 +181,6 @@
|
|||||||
<cmdpalUI:ContentPage ViewModel="{x:Bind ViewModel.SettingsPage, Mode=OneWay}" />
|
<cmdpalUI:ContentPage ViewModel="{x:Bind ViewModel.SettingsPage, Mode=OneWay}" />
|
||||||
</controls:Case>
|
</controls:Case>
|
||||||
</controls:SwitchPresenter>
|
</controls:SwitchPresenter>
|
||||||
|
|
||||||
</Frame>
|
</Frame>
|
||||||
|
|
||||||
<TextBlock
|
<TextBlock
|
||||||
@@ -197,8 +214,6 @@
|
|||||||
Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
|
Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
|
||||||
Visibility="{x:Bind ViewModel.IsFromExtension, Mode=OneWay, Converter={StaticResource BoolToInvertedVisibilityConverter}}" />
|
Visibility="{x:Bind ViewModel.IsFromExtension, Mode=OneWay, Converter={StaticResource BoolToInvertedVisibilityConverter}}" />
|
||||||
<controls:SettingsCard x:Uid="Settings_ExtensionPage_Builtin_SettingsCard" Visibility="{x:Bind ViewModel.IsFromExtension, Mode=OneWay, Converter={StaticResource BoolToInvertedVisibilityConverter}}" />
|
<controls:SettingsCard x:Uid="Settings_ExtensionPage_Builtin_SettingsCard" Visibility="{x:Bind ViewModel.IsFromExtension, Mode=OneWay, Converter={StaticResource BoolToInvertedVisibilityConverter}}" />
|
||||||
|
|
||||||
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
|
|||||||
@@ -25,7 +25,6 @@
|
|||||||
MaxWidth="1000"
|
MaxWidth="1000"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
Spacing="{StaticResource SettingsCardSpacing}">
|
Spacing="{StaticResource SettingsCardSpacing}">
|
||||||
|
|
||||||
<ItemsRepeater ItemsSource="{x:Bind viewModel.CommandProviders, Mode=OneWay}" Layout="{StaticResource VerticalStackLayout}">
|
<ItemsRepeater ItemsSource="{x:Bind viewModel.CommandProviders, Mode=OneWay}" Layout="{StaticResource VerticalStackLayout}">
|
||||||
<ItemsRepeater.ItemTemplate>
|
<ItemsRepeater.ItemTemplate>
|
||||||
<DataTemplate x:DataType="viewModels:ProviderSettingsViewModel">
|
<DataTemplate x:DataType="viewModels:ProviderSettingsViewModel">
|
||||||
@@ -47,9 +46,7 @@
|
|||||||
</cpcontrols:ContentIcon.Content>
|
</cpcontrols:ContentIcon.Content>
|
||||||
</cpcontrols:ContentIcon>
|
</cpcontrols:ContentIcon>
|
||||||
</controls:SettingsCard.HeaderIcon>
|
</controls:SettingsCard.HeaderIcon>
|
||||||
|
|
||||||
<ToggleSwitch IsOn="{x:Bind IsEnabled, Mode=TwoWay}" />
|
<ToggleSwitch IsOn="{x:Bind IsEnabled, Mode=TwoWay}" />
|
||||||
|
|
||||||
</controls:SettingsCard>
|
</controls:SettingsCard>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ItemsRepeater.ItemTemplate>
|
</ItemsRepeater.ItemTemplate>
|
||||||
|
|||||||
@@ -37,22 +37,20 @@
|
|||||||
<!-- 'Activation' section -->
|
<!-- 'Activation' section -->
|
||||||
|
|
||||||
<TextBlock x:Uid="ActivationSettingsHeader" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" />
|
<TextBlock x:Uid="ActivationSettingsHeader" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" />
|
||||||
|
|
||||||
<controls:SettingsExpander
|
<controls:SettingsExpander
|
||||||
x:Uid="Settings_GeneralPage_ActivationKey_SettingsExpander"
|
x:Uid="Settings_GeneralPage_ActivationKey_SettingsExpander"
|
||||||
HeaderIcon="{ui:FontIcon Glyph=}"
|
HeaderIcon="{ui:FontIcon Glyph=}"
|
||||||
IsExpanded="True">
|
IsExpanded="True">
|
||||||
<ptControls:ShortcutControl HotkeySettings="{x:Bind viewModel.Hotkey, Mode=TwoWay}" />
|
<ptControls:ShortcutControl HotkeySettings="{x:Bind viewModel.Hotkey, Mode=TwoWay}" />
|
||||||
|
|
||||||
<controls:SettingsExpander.Items>
|
<controls:SettingsExpander.Items>
|
||||||
<controls:SettingsCard x:Uid="Settings_GeneralPage_LowLevelHook_SettingsCard">
|
<controls:SettingsCard ContentAlignment="Left">
|
||||||
<ToggleSwitch IsOn="{x:Bind viewModel.UseLowLevelGlobalHotkey, Mode=TwoWay}" />
|
<ptControls:CheckBoxWithDescriptionControl x:Uid="Settings_GeneralPage_LowLevelHook_SettingsCard" IsChecked="{x:Bind viewModel.UseLowLevelGlobalHotkey, Mode=TwoWay}" />
|
||||||
|
</controls:SettingsCard>
|
||||||
|
<controls:SettingsCard ContentAlignment="Left">
|
||||||
|
<ptControls:CheckBoxWithDescriptionControl x:Uid="Settings_GeneralPage_IgnoreShortcutWhenFullscreen_SettingsCard" IsChecked="{x:Bind viewModel.IgnoreShortcutWhenFullscreen, Mode=TwoWay}" />
|
||||||
</controls:SettingsCard>
|
</controls:SettingsCard>
|
||||||
</controls:SettingsExpander.Items>
|
</controls:SettingsExpander.Items>
|
||||||
</controls:SettingsExpander>
|
</controls:SettingsExpander>
|
||||||
<controls:SettingsCard x:Uid="Settings_GeneralPage_IgnoreShortcutWhenFullscreen_SettingsCard" HeaderIcon="{ui:FontIcon Glyph=}">
|
|
||||||
<ToggleSwitch IsOn="{x:Bind viewModel.IgnoreShortcutWhenFullscreen, Mode=TwoWay}" />
|
|
||||||
</controls:SettingsCard>
|
|
||||||
<controls:SettingsCard x:Uid="Settings_GeneralPage_GoHome_SettingsCard" HeaderIcon="{ui:FontIcon Glyph=}">
|
<controls:SettingsCard x:Uid="Settings_GeneralPage_GoHome_SettingsCard" HeaderIcon="{ui:FontIcon Glyph=}">
|
||||||
<ToggleSwitch IsOn="{x:Bind viewModel.HotkeyGoesHome, Mode=TwoWay}" />
|
<ToggleSwitch IsOn="{x:Bind viewModel.HotkeyGoesHome, Mode=TwoWay}" />
|
||||||
</controls:SettingsCard>
|
</controls:SettingsCard>
|
||||||
|
|||||||
@@ -257,8 +257,8 @@ Right-click to remove the key combination, thereby deactivating the shortcut.</v
|
|||||||
<value>Disabled</value>
|
<value>Disabled</value>
|
||||||
<comment>Displayed when an extension is disabled</comment>
|
<comment>Displayed when an extension is disabled</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExtensionEnableCard.Header" xml:space="preserve">
|
<data name="ExtensionEnable.Text" xml:space="preserve">
|
||||||
<value>Enable this extension</value>
|
<value>Enable</value>
|
||||||
<comment>Displayed on a toggle controlling the extension's enabled / disabled state</comment>
|
<comment>Displayed on a toggle controlling the extension's enabled / disabled state</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExtensionEnableCard.Description" xml:space="preserve">
|
<data name="ExtensionEnableCard.Description" xml:space="preserve">
|
||||||
@@ -312,7 +312,13 @@ Right-click to remove the key combination, thereby deactivating the shortcut.</v
|
|||||||
<value>Alias</value>
|
<value>Alias</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionPage_Alias_SettingsCard.Description" xml:space="preserve">
|
<data name="Settings_ExtensionPage_Alias_SettingsCard.Description" xml:space="preserve">
|
||||||
<value>Typing this alias will navigate to this command. Direct aliases navigate as soon as you type the alias. Indirect aliases navigate after typing a trailing space.</value>
|
<value>A short keyword used to navigate to this command.</value>
|
||||||
|
</data>
|
||||||
|
<data name="Settings_ExtensionPage_AliasActivation_SettingsCard.Header" xml:space="preserve">
|
||||||
|
<value>Alias activation</value>
|
||||||
|
</data>
|
||||||
|
<data name="Settings_ExtensionPage_AliasActivation_SettingsCard.Description" xml:space="preserve">
|
||||||
|
<value>Choose when the alias runs. Direct runs as soon as you type the alias. Indirect runs after a trailing space.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionPage_Builtin_SettingsCard.Header" xml:space="preserve">
|
<data name="Settings_ExtensionPage_Builtin_SettingsCard.Header" xml:space="preserve">
|
||||||
<value>Built-in</value>
|
<value>Built-in</value>
|
||||||
@@ -429,12 +435,15 @@ Right-click to remove the key combination, thereby deactivating the shortcut.</v
|
|||||||
<value>Close</value>
|
<value>Close</value>
|
||||||
<comment>Close as a verb, as in Close the application</comment>
|
<comment>Close as a verb, as in Close the application</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionPage_Alias_ToggleSwitch.OnContent" xml:space="preserve">
|
<data name="Settings_ExtensionPage_Alias_DirectComboBox.Content" xml:space="preserve">
|
||||||
<value>Direct</value>
|
<value>Direct</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionPage_Alias_ToggleSwitch.OffContent" xml:space="preserve">
|
<data name="Settings_ExtensionPage_Alias_InDirectComboBox.Content" xml:space="preserve">
|
||||||
<value>Indirect</value>
|
<value>Indirect</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Settings_ExtensionPage_Alias_PlaceholderText.PlaceholderText" xml:space="preserve">
|
||||||
|
<value>Enter alias</value>
|
||||||
|
</data>
|
||||||
<data name="StatusMessagesButton.[using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
<data name="StatusMessagesButton.[using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||||
<value>Show status messages</value>
|
<value>Show status messages</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -454,7 +463,7 @@ Right-click to remove the key combination, thereby deactivating the shortcut.</v
|
|||||||
<value>Trigger reload of the extension externally with the x-cmdpal://reload command</value>
|
<value>Trigger reload of the extension externally with the x-cmdpal://reload command</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ForDevelopersSettingsHeader.Text" xml:space="preserve">
|
<data name="ForDevelopersSettingsHeader.Text" xml:space="preserve">
|
||||||
<value>For Developers</value>
|
<value>For developers</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UntitledPageTitle" xml:space="preserve">
|
<data name="UntitledPageTitle" xml:space="preserve">
|
||||||
<value>an untitled</value>
|
<value>an untitled</value>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||||
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary.MergedDictionaries>
|
||||||
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
|
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
|
||||||
<!-- Other merged dictionaries here -->
|
<ResourceDictionary Source="ms-appx:///CommunityToolkit.WinUI.Controls.SettingsControls/Themes/Generic.xaml" />
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
|
||||||
<x:Double x:Key="SettingsCardSpacing">4</x:Double>
|
<x:Double x:Key="SettingsCardSpacing">4</x:Double>
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
|
|
||||||
Reference in New Issue
Block a user