/
githubmirror
/
PowerToys
Обзор
Документация
Войти
/
githubmirror
/
PowerToys
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/modules/powerdisplay/PowerDisplay/PowerDisplayXAML/MainWindow.xaml
815 строк
64 KB
moooyo
[PowerDisplay] Add stable profile IDs (#49175)
16 июл 2026, 09:33
Не верифицирован
16 июл 2026, 09:33
2b8e624
Код
Авторство
О чём код?
<winuiex:WindowEx x:Class="PowerDisplay.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:animatedVisuals="using:Microsoft.UI.Xaml.Controls.AnimatedVisuals" xmlns:helpers="using:PowerDisplay.Helpers" xmlns:local="using:PowerDisplay" xmlns:models="using:PowerDisplay.Models" xmlns:ui="using:CommunityToolkit.WinUI" xmlns:vm="using:PowerDisplay.ViewModels" xmlns:winuiex="using:WinUIEx" MinWidth="0" MinHeight="0" IsMaximizable="False" IsMinimizable="False" IsResizable="False" IsTitleBarVisible="False"> <winuiex:WindowEx.SystemBackdrop> <DesktopAcrylicBackdrop /> </winuiex:WindowEx.SystemBackdrop> <Grid x:Name="RootGrid" IsTabStop="True" KeyDown="RootGrid_KeyDown" TabFocusNavigation="Local"> <Grid.Resources> <GridLength x:Key="FlyoutStatusBarHeight">48</GridLength> <x:Double x:Key="FlyoutSeparatorHeight">1</x:Double> <GridLength x:Key="FlyoutSliderIconColumnWidth">20</GridLength> <x:Double x:Key="FlyoutActionGlyphFontSize">16</x:Double> <x:Double x:Key="FlyoutLinkGlyphFontSize">16</x:Double> <x:Double x:Key="FlyoutActionGlyphSmallFontSize">14</x:Double> <x:Double x:Key="FlyoutActionGlyphExtraSmallFontSize">12</x:Double> <x:Double x:Key="FlyoutSecondaryTextFontSize">12</x:Double> <x:Double x:Key="FlyoutRotationGlyphFontSize">14</x:Double> <x:Double x:Key="FlyoutButtonSize">32</x:Double> <x:Double x:Key="FlyoutSliderRowHeight">32</x:Double> <x:Double x:Key="FlyoutCompactSpacing">4</x:Double> <x:Double x:Key="FlyoutStandardSpacing">8</x:Double> <x:Double x:Key="FlyoutMonitorSectionSpacing">16</x:Double> <x:Double x:Key="FlyoutScanningIndicatorSize">24</x:Double> <x:Double x:Key="FlyoutScanningSpacing">16</x:Double> <Thickness x:Key="FlyoutButtonPadding">6</Thickness> <Thickness x:Key="FlyoutScanningMargin">0,16,0,16</Thickness> <Thickness x:Key="FlyoutContentPadding">16</Thickness> <Thickness x:Key="FlyoutListHeaderMargin">16,0,8,0</Thickness> <Thickness x:Key="FlyoutListItemPadding">0,4</Thickness> <Thickness x:Key="FlyoutSelectionGlyphMargin">8,0,0,0</Thickness> <Thickness x:Key="FlyoutSectionTopMargin">0,8,0,0</Thickness> <Thickness x:Key="FlyoutSectionContainerPadding">8,0,8,8</Thickness> <Thickness x:Key="FlyoutSeparatorMargin">8,8</Thickness> <Thickness x:Key="FlyoutStatusBarMargin">12,-8,12,0</Thickness> <Thickness x:Key="MonitorHeaderOffsetMargin">0,8,0,0</Thickness> <Thickness x:Key="MonitorNameBaselineMargin">2,0,0,2</Thickness> <x:Double x:Key="FlyoutContextMenuMinWidth">240</x:Double> <x:Double x:Key="FlyoutContextMenuMaxWidth">320</x:Double> <Style x:Key="FlyoutButtonStyle" BasedOn="{StaticResource SubtleButtonStyle}" TargetType="Button"> <Setter Property="Padding" Value="{StaticResource FlyoutButtonPadding}" /> <Setter Property="Width" Value="{StaticResource FlyoutButtonSize}" /> <Setter Property="Height" Value="{StaticResource FlyoutButtonSize}" /> <Setter Property="FontFamily" Value="{ThemeResource SymbolThemeFontFamily}" /> </Style> <Style x:Key="FlyoutIconToggleButtonStyle" TargetType="ToggleButton"> <Setter Property="Padding" Value="{StaticResource FlyoutButtonPadding}" /> <Setter Property="Width" Value="{StaticResource FlyoutButtonSize}" /> <Setter Property="Height" Value="{StaticResource FlyoutButtonSize}" /> <Setter Property="Background" Value="Transparent" /> <Setter Property="BorderBrush" Value="Transparent" /> <Setter Property="BorderThickness" Value="0" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ToggleButton"> <Border Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" /> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="FlyoutHeaderToggleButtonStyle" TargetType="ToggleButton"> <Setter Property="Padding" Value="0" /> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> <Setter Property="VerticalContentAlignment" Value="Center" /> <Setter Property="Foreground" Value="{ThemeResource TextFillColorPrimaryBrush}" /> <Setter Property="Background" Value="Transparent" /> <Setter Property="BorderBrush" Value="Transparent" /> <Setter Property="BorderThickness" Value="0" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ToggleButton"> <Border Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" /> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </Grid.Resources> <Border x:Name="MainContainer"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="{StaticResource FlyoutStatusBarHeight}" /> </Grid.RowDefinitions> <!-- Main Content Area with modern design --> <Border x:Name="ContentArea" Background="{ThemeResource LayerOnAcrylicFillColorDefaultBrush}" BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}" BorderThickness="0,0,0,1"> <Grid> <StackPanel Margin="{StaticResource FlyoutScanningMargin}" HorizontalAlignment="Center" VerticalAlignment="Center" Spacing="{StaticResource FlyoutScanningSpacing}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.IsScanning), Mode=OneWay}"> <ProgressRing Width="{StaticResource FlyoutScanningIndicatorSize}" Height="{StaticResource FlyoutScanningIndicatorSize}" Foreground="{ThemeResource AccentFillColorDefaultBrush}" IsActive="True" /> <TextBlock x:Name="ScanningMonitorsTextBlock" x:Uid="ScanningMonitorsText" HorizontalAlignment="Center" FontSize="{StaticResource FlyoutSecondaryTextFontSize}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" TextAlignment="Center" /> </StackPanel> <!-- No Monitors State with InfoBar --> <InfoBar x:Name="NoMonitorsInfoBar" x:Uid="NoMonitorsText" IconSource="{ui:FontIconSource Glyph=}" IsClosable="False" IsOpen="{x:Bind ViewModel.ShowNoMonitorsMessage, Mode=OneWay}" Severity="Informational" /> <!-- Content Area --> <ScrollViewer x:Name="MainScrollViewer" Padding="{StaticResource FlyoutContentPadding}" HorizontalScrollBarVisibility="Disabled" HorizontalScrollMode="Disabled" IsTabStop="False" VerticalScrollBarVisibility="Auto"> <!-- Linked-brightness + monitors list --> <StackPanel Spacing="{StaticResource FlyoutStandardSpacing}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.HasMonitors), Mode=OneWay}"> <!-- All displays card (visible only when link mode is on) --> <StackPanel Padding="{StaticResource FlyoutSectionContainerPadding}" Background="{ThemeResource LayerOnAcrylicFillColorDefaultBrush}" BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}" BorderThickness="1" CornerRadius="{StaticResource OverlayCornerRadius}" Spacing="{StaticResource FlyoutCompactSpacing}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.LinkedLevelsActive), Mode=OneWay}"> <Grid Margin="{StaticResource FlyoutSectionTopMargin}" ColumnSpacing="{StaticResource FlyoutStandardSpacing}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Viewbox Width="16" Height="16" VerticalAlignment="Center"> <FontIcon FontSize="22" Foreground="{ThemeResource TextFillColorPrimaryBrush}" Glyph="" /> </Viewbox> <StackPanel Grid.Column="1" VerticalAlignment="Center"> <TextBlock x:Uid="AllDisplaysTitle" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" /> <StackPanel Orientation="Horizontal" Spacing="{StaticResource FlyoutCompactSpacing}"> <TextBlock FontSize="{StaticResource FlyoutSecondaryTextFontSize}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="{x:Bind ViewModel.LinkedMonitorsCountText, Mode=OneWay}" /> <TextBlock FontSize="{StaticResource FlyoutSecondaryTextFontSize}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="•" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.HasExcludedMonitors), Mode=OneWay}" /> <TextBlock FontSize="{StaticResource FlyoutSecondaryTextFontSize}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="{x:Bind ViewModel.ExcludedMonitorsCountText, Mode=OneWay}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.HasExcludedMonitors), Mode=OneWay}" /> </StackPanel> </StackPanel> </Grid> <Grid Height="{StaticResource FlyoutSliderRowHeight}" Margin="{StaticResource FlyoutSectionTopMargin}" ColumnSpacing="{StaticResource FlyoutStandardSpacing}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="{StaticResource FlyoutSliderIconColumnWidth}" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <FontIcon HorizontalAlignment="Center" VerticalAlignment="Center" AutomationProperties.AccessibilityView="Raw" FontSize="{StaticResource FlyoutActionGlyphFontSize}" Glyph="" /> <Slider x:Uid="AllDisplaysBrightnessAutomation" Grid.Column="1" VerticalAlignment="Center" helpers:SliderExtensions.IsMouseWheelEnabled="True" helpers:SliderExtensions.MouseWheelChange="{x:Bind ViewModel.MouseWheelIncrement, Mode=OneWay}" IsEnabled="{x:Bind ViewModel.IsLinkedBrightnessSliderEnabled, Mode=OneWay}" IsTabStop="True" Maximum="100" Minimum="0" Value="{x:Bind ViewModel.LinkedBrightness, Mode=TwoWay}" /> </Grid> </StackPanel> <!-- Individual displays section header (visible only when link mode is on) --> <ToggleButton x:Name="IndividualDisplaysToggle" x:Uid="IndividualDisplaysToggle" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Background="Transparent" BorderThickness="0" IsChecked="{x:Bind ViewModel.IndividualDisplaysExpanded, Mode=TwoWay}" Style="{StaticResource FlyoutHeaderToggleButtonStyle}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.LinkedLevelsActive), Mode=OneWay}"> <Grid HorizontalAlignment="Stretch" ColumnSpacing="{StaticResource FlyoutStandardSpacing}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <TextBlock x:Uid="IndividualDisplaysHeader" VerticalAlignment="Center" /> <FontIcon Grid.Column="1" FontSize="{StaticResource FlyoutActionGlyphExtraSmallFontSize}" Glyph="" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.ShowIndividualDisplaysCollapsedIcon), Mode=OneWay}" /> <FontIcon Grid.Column="1" FontSize="{StaticResource FlyoutActionGlyphExtraSmallFontSize}" Glyph="" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.IndividualDisplaysExpanded), Mode=OneWay}" /> <Border Grid.Column="2" Height="{StaticResource FlyoutSeparatorHeight}" VerticalAlignment="Center" Background="{ThemeResource DividerStrokeColorDefaultBrush}" /> </Grid> </ToggleButton> <!-- Monitors List with modern card design --> <ItemsRepeater x:Name="MonitorsRepeater" ItemsSource="{x:Bind ViewModel.Monitors, Mode=OneWay}" TabFocusNavigation="Local" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.ShowIndividualDisplays), Mode=OneWay}"> <ItemsRepeater.Layout> <StackLayout Orientation="Vertical" Spacing="{StaticResource FlyoutMonitorSectionSpacing}" /> </ItemsRepeater.Layout> <ItemsRepeater.ItemTemplate> <DataTemplate x:DataType="vm:MonitorViewModel"> <StackPanel Padding="{StaticResource FlyoutSectionContainerPadding}" Background="{ThemeResource LayerOnAcrylicFillColorDefaultBrush}" BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}" BorderThickness="1" CornerRadius="{StaticResource OverlayCornerRadius}" TabFocusNavigation="Local" XYFocusKeyboardNavigation="Enabled"> <!-- Monitor Name with Icon --> <Grid Height="{StaticResource FlyoutButtonSize}" Margin="{StaticResource MonitorHeaderOffsetMargin}" HorizontalAlignment="Stretch" ColumnSpacing="{StaticResource FlyoutStandardSpacing}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <local:MonitorIcon VerticalAlignment="Center" IsBuiltIn="{x:Bind IsInternal, Mode=OneWay}" MonitorNumber="{x:Bind MonitorNumber, Mode=OneWay}" /> <TextBlock Grid.Column="1" Margin="{StaticResource MonitorNameBaselineMargin}" VerticalAlignment="Center" Text="{x:Bind DisplayName, Mode=OneWay}" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" ToolTipService.ToolTip="{x:Bind DisplayName, Mode=OneWay}" /> <!-- Icon buttons for InputSource and ColorTemperature --> <StackPanel Grid.Column="2" HorizontalAlignment="Right" VerticalAlignment="Center" Orientation="Horizontal" Spacing="{StaticResource FlyoutCompactSpacing}"> <!-- Exclude-from-linked-brightness toggle (only shown while link mode is on) --> <ToggleButton x:Uid="ExcludeFromSyncToggle" IsChecked="{x:Bind IsExcludedFromSync, Mode=TwoWay}" IsEnabled="{x:Bind IsInteractionEnabled, Mode=OneWay}" Style="{StaticResource FlyoutIconToggleButtonStyle}" ToolTipService.ToolTip="{x:Bind SyncToggleToolTip, Mode=OneWay}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ShowExcludeButton), Mode=OneWay}"> <Grid> <FontIcon FontSize="{StaticResource FlyoutLinkGlyphFontSize}" Foreground="{ThemeResource AccentFillColorDefaultBrush}" Glyph="" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ShowIncludedInSyncIcon), Mode=OneWay}" /> <Grid Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(IsExcludedFromSync), Mode=OneWay}"> <FontIcon FontSize="{StaticResource FlyoutLinkGlyphFontSize}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" Glyph="" /> <Border Width="2" Height="16" HorizontalAlignment="Center" VerticalAlignment="Center" Background="{ThemeResource TextFillColorSecondaryBrush}" RenderTransformOrigin="0.5,0.5"> <Border.RenderTransform> <RotateTransform Angle="-45" /> </Border.RenderTransform> </Border> </Grid> </Grid> </ToggleButton> <!-- Color Temperature Button --> <Button x:Uid="ColorTemperatureTooltip" Content="{ui:FontIcon Glyph=, FontSize={StaticResource FlyoutActionGlyphFontSize}}" IsEnabled="{x:Bind IsInteractionEnabled, Mode=OneWay}" Style="{StaticResource SubtleButtonStyle}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ShowColorTemperature), Mode=OneWay}"> <Button.Flyout> <Flyout Opened="Flyout_Opened" ShouldConstrainToRootBounds="False"> <ListView ItemsSource="{x:Bind AvailableColorPresets, Mode=OneWay}" SelectionChanged="{x:Bind HandleColorTemperatureSelectionChanged}" SelectionMode="Single"> <ListView.Header> <TextBlock x:Uid="ColorTemperatureHeader" Margin="{StaticResource FlyoutListHeaderMargin}" FontSize="{StaticResource FlyoutSecondaryTextFontSize}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" /> </ListView.Header> <ListView.ItemTemplate> <DataTemplate x:DataType="vm:ColorTemperatureItem"> <Grid Padding="{StaticResource FlyoutListItemPadding}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <TextBlock VerticalAlignment="Center" Text="{x:Bind DisplayName}" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" /> <FontIcon Grid.Column="1" Margin="{StaticResource FlyoutSelectionGlyphMargin}" FontSize="{StaticResource FlyoutSecondaryTextFontSize}" Glyph="" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(IsSelected)}" /> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView> </Flyout> </Button.Flyout> </Button> <!-- More Button (Input Source + Power State) --> <Button x:Uid="MoreOptionsTooltip" Content="{ui:FontIcon Glyph=, FontSize={StaticResource FlyoutActionGlyphFontSize}}" Style="{StaticResource SubtleButtonStyle}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ShowMoreButton), Mode=OneWay}"> <Button.Flyout> <Flyout Opened="Flyout_Opened" Placement="BottomEdgeAlignedRight" ShouldConstrainToRootBounds="False"> <StackPanel MinWidth="{StaticResource FlyoutContextMenuMinWidth}" MaxWidth="{StaticResource FlyoutContextMenuMaxWidth}"> <!-- Input Source Section --> <ListView ItemsSource="{x:Bind AvailableInputSources, Mode=OneWay}" SelectionChanged="{x:Bind HandleInputSourceSelectionChanged}" SelectionMode="Single" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ShowInputSource), Mode=OneWay}"> <ListView.Header> <TextBlock x:Uid="InputSourceHeader" Margin="{StaticResource FlyoutListHeaderMargin}" FontSize="{StaticResource FlyoutSecondaryTextFontSize}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" /> </ListView.Header> <ListView.ItemTemplate> <DataTemplate x:DataType="vm:InputSourceItem"> <Grid Padding="{StaticResource FlyoutListItemPadding}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <TextBlock VerticalAlignment="Center" Text="{x:Bind Name}" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" /> <FontIcon Grid.Column="1" Margin="{StaticResource FlyoutSelectionGlyphMargin}" FontSize="{StaticResource FlyoutSecondaryTextFontSize}" Glyph="" Visibility="{x:Bind SelectionVisibility}" /> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView> <!-- Separator between Input Source and Power State --> <Border Height="{StaticResource FlyoutSeparatorHeight}" Margin="{StaticResource FlyoutSeparatorMargin}" Background="{ThemeResource DividerStrokeColorDefaultBrush}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ShowSeparatorAfterInputSource), Mode=OneWay}" /> <!-- Power State Section --> <ListView ItemsSource="{x:Bind AvailablePowerStates, Mode=OneWay}" SelectionChanged="{x:Bind HandlePowerStateSelectionChanged}" SelectionMode="Single" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ShowPowerState), Mode=OneWay}"> <ListView.Header> <TextBlock x:Uid="PowerStateHeader" Margin="{StaticResource FlyoutListHeaderMargin}" FontSize="{StaticResource FlyoutSecondaryTextFontSize}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" /> </ListView.Header> <ListView.ItemTemplate> <DataTemplate x:DataType="vm:PowerStateItem"> <Grid Padding="{StaticResource FlyoutListItemPadding}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <TextBlock VerticalAlignment="Center" Text="{x:Bind Name}" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" /> <FontIcon Grid.Column="1" Margin="{StaticResource FlyoutSelectionGlyphMargin}" FontSize="{StaticResource FlyoutSecondaryTextFontSize}" Glyph="" Visibility="{x:Bind SelectionVisibility}" /> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackPanel> </Flyout> </Button.Flyout> </Button> </StackPanel> </Grid> <!-- Brightness Control --> <Grid Height="{StaticResource FlyoutSliderRowHeight}" Margin="{StaticResource FlyoutSectionTopMargin}" ColumnSpacing="{StaticResource FlyoutStandardSpacing}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ShowBrightnessSlider), Mode=OneWay}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="{StaticResource FlyoutSliderIconColumnWidth}" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <FontIcon x:Uid="BrightnessTooltip" HorizontalAlignment="Center" VerticalAlignment="Center" AutomationProperties.AccessibilityView="Raw" FontSize="{StaticResource FlyoutActionGlyphFontSize}" Glyph="" /> <Slider x:Uid="BrightnessAutomation" Grid.Column="1" VerticalAlignment="Center" helpers:SliderExtensions.IsMouseWheelEnabled="True" helpers:SliderExtensions.MouseWheelChange="{x:Bind MouseWheelIncrement, Mode=OneWay}" IsEnabled="{x:Bind IsBrightnessSliderEnabled, Mode=OneWay}" IsTabStop="True" Maximum="100" Minimum="0" Value="{x:Bind Brightness, Mode=TwoWay}" /> </Grid> <!-- Contrast Control --> <Grid Margin="{StaticResource FlyoutSectionTopMargin}" ColumnSpacing="{StaticResource FlyoutStandardSpacing}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ShowContrast), Mode=OneWay}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="{StaticResource FlyoutSliderIconColumnWidth}" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <FontIcon x:Uid="ContrastTooltip" HorizontalAlignment="Center" VerticalAlignment="Center" AutomationProperties.AccessibilityView="Raw" FontSize="{StaticResource FlyoutActionGlyphExtraSmallFontSize}" Glyph="" /> <Slider x:Uid="ContrastAutomation" Grid.Column="1" VerticalAlignment="Center" helpers:SliderExtensions.IsMouseWheelEnabled="True" helpers:SliderExtensions.MouseWheelChange="{x:Bind MouseWheelIncrement, Mode=OneWay}" IsEnabled="{x:Bind IsInteractionEnabled, Mode=OneWay}" IsTabStop="True" Maximum="100" Minimum="0" Value="{x:Bind Contrast, Mode=TwoWay}" /> </Grid> <!-- Volume Control --> <Grid Margin="{StaticResource FlyoutSectionTopMargin}" ColumnSpacing="{StaticResource FlyoutStandardSpacing}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ShowVolume), Mode=OneWay}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="{StaticResource FlyoutSliderIconColumnWidth}" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <FontIcon x:Uid="VolumeTooltip" Margin="4,0,0,0" HorizontalAlignment="Center" VerticalAlignment="Center" AutomationProperties.AccessibilityView="Raw" FontSize="{StaticResource FlyoutActionGlyphFontSize}" Glyph="" /> <Slider x:Uid="VolumeAutomation" Grid.Column="1" VerticalAlignment="Center" helpers:SliderExtensions.IsMouseWheelEnabled="True" helpers:SliderExtensions.MouseWheelChange="{x:Bind MouseWheelIncrement, Mode=OneWay}" IsEnabled="{x:Bind IsInteractionEnabled, Mode=OneWay}" IsTabStop="True" Maximum="100" Minimum="0" Value="{x:Bind Volume, Mode=TwoWay}" /> </Grid> <!-- Rotation Controls --> <Grid Margin="{StaticResource FlyoutSectionTopMargin}" ColumnSpacing="{StaticResource FlyoutStandardSpacing}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ShowRotation), Mode=OneWay}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="{StaticResource FlyoutSliderIconColumnWidth}" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <FontIcon x:Uid="RotationTooltip" HorizontalAlignment="Center" VerticalAlignment="Center" AutomationProperties.AccessibilityView="Raw" FontSize="{StaticResource FlyoutActionGlyphSmallFontSize}" Glyph="" /> <ComboBox Grid.Column="1" HorizontalAlignment="Stretch" IsEnabled="{x:Bind IsInteractionEnabled, Mode=OneWay}" SelectedIndex="{x:Bind SelectedRotationIndex, Mode=TwoWay}"> <ComboBoxItem x:Uid="RotationOptionLandscape" /> <ComboBoxItem x:Uid="RotationOptionPortrait" /> <ComboBoxItem x:Uid="RotationOptionLandscapeFlipped" /> <ComboBoxItem x:Uid="RotationOptionPortraitFlipped" /> </ComboBox> <!-- Normal (0°) --> <!--<ToggleButton x:Uid="RotateNormalTooltip" HorizontalAlignment="Stretch" Click="{x:Bind HandleRotation0Click}" IsChecked="{x:Bind IsRotation0, Mode=OneWay}" IsEnabled="{x:Bind IsInteractionEnabled, Mode=OneWay}" IsTabStop="True"> <FontIcon FontSize="{StaticResource FlyoutRotationGlyphFontSize}" Glyph="" /> </ToggleButton> --> <!-- Left (270°) --> <!-- <ToggleButton x:Uid="RotateLeftTooltip" Grid.Column="1" HorizontalAlignment="Stretch" Click="{x:Bind HandleRotation3Click}" IsChecked="{x:Bind IsRotation3, Mode=OneWay}" IsEnabled="{x:Bind IsInteractionEnabled, Mode=OneWay}" IsTabStop="True"> <FontIcon FontSize="{StaticResource FlyoutRotationGlyphFontSize}" Glyph="" /> </ToggleButton> --> <!-- Right (90°) --> <!-- <ToggleButton x:Uid="RotateRightTooltip" Grid.Column="2" HorizontalAlignment="Stretch" Click="{x:Bind HandleRotation1Click}" IsChecked="{x:Bind IsRotation1, Mode=OneWay}" IsEnabled="{x:Bind IsInteractionEnabled, Mode=OneWay}" IsTabStop="True"> <FontIcon FontSize="{StaticResource FlyoutRotationGlyphFontSize}" Glyph="" /> </ToggleButton> --> <!-- Inverted (180°) --> <!-- <ToggleButton x:Uid="RotateInvertedTooltip" Grid.Column="3" HorizontalAlignment="Stretch" Click="{x:Bind HandleRotation2Click}" IsChecked="{x:Bind IsRotation2, Mode=OneWay}" IsEnabled="{x:Bind IsInteractionEnabled, Mode=OneWay}" IsTabStop="True"> <FontIcon FontSize="{StaticResource FlyoutRotationGlyphFontSize}" Glyph="" /> </ToggleButton>--> </Grid> </StackPanel> </DataTemplate> </ItemsRepeater.ItemTemplate> </ItemsRepeater> </StackPanel> </ScrollViewer> </Grid> </Border> <Grid x:Name="StatusBar" Grid.Row="1" Padding="{StaticResource FlyoutStatusBarMargin}"> <!-- Action Buttons --> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <StackPanel HorizontalAlignment="Left" VerticalAlignment="Center" Orientation="Horizontal" Spacing="{StaticResource FlyoutStandardSpacing}"> <Button x:Name="ProfilesButton" x:Uid="ProfilesTooltip" Content="{ui:FontIcon Glyph=, FontSize={StaticResource FlyoutActionGlyphFontSize}}" Style="{StaticResource SubtleButtonStyle}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.ShowProfileSwitcherButton), Mode=OneWay}"> <Button.Flyout> <Flyout x:Name="ProfilesFlyout" Opened="Flyout_Opened" ShouldConstrainToRootBounds="False"> <Grid> <StackPanel HorizontalAlignment="Center" Spacing="{StaticResource FlyoutStandardSpacing}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.IsProfilesLoading), Mode=OneWay}"> <ProgressRing x:Uid="ProfilesLoadingIndicator" Width="{StaticResource FlyoutScanningIndicatorSize}" Height="{StaticResource FlyoutScanningIndicatorSize}" IsActive="True" /> <TextBlock x:Uid="ProfilesLoadingText" /> </StackPanel> <ListView x:Name="ProfilesListView" ItemsSource="{x:Bind ViewModel.Profiles, Mode=OneWay}" SelectionChanged="ProfileListView_SelectionChanged" SelectionMode="Single" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.HasProfiles), Mode=OneWay}"> <ListView.Header> <TextBlock x:Uid="ProfilesHeader" Margin="{StaticResource FlyoutListHeaderMargin}" FontSize="{StaticResource FlyoutSecondaryTextFontSize}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" /> </ListView.Header> <ListView.ItemTemplate> <DataTemplate x:DataType="models:PowerDisplayProfile"> <TextBlock Padding="{StaticResource FlyoutListItemPadding}" Text="{x:Bind DisplayName}" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" /> </DataTemplate> </ListView.ItemTemplate> </ListView> </Grid> </Flyout> </Button.Flyout> </Button> </StackPanel> <StackPanel Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Orientation="Horizontal" Spacing="{StaticResource FlyoutStandardSpacing}"> <ToggleButton x:Name="LinkLevelsToggle" x:Uid="LinkLevelsToggle" IsChecked="{x:Bind ViewModel.LinkedLevelsActive, Mode=TwoWay}" Style="{StaticResource FlyoutIconToggleButtonStyle}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.ShowLinkLevelsToggle), Mode=OneWay}"> <Grid> <FontIcon FontSize="{StaticResource FlyoutActionGlyphFontSize}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" Glyph="" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.ShowLinkLevelsInactiveIcon), Mode=OneWay}" /> <FontIcon FontSize="{StaticResource FlyoutActionGlyphFontSize}" Foreground="{ThemeResource AccentFillColorDefaultBrush}" Glyph="" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.LinkedLevelsActive), Mode=OneWay}" /> </Grid> </ToggleButton> <Button x:Uid="RefreshTooltip" Content="{ui:FontIcon Glyph=, FontSize=16}" Style="{StaticResource SubtleButtonStyle}"> <Button.Flyout> <MenuFlyout> <MenuFlyoutItem x:Name="RefreshButton" x:Uid="RefreshText" Click="OnRefreshClick" Icon="{ui:FontIcon Glyph=, FontSize=16}" /> <MenuFlyoutItem x:Name="IdentifyButton" x:Uid="IdentifyText" Command="{x:Bind ViewModel.IdentifyMonitorsCommand}" Icon="{ui:FontIcon Glyph=}" Visibility="{x:Bind helpers:VisibilityConverter.BoolToVisibility(ViewModel.ShowIdentifyMonitorsButton), Mode=OneWay}" /> </MenuFlyout> </Button.Flyout> </Button> <Button x:Name="SettingsBtn" x:Uid="SettingsTooltip" Click="OnSettingsClick" Style="{StaticResource FlyoutButtonStyle}"> <AnimatedIcon x:Name="SettingsAnimatedIcon"> <AnimatedIcon.Source> <animatedVisuals:AnimatedSettingsVisualSource /> </AnimatedIcon.Source> <AnimatedIcon.FallbackIconSource> <SymbolIconSource Symbol="Setting" /> </AnimatedIcon.FallbackIconSource> </AnimatedIcon> </Button> </StackPanel> </Grid> </Grid> </Border> </Grid> </winuiex:WindowEx>