More changes

This commit is contained in:
Niels Laute
2025-11-24 16:28:51 +01:00
parent a7e006332a
commit 2992907142
4 changed files with 285 additions and 370 deletions

View File

@@ -258,7 +258,6 @@ namespace Microsoft.PowerToys.Settings.UI.Library
{
_supportsBrightness = value;
OnPropertyChanged();
OnPropertyChanged(nameof(BrightnessTooltip));
}
}
}
@@ -273,7 +272,6 @@ namespace Microsoft.PowerToys.Settings.UI.Library
{
_supportsContrast = value;
OnPropertyChanged();
OnPropertyChanged(nameof(ContrastTooltip));
}
}
}
@@ -289,7 +287,6 @@ namespace Microsoft.PowerToys.Settings.UI.Library
_supportsColorTemperature = value;
_availableColorPresetsCache = null; // Clear cache when support status changes
OnPropertyChanged();
OnPropertyChanged(nameof(ColorTemperatureTooltip));
OnPropertyChanged(nameof(AvailableColorPresets)); // Refresh computed property
OnPropertyChanged(nameof(ColorPresetsForDisplay)); // Refresh display list
}
@@ -306,7 +303,6 @@ namespace Microsoft.PowerToys.Settings.UI.Library
{
_supportsVolume = value;
OnPropertyChanged();
OnPropertyChanged(nameof(VolumeTooltip));
}
}
}
@@ -508,12 +504,6 @@ namespace Microsoft.PowerToys.Settings.UI.Library
[JsonIgnore]
public string ContrastTooltip => _supportsContrast ? string.Empty : "Contrast control not supported by this monitor";
[JsonIgnore]
public string ColorTemperatureTooltip => _supportsColorTemperature ? string.Empty : "Color temperature control not supported by this monitor";
[JsonIgnore]
public string VolumeTooltip => _supportsVolume ? string.Empty : "Volume control not supported by this monitor";
/// <summary>
/// Generate formatted text of all VCP codes for clipboard
/// </summary>

View File

@@ -15,16 +15,12 @@
<controls:SettingsPageControl x:Uid="PowerDisplay" ModuleImageSource="ms-appx:///Assets/Settings/Modules/PowerDisplay.png">
<controls:SettingsPageControl.ModuleContent>
<StackPanel ChildrenTransitions="{StaticResource SettingsCardsAnimations}" Orientation="Vertical">
<tkcontrols:SettingsCard
x:Uid="PowerDisplay_Enable_PowerDisplay"
HeaderIcon="{ui:BitmapIcon Source=/Assets/Settings/Icons/PowerDisplay.png}">
<tkcontrols:SettingsCard x:Uid="PowerDisplay_Enable_PowerDisplay" HeaderIcon="{ui:BitmapIcon Source=/Assets/Settings/Icons/PowerDisplay.png}">
<ToggleSwitch IsOn="{x:Bind ViewModel.IsEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</tkcontrols:SettingsCard>
<controls:SettingsGroup x:Uid="Shortcut" IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
<tkcontrols:SettingsCard
x:Uid="PowerDisplay_ActivationShortcut"
HeaderIcon="{ui:FontIcon Glyph=&#xEDA7;}">
<tkcontrols:SettingsCard x:Uid="PowerDisplay_ActivationShortcut" HeaderIcon="{ui:FontIcon Glyph=&#xEDA7;}">
<controls:ShortcutControl MinWidth="{StaticResource SettingActionControlMinWidth}" HotkeySettings="{x:Bind Path=ViewModel.ActivationShortcut, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
</controls:SettingsGroup>
@@ -36,35 +32,26 @@
Command="{x:Bind ViewModel.LaunchEventHandler}"
HeaderIcon="{ui:FontIcon Glyph=&#xE770;}"
IsClickEnabled="True" />
<tkcontrols:SettingsCard
x:Uid="PowerDisplay_RestoreSettingsOnStartup"
HeaderIcon="{ui:FontIcon Glyph=&#xE7B8;}">
<tkcontrols:SettingsCard x:Uid="PowerDisplay_RestoreSettingsOnStartup" HeaderIcon="{ui:FontIcon Glyph=&#xE7B8;}">
<ToggleSwitch x:Uid="PowerDisplay_RestoreSettingsOnStartup_ToggleSwitch" IsOn="{x:Bind ViewModel.RestoreSettingsOnStartup, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
x:Uid="PowerDisplay_BrightnessUpdateRate"
HeaderIcon="{ui:FontIcon Glyph=&#xE916;}">
<tkcontrols:SettingsCard x:Uid="PowerDisplay_BrightnessUpdateRate" HeaderIcon="{ui:FontIcon Glyph=&#xE916;}">
<ComboBox
MinWidth="120"
ItemsSource="{x:Bind ViewModel.BrightnessUpdateRateOptions}"
SelectedItem="{x:Bind ViewModel.BrightnessUpdateRate, Mode=TwoWay}"
MinWidth="120" />
SelectedItem="{x:Bind ViewModel.BrightnessUpdateRate, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
</controls:SettingsGroup>
<controls:SettingsGroup x:Uid="PowerDisplay_Profiles_GroupSettings" IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
<tkcontrols:SettingsCard
x:Uid="PowerDisplay_QuickProfiles"
HeaderIcon="{ui:FontIcon Glyph=&#xE8B7;}">
<tkcontrols:SettingsCard x:Uid="PowerDisplay_QuickProfiles" HeaderIcon="{ui:FontIcon Glyph=&#xE8B7;}">
<StackPanel Spacing="8">
<!-- Profile buttons row -->
<!-- Profile buttons row -->
<ItemsRepeater ItemsSource="{x:Bind ViewModel.Profiles, Mode=OneWay}">
<ItemsRepeater.Layout>
<StackLayout Orientation="Horizontal" Spacing="8"/>
<StackLayout Orientation="Horizontal" Spacing="8" />
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate x:DataType="library:PowerDisplayProfile">
@@ -73,26 +60,26 @@
Tag="{x:Bind}"
ToolTipService.ToolTip="Apply this profile">
<StackPanel Orientation="Horizontal" Spacing="6">
<FontIcon Glyph="&#xE81E;" FontSize="14"/>
<TextBlock Text="{x:Bind Name}"/>
<FontIcon FontSize="14" Glyph="&#xE81E;" />
<TextBlock Text="{x:Bind Name}" />
</StackPanel>
<Button.ContextFlyout>
<MenuFlyout>
<MenuFlyoutItem
Text="Edit"
Click="EditProfile_Click"
Tag="{x:Bind}">
Tag="{x:Bind}"
Text="Edit">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE70F;"/>
<FontIcon Glyph="&#xE70F;" />
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem
Text="Delete"
Click="DeleteProfile_Click"
Tag="{x:Bind}">
Tag="{x:Bind}"
Text="Delete">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="&#xE74D;"/>
<FontIcon Glyph="&#xE74D;" />
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
</MenuFlyout>
@@ -102,109 +89,84 @@
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
<!-- Add profile button -->
<Button
Click="AddProfileButton_Click"
ToolTipService.ToolTip="Save current settings as new profile">
<!-- Add profile button -->
<Button Click="AddProfileButton_Click" ToolTipService.ToolTip="Save current settings as new profile">
<StackPanel Orientation="Horizontal" Spacing="6">
<FontIcon Glyph="&#xE710;" FontSize="14"/>
<TextBlock x:Uid="PowerDisplay_AddProfile_Text"/>
<FontIcon FontSize="14" Glyph="&#xE710;" />
<TextBlock x:Uid="PowerDisplay_AddProfile_Text" />
</StackPanel>
</Button>
<!-- Help text -->
<!-- Help text -->
<TextBlock
x:Uid="PowerDisplay_ProfilesHelpText"
Style="{StaticResource CaptionTextBlockStyle}"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
TextWrapping="Wrap"/>
Style="{StaticResource CaptionTextBlockStyle}"
TextWrapping="Wrap" />
</StackPanel>
</tkcontrols:SettingsCard>
</controls:SettingsGroup>
<controls:SettingsGroup x:Uid="PowerDisplay_Monitors" IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
<!-- Empty state hint -->
<InfoBar
<!-- Empty state hint -->
<TextBlock
x:Uid="PowerDisplay_NoMonitorsDetected"
IsClosable="False"
IsOpen="{x:Bind ViewModel.IsEnabled, Mode=OneWay}"
Visibility="{x:Bind ViewModel.HasMonitors, Mode=OneWay, Converter={StaticResource ReverseBoolToVisibilityConverter}}"
Severity="Informational">
<InfoBar.IconSource>
<FontIconSource FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph="&#xE7F4;" />
</InfoBar.IconSource>
</InfoBar>
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Visibility="{x:Bind ViewModel.HasMonitors, Mode=OneWay, Converter={StaticResource ReverseBoolToVisibilityConverter}}" />
<!-- Monitor list -->
<!-- Monitor list -->
<ItemsControl
x:Name="MonitorsList"
HorizontalAlignment="Stretch"
Visibility="{x:Bind ViewModel.HasMonitors, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
ItemsSource="{x:Bind ViewModel.Monitors, Mode=OneWay}">
ItemsSource="{x:Bind ViewModel.Monitors, Mode=OneWay}"
Visibility="{x:Bind ViewModel.HasMonitors, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="library:MonitorInfo">
<tkcontrols:SettingsExpander
Margin="0,0,0,2"
Description="{x:Bind InternalName, Mode=OneWay}"
Header="{x:Bind Name}"
HeaderIcon="{ui:FontIcon Glyph=&#xE7F4;}"
IsExpanded="False">
<TextBlock Text="{x:Bind CommunicationMethod, Mode=OneWay}" />
<tkcontrols:SettingsExpander.ItemsHeader>
<!-- Capabilities warning -->
<InfoBar
Title="Monitor capabilities unavailable"
BorderThickness="0"
CornerRadius="0"
IsClosable="False"
IsOpen="True"
Message="This monitor did not report DDC/CI capabilities. Advanced controls may be limited."
Severity="Warning"
Visibility="{x:Bind ShowCapabilitiesWarning, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" />
</tkcontrols:SettingsExpander.ItemsHeader>
<tkcontrols:SettingsExpander.Items>
<!-- Capabilities warning -->
<tkcontrols:SettingsCard
Visibility="{x:Bind ShowCapabilitiesWarning, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
<tkcontrols:SettingsCard.Content>
<InfoBar
Title="Monitor capabilities unavailable"
Message="This monitor did not report DDC/CI capabilities. Advanced controls may be limited."
IsClosable="False"
IsOpen="True"
Severity="Warning">
<InfoBar.IconSource>
<FontIconSource FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph="&#xE7BA;" />
</InfoBar.IconSource>
</InfoBar>
</tkcontrols:SettingsCard.Content>
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard x:Uid="PowerDisplay_Monitor_Name">
<TextBlock Text="{x:Bind Name, Mode=OneWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard x:Uid="PowerDisplay_Monitor_InternalName">
<TextBlock Text="{x:Bind InternalName, Mode=OneWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard x:Uid="PowerDisplay_Monitor_CommunicationMethod">
<TextBlock Text="{x:Bind CommunicationMethod, Mode=OneWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
x:Uid="PowerDisplay_Monitor_ColorTemperature"
IsEnabled="{x:Bind SupportsColorTemperature, Mode=OneWay}">
<tkcontrols:SettingsCard x:Uid="PowerDisplay_Monitor_ColorTemperature" IsEnabled="{x:Bind SupportsColorTemperature, Mode=OneWay}">
<tkcontrols:SettingsCard.Description>
<StackPanel Spacing="4">
<!-- Simple warning message when supported -->
<!-- Simple warning message when supported -->
<TextBlock
Foreground="{ThemeResource SystemFillColorCautionBrush}"
Text="Warning: Changing this setting can cause unexpected behavior. Adjust only when its impact is clear."
TextWrapping="Wrap"
Visibility="{x:Bind SupportsColorTemperature, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
<Run Text="⚠" FontWeight="SemiBold" />
<Run Text=" " />
<Run Text="Warning: Modifying this setting may cause unpredictable results. Change only if you understand what it does." />
</TextBlock>
<!-- Not supported message -->
Visibility="{x:Bind SupportsColorTemperature, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" />
<!-- Not supported message -->
<TextBlock
Text="{x:Bind ColorTemperatureTooltip, Mode=OneWay}"
Visibility="{x:Bind SupportsColorTemperature, Mode=OneWay, Converter={StaticResource ReverseBoolToVisibilityConverter}}"
Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
x:Uid="ColorTemperatureNotSupportedText"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Visibility="{x:Bind SupportsColorTemperature, Mode=OneWay, Converter={StaticResource ReverseBoolToVisibilityConverter}}" />
</StackPanel>
</tkcontrols:SettingsCard.Description>
<ComboBox
x:Name="ColorTemperatureComboBox"
MinWidth="200"
MinWidth="{StaticResource SettingActionControlMinWidth}"
DisplayMemberPath="DisplayName"
IsEnabled="{Binding SupportsColorTemperature, Mode=OneWay}"
ItemsSource="{Binding ColorPresetsForDisplay, Mode=OneWay}"
PlaceholderText="Not available"
SelectedValue="{Binding ColorTemperature, Mode=TwoWay}"
SelectedValuePath="VcpValue"
DisplayMemberPath="DisplayName"
PlaceholderText="Not available"
IsEnabled="{Binding SupportsColorTemperature, Mode=OneWay}"
SelectionChanged="ColorTemperatureComboBox_SelectionChanged"
Tag="{Binding}">
<ToolTipService.ToolTip>
@@ -212,114 +174,85 @@
</ToolTipService.ToolTip>
</ComboBox>
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
x:Uid="PowerDisplay_Monitor_EnableContrast"
IsEnabled="{x:Bind SupportsContrast, Mode=OneWay}">
<tkcontrols:SettingsCard.Description>
<TextBlock
Text="{x:Bind ContrastTooltip, Mode=OneWay}"
Visibility="{x:Bind SupportsContrast, Mode=OneWay, Converter={StaticResource ReverseBoolToVisibilityConverter}}"
Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
</tkcontrols:SettingsCard.Description>
<ToggleSwitch
x:Uid="PowerDisplay_Monitor_EnableContrast_ToggleSwitch"
IsOn="{x:Bind EnableContrast, Mode=TwoWay}"
IsEnabled="{x:Bind SupportsContrast, Mode=OneWay}">
<ToolTipService.ToolTip>
<TextBlock Text="{x:Bind ContrastTooltip, Mode=OneWay}" />
</ToolTipService.ToolTip>
</ToggleSwitch>
<tkcontrols:SettingsCard ContentAlignment="Left" IsEnabled="{x:Bind SupportsContrast, Mode=OneWay}">
<CheckBox x:Uid="PowerDisplay_Monitor_EnableContrast" IsChecked="{x:Bind EnableContrast, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
x:Uid="PowerDisplay_Monitor_EnableVolume"
IsEnabled="{x:Bind SupportsVolume, Mode=OneWay}">
<tkcontrols:SettingsCard.Description>
<TextBlock
Text="{x:Bind VolumeTooltip, Mode=OneWay}"
Visibility="{x:Bind SupportsVolume, Mode=OneWay, Converter={StaticResource ReverseBoolToVisibilityConverter}}"
Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
</tkcontrols:SettingsCard.Description>
<ToggleSwitch
x:Uid="PowerDisplay_Monitor_EnableVolume_ToggleSwitch"
IsOn="{x:Bind EnableVolume, Mode=TwoWay}"
IsEnabled="{x:Bind SupportsVolume, Mode=OneWay}">
<ToolTipService.ToolTip>
<TextBlock Text="{x:Bind VolumeTooltip, Mode=OneWay}" />
</ToolTipService.ToolTip>
</ToggleSwitch>
<tkcontrols:SettingsCard ContentAlignment="Left" IsEnabled="{x:Bind SupportsVolume, Mode=OneWay}">
<CheckBox x:Uid="PowerDisplay_Monitor_EnableVolume" IsChecked="{x:Bind EnableVolume, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard x:Uid="PowerDisplay_Monitor_HideMonitor">
<ToggleSwitch x:Uid="PowerDisplay_Monitor_HideMonitor_ToggleSwitch" IsOn="{x:Bind IsHidden, Mode=TwoWay}" />
<tkcontrols:SettingsCard ContentAlignment="Left">
<CheckBox x:Uid="PowerDisplay_Monitor_HideMonitor" IsChecked="{x:Bind IsHidden, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<!-- VCP Capabilities -->
<!-- VCP Capabilities -->
<tkcontrols:SettingsCard
Header="VCP Capabilities"
Description="DDC/CI VCP codes and supported values (for debugging purposes)"
Header="VCP capabilities"
Visibility="{x:Bind HasCapabilities, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
<Button
Content="&#xE946;"
FontFamily="{ThemeResource SymbolThemeFontFamily}"
Style="{StaticResource SubtleButtonStyle}">
<ToolTipService.ToolTip>
<TextBlock Text="View VCP Details" />
<TextBlock Text="View VCP details" />
</ToolTipService.ToolTip>
<Button.Flyout>
<Flyout ShouldConstrainToRootBounds="False">
<Grid Width="550">
<Grid Width="420">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!-- Header with Copy Button -->
<!-- Header with Copy Button -->
<Grid Grid.Row="0" Margin="0,0,0,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="Detected VCP Codes"
FontWeight="SemiBold"
FontSize="13"
VerticalAlignment="Center" />
<Button Grid.Column="1"
VerticalAlignment="Center"
Padding="8,4"
Click="CopyVcpCodes_Click"
Tag="{x:Bind}"
ToolTipService.ToolTip="Copy all VCP codes to clipboard">
<TextBlock
Grid.Column="0"
VerticalAlignment="Center"
FontSize="13"
FontWeight="SemiBold"
Text="Detected VCP Codes" />
<Button
Grid.Column="1"
Padding="8,4"
VerticalAlignment="Center"
Click="CopyVcpCodes_Click"
Tag="{x:Bind}"
ToolTipService.ToolTip="Copy all VCP codes to clipboard">
<StackPanel Orientation="Horizontal" Spacing="4">
<FontIcon Glyph="&#xE8C8;" FontSize="12" />
<TextBlock Text="Copy" FontSize="12" />
<FontIcon FontSize="12" Glyph="&#xE8C8;" />
<TextBlock FontSize="12" Text="Copy" />
</StackPanel>
</Button>
</Grid>
<!-- VCP Codes List -->
<ScrollViewer Grid.Row="1"
MaxHeight="500"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
HorizontalScrollMode="Disabled">
<ItemsControl ItemsSource="{x:Bind VcpCodesFormatted, Mode=OneWay}"
HorizontalAlignment="Stretch">
<!-- VCP Codes List -->
<ScrollViewer
Grid.Row="1"
MaxHeight="480"
HorizontalScrollBarVisibility="Disabled"
HorizontalScrollMode="Disabled"
VerticalScrollBarVisibility="Auto">
<ItemsControl HorizontalAlignment="Stretch" ItemsSource="{x:Bind VcpCodesFormatted, Mode=OneWay}">
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="library:VcpCodeDisplayInfo">
<StackPanel Orientation="Vertical"
Margin="0,4"
HorizontalAlignment="Stretch">
<TextBlock Text="{x:Bind Title}"
FontWeight="SemiBold"
FontSize="11"
TextWrapping="Wrap" />
<TextBlock Text="{x:Bind Values}"
FontSize="10"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
TextWrapping="Wrap"
Margin="12,2,0,0"
Visibility="{x:Bind HasValues}" />
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
<TextBlock
FontSize="12"
Text="{x:Bind Title}"
TextWrapping="Wrap" />
<TextBlock
Margin="0,0,0,8"
FontSize="12"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{x:Bind Values}"
TextWrapping="Wrap"
Visibility="{x:Bind HasValues}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>

View File

@@ -4,116 +4,104 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewmodels="using:Microsoft.PowerToys.Settings.UI.ViewModels"
xmlns:ui="using:CommunityToolkit.WinUI"
mc:Ignorable="d"
xmlns:viewmodels="using:Microsoft.PowerToys.Settings.UI.ViewModels"
Title="Edit Profile"
PrimaryButtonText="Save"
CloseButtonClick="ContentDialog_CloseButtonClick"
CloseButtonText="Cancel"
DefaultButton="Primary"
IsPrimaryButtonEnabled="{x:Bind ViewModel.CanSave, Mode=OneWay}"
PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
CloseButtonClick="ContentDialog_CloseButtonClick">
PrimaryButtonText="Save"
mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBox
x:Name="ProfileNameTextBox"
Margin="0,0,0,24"
Header="Profile name"
MaxLength="50"
PlaceholderText="Enter profile name (e.g., 'Gaming Mode', 'Work')"
Text="{x:Bind ViewModel.ProfileName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<!-- Profile Name Section -->
<StackPanel Grid.Row="0" Spacing="4" Margin="0,0,0,24">
<TextBlock
Text="Profile Name"
Style="{StaticResource BodyStrongTextBlockStyle}" />
<TextBox
x:Name="ProfileNameTextBox"
Text="{x:Bind ViewModel.ProfileName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
PlaceholderText="Enter profile name (e.g., 'Gaming Mode', 'Work')"
MaxLength="50" />
<TextBlock
Text="Leave empty to auto-generate"
Style="{StaticResource CaptionTextBlockStyle}"
Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
</StackPanel>
<!-- Monitors List -->
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" Padding="0,0,16,0">
<!-- Monitors List -->
<ScrollViewer
Grid.Row="1"
Padding="0,0,16,0"
VerticalScrollBarVisibility="Auto">
<StackPanel Spacing="16">
<TextBlock
Text="Select Monitors"
Style="{StaticResource BodyStrongTextBlockStyle}" />
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="Select Monitors" />
<ItemsControl ItemsSource="{x:Bind ViewModel.Monitors, Mode=OneWay}">
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="viewmodels:MonitorSelectionItem">
<Grid Margin="0,0,0,12">
<!-- Unselected State -->
<Border
CornerRadius="8"
BorderThickness="1"
BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}"
<!-- Unselected State -->
<Border
Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}"
BorderThickness="1"
CornerRadius="8"
Visibility="{x:Bind IsSelected, Mode=OneWay, Converter={StaticResource ReverseBoolToVisibilityConverter}}">
<Grid Padding="16,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<CheckBox
IsChecked="{x:Bind IsSelected, Mode=TwoWay}"
Margin="0,0,12,0"
VerticalAlignment="Center"/>
<CheckBox
Margin="0,0,12,0"
VerticalAlignment="Center"
IsChecked="{x:Bind IsSelected, Mode=TwoWay}" />
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<TextBlock
Text="{x:Bind Monitor.Name}"
Style="{StaticResource BodyStrongTextBlockStyle}"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"/>
<TextBlock
Text="{x:Bind Monitor.InternalName}"
Style="{StaticResource CaptionTextBlockStyle}"
Foreground="{ThemeResource TextFillColorTertiaryBrush}" />
<TextBlock
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Style="{StaticResource BodyStrongTextBlockStyle}"
Text="{x:Bind Monitor.Name}" />
<TextBlock
Foreground="{ThemeResource TextFillColorTertiaryBrush}"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{x:Bind Monitor.InternalName}" />
</StackPanel>
</Grid>
</Border>
<!-- Selected State -->
<Border
CornerRadius="8"
BorderThickness="1"
BorderBrush="{ThemeResource AccentControlElevationBorderBrush}"
<!-- Selected State -->
<Border
Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"
BorderBrush="{ThemeResource AccentControlElevationBorderBrush}"
BorderThickness="1"
CornerRadius="8"
Visibility="{x:Bind IsSelected, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
<StackPanel>
<!-- Header: Monitor Selection -->
<!-- Header: Monitor Selection -->
<Grid Padding="16,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<CheckBox
IsChecked="{x:Bind IsSelected, Mode=TwoWay}"
Margin="0,0,12,0"
VerticalAlignment="Center"/>
<CheckBox
Margin="0,0,12,0"
VerticalAlignment="Center"
IsChecked="{x:Bind IsSelected, Mode=TwoWay}" />
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<TextBlock
Text="{x:Bind Monitor.Name}"
Style="{StaticResource BodyStrongTextBlockStyle}" />
<TextBlock
Text="{x:Bind Monitor.InternalName}"
Style="{StaticResource CaptionTextBlockStyle}"
Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="{x:Bind Monitor.Name}" />
<TextBlock
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{x:Bind Monitor.InternalName}" />
</StackPanel>
</Grid>
<!-- Content: Settings -->
<StackPanel
Padding="20,0,20,20"
Spacing="0">
<!-- Content: Settings -->
<StackPanel Padding="20,0,20,20" Spacing="0">
<MenuFlyoutSeparator Margin="-20,0,-20,16" />
<!-- Brightness Row -->
<!-- Brightness Row -->
<Grid Margin="0,0,0,12" Visibility="{x:Bind Monitor.SupportsBrightness, Converter={StaticResource BoolToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140" />
@@ -121,36 +109,44 @@
<ColumnDefinition Width="40" />
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Spacing="12">
<FontIcon Glyph="&#xE706;" FontSize="16" Foreground="{ThemeResource TextFillColorSecondaryBrush}"/>
<TextBlock Text="Brightness" VerticalAlignment="Center"/>
<StackPanel
VerticalAlignment="Center"
Orientation="Horizontal"
Spacing="12">
<FontIcon
FontSize="16"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Glyph="&#xE706;" />
<TextBlock VerticalAlignment="Center" Text="Brightness" />
</StackPanel>
<Slider
Grid.Column="1"
Value="{x:Bind Brightness, Mode=TwoWay}"
Minimum="0" Maximum="100"
Margin="12,0,12,0"
VerticalAlignment="Center"/>
<TextBlock
Grid.Column="2"
Text="{x:Bind Brightness, Mode=OneWay}"
VerticalAlignment="Center"
TextAlignment="Right"
Margin="0,0,8,0"/>
<ToggleSwitch
Grid.Column="3"
IsOn="{x:Bind IncludeBrightness, Mode=TwoWay}"
OnContent="" OffContent=""
<Slider
Grid.Column="1"
Margin="12,0,12,0"
VerticalAlignment="Center"
Maximum="100"
Minimum="0"
Value="{x:Bind Brightness, Mode=TwoWay}" />
<TextBlock
Grid.Column="2"
Margin="0,0,8,0"
VerticalAlignment="Center"
Text="{x:Bind Brightness, Mode=OneWay}"
TextAlignment="Right" />
<ToggleSwitch
Grid.Column="3"
MinWidth="0"
HorizontalAlignment="Right"
VerticalAlignment="Center"/>
VerticalAlignment="Center"
IsOn="{x:Bind IncludeBrightness, Mode=TwoWay}"
OffContent=""
OnContent="" />
</Grid>
<!-- Contrast Row -->
<!-- Contrast Row -->
<Grid Margin="0,0,0,12" Visibility="{x:Bind Monitor.SupportsContrast, Converter={StaticResource BoolToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140" />
@@ -159,35 +155,43 @@
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Spacing="12">
<FontIcon Glyph="&#xE793;" FontSize="16" Foreground="{ThemeResource TextFillColorSecondaryBrush}"/>
<TextBlock Text="Contrast" VerticalAlignment="Center"/>
<StackPanel
VerticalAlignment="Center"
Orientation="Horizontal"
Spacing="12">
<FontIcon
FontSize="16"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Glyph="&#xE793;" />
<TextBlock VerticalAlignment="Center" Text="Contrast" />
</StackPanel>
<Slider
Grid.Column="1"
Value="{x:Bind Contrast, Mode=TwoWay}"
Minimum="0" Maximum="100"
Margin="12,0,12,0"
VerticalAlignment="Center"/>
<Slider
Grid.Column="1"
Margin="12,0,12,0"
VerticalAlignment="Center"
Maximum="100"
Minimum="0"
Value="{x:Bind Contrast, Mode=TwoWay}" />
<TextBlock
Grid.Column="2"
Text="{x:Bind Contrast, Mode=OneWay}"
VerticalAlignment="Center"
TextAlignment="Right"
Margin="0,0,8,0"/>
<TextBlock
Grid.Column="2"
Margin="0,0,8,0"
VerticalAlignment="Center"
Text="{x:Bind Contrast, Mode=OneWay}"
TextAlignment="Right" />
<ToggleSwitch
Grid.Column="3"
IsOn="{x:Bind IncludeContrast, Mode=TwoWay}"
OnContent="" OffContent=""
<ToggleSwitch
Grid.Column="3"
MinWidth="0"
HorizontalAlignment="Right"
VerticalAlignment="Center"/>
VerticalAlignment="Center"
IsOn="{x:Bind IncludeContrast, Mode=TwoWay}"
OffContent=""
OnContent="" />
</Grid>
<!-- Volume Row -->
<!-- Volume Row -->
<Grid Margin="0,0,0,12" Visibility="{x:Bind Monitor.SupportsVolume, Converter={StaticResource BoolToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140" />
@@ -196,35 +200,43 @@
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Spacing="12">
<FontIcon Glyph="&#xE767;" FontSize="16" Foreground="{ThemeResource TextFillColorSecondaryBrush}"/>
<TextBlock Text="Volume" VerticalAlignment="Center"/>
<StackPanel
VerticalAlignment="Center"
Orientation="Horizontal"
Spacing="12">
<FontIcon
FontSize="16"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Glyph="&#xE767;" />
<TextBlock VerticalAlignment="Center" Text="Volume" />
</StackPanel>
<Slider
Grid.Column="1"
Value="{x:Bind Volume, Mode=TwoWay}"
Minimum="0" Maximum="100"
Margin="12,0,12,0"
VerticalAlignment="Center"/>
<Slider
Grid.Column="1"
Margin="12,0,12,0"
VerticalAlignment="Center"
Maximum="100"
Minimum="0"
Value="{x:Bind Volume, Mode=TwoWay}" />
<TextBlock
Grid.Column="2"
Text="{x:Bind Volume, Mode=OneWay}"
VerticalAlignment="Center"
TextAlignment="Right"
Margin="0,0,8,0"/>
<TextBlock
Grid.Column="2"
Margin="0,0,8,0"
VerticalAlignment="Center"
Text="{x:Bind Volume, Mode=OneWay}"
TextAlignment="Right" />
<ToggleSwitch
Grid.Column="3"
IsOn="{x:Bind IncludeVolume, Mode=TwoWay}"
OnContent="" OffContent=""
<ToggleSwitch
Grid.Column="3"
MinWidth="0"
HorizontalAlignment="Right"
VerticalAlignment="Center"/>
VerticalAlignment="Center"
IsOn="{x:Bind IncludeVolume, Mode=TwoWay}"
OffContent=""
OnContent="" />
</Grid>
<!-- Color Temperature Row -->
<!-- Color Temperature Row -->
<Grid Margin="0,0,0,0" Visibility="{x:Bind Monitor.SupportsColorTemperature, Converter={StaticResource BoolToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140" />
@@ -233,33 +245,40 @@
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Spacing="12">
<FontIcon Glyph="&#xE790;" FontSize="16" Foreground="{ThemeResource TextFillColorSecondaryBrush}"/>
<TextBlock Text="Color Temp" VerticalAlignment="Center"/>
<StackPanel
VerticalAlignment="Center"
Orientation="Horizontal"
Spacing="12">
<FontIcon
FontSize="16"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Glyph="&#xE790;" />
<TextBlock VerticalAlignment="Center" Text="Color Temp" />
</StackPanel>
<ComboBox
Grid.Column="1"
HorizontalAlignment="Stretch"
Margin="12,0,12,0"
MinWidth="160"
ItemsSource="{x:Bind Monitor.ColorPresetsForDisplay, Mode=OneWay}"
SelectedValue="{x:Bind ColorTemperature, Mode=TwoWay}"
SelectedValuePath="VcpValue"
Margin="12,0,12,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
DisplayMemberPath="DisplayName"
ItemsSource="{x:Bind Monitor.ColorPresetsForDisplay, Mode=OneWay}"
PlaceholderText="Select..."
VerticalAlignment="Center" />
SelectedValue="{x:Bind ColorTemperature, Mode=TwoWay}"
SelectedValuePath="VcpValue" />
<!-- Spacer to match layout -->
<!-- Spacer to match layout -->
<Grid Grid.Column="2" />
<ToggleSwitch
Grid.Column="3"
IsOn="{x:Bind IncludeColorTemperature, Mode=TwoWay}"
OnContent="" OffContent=""
<ToggleSwitch
Grid.Column="3"
MinWidth="0"
HorizontalAlignment="Right"
VerticalAlignment="Center"/>
VerticalAlignment="Center"
IsOn="{x:Bind IncludeColorTemperature, Mode=TwoWay}"
OffContent=""
OnContent="" />
</Grid>
</StackPanel>

View File

@@ -2897,7 +2897,7 @@ Right-click to remove the key combination, thereby deactivating the shortcut.</v
<value>Crosshairs fixed length (px)</value>
<comment>px = pixels</comment>
</data>
<data name="MouseUtils_MousePointerCrosshairs_CrosshairsOrientation.Header" xml:space="preserve">
<data name="MouseUtils_MousePointerCrosshairs_CrosshairsOrientation.Header" xml:space="preserve">
<value>Crosshairs orientation</value>
</data>
<data name="MouseUtils_MousePointerCrosshairs_CrosshairsOrientation_Both.Content" xml:space="preserve">
@@ -4668,7 +4668,7 @@ Copy a zoomed screen with Ctrl+C or save it by typing Ctrl+S. Crop the copy or s
</data>
<data name="ZoomIt_Toggle_SmoothZoomedImage.Header" xml:space="preserve">
<value>Smooth zoomed image</value>
</data>
</data>
<data name="ZoomIt_Slider_InitialMagnification.Header" xml:space="preserve">
<value>Specify the initial level of magnification when zooming in</value>
</data>
@@ -5610,26 +5610,11 @@ To record a specific window, enter the hotkey with the Alt key in the opposite m
<data name="PowerDisplay_DeleteProfile_Button.ToolTipService.ToolTip" xml:space="preserve">
<value>Delete selected profile</value>
</data>
<data name="PowerDisplay_Monitor_HideMonitor.Header" xml:space="preserve">
<value>Hide monitor</value>
</data>
<data name="PowerDisplay_Monitor_HideMonitor.Description" xml:space="preserve">
<value>Hide this monitor from the Power Display interface</value>
</data>
<data name="PowerDisplay_Monitor_HideMonitor_ToggleSwitch.OnContent" xml:space="preserve">
<value>On</value>
</data>
<data name="PowerDisplay_Monitor_HideMonitor_ToggleSwitch.OffContent" xml:space="preserve">
<value>Off</value>
</data>
<data name="PowerDisplay_Monitors.Header" xml:space="preserve">
<value>Monitors</value>
</data>
<data name="PowerDisplay_NoMonitorsDetected.Title" xml:space="preserve">
<value>No monitors detected</value>
</data>
<data name="PowerDisplay_NoMonitorsDetected.Message" xml:space="preserve">
<value>Please ensure your external monitors are connected and powered on.</value>
<data name="PowerDisplay_NoMonitorsDetected.Text" xml:space="preserve">
<value>No monitors detected. Ensure your external monitors are connected and powered on.</value>
</data>
<data name="PowerDisplay_Monitor_Name.Header" xml:space="preserve">
<value>Display name</value>
@@ -5659,30 +5644,18 @@ To record a specific window, enter the hotkey with the Alt key in the opposite m
<value>Brightness</value>
</data>
<data name="PowerDisplay_Monitor_ColorTemperature.Header" xml:space="preserve">
<value>Color Temperature</value>
<value>Color temperature</value>
</data>
<data name="PowerDisplay_Monitor_EnableContrast.Header" xml:space="preserve">
<value>Enable contrast</value>
<data name="PowerDisplay_Monitor_EnableContrast.Content" xml:space="preserve">
<value>Display contrast slider</value>
</data>
<data name="PowerDisplay_Monitor_EnableContrast.Description" xml:space="preserve">
<value>Show contrast control for this monitor</value>
<data name="PowerDisplay_Monitor_EnableVolume.Content" xml:space="preserve">
<value>Display volume slider</value>
</data>
<data name="PowerDisplay_Monitor_EnableContrast_ToggleSwitch.OnContent" xml:space="preserve">
<value>On</value>
<data name="PowerDisplay_Monitor_HideMonitor.Content" xml:space="preserve">
<value>Hide monitor</value>
</data>
<data name="PowerDisplay_Monitor_EnableContrast_ToggleSwitch.OffContent" xml:space="preserve">
<value>Off</value>
</data>
<data name="PowerDisplay_Monitor_EnableVolume.Header" xml:space="preserve">
<value>Enable volume</value>
</data>
<data name="PowerDisplay_Monitor_EnableVolume.Description" xml:space="preserve">
<value>Show volume control for this monitor</value>
</data>
<data name="PowerDisplay_Monitor_EnableVolume_ToggleSwitch.OnContent" xml:space="preserve">
<value>On</value>
</data>
<data name="PowerDisplay_Monitor_EnableVolume_ToggleSwitch.OffContent" xml:space="preserve">
<value>Off</value>
<data name="ColorTemperatureNotSupportedText.Text" xml:space="preserve">
<value>Color temperature control not supported by this monitor</value>
</data>
</root>