<UserControl x:Class="WpfDisplay.Views.QualitySettingsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfDisplay.Views"
xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:conv="clr-namespace:WpfDisplay.Converters"
xmlns:vm="clr-namespace:WpfDisplay.ViewModels"
xmlns:toolkit="http://schemas.xceed.com/wpf/xaml/toolkit"
mc:Ignorable="d"
x:Name="qualitySettingsView"
d:DesignHeight="600" d:DesignWidth="300"
d:DataContext="{d:DesignInstance Type=vm:QualitySettingsViewModel, IsDesignTimeCreatable=False}">
<StackPanel>
<ListBox
HorizontalAlignment="Center"
Style="{StaticResource MaterialDesignToolToggleListBox}" Margin="4"
SelectedIndex="0">
<ListBoxItem>🧭 Exploration</ListBoxItem>
<ListBoxItem IsSelected="{Binding IsFinalRenderingMode}">📸 Final</ListBoxItem>
</ListBox>
<!--"Preview" settings-->
<StackPanel Visibility="{Binding IsFinalRenderingMode, Converter={StaticResource invertBooleanToVisibilityConverter}}">
<TextBlock HorizontalAlignment="Center" Margin="4,16">
Preview resolution: <Run Text="{Binding PreviewResolutionText, Mode=OneWay}" />
</TextBlock>
</StackPanel>
<!--"Final" settings-->
<StackPanel Visibility="{Binding IsFinalRenderingMode, Converter={StaticResource betterBooleanToVisibilityConverter}}" Margin="0,8">
<Grid HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<toolkit:IntegerUpDown
Value="{Binding ImageWidth, UpdateSourceTrigger=PropertyChanged }"
Minimum="1" Increment="100"
ToolTip="Image width"
Grid.Column="0" MinWidth="70" Margin="4" UpdateValueOnEnterKey="True"/>
<ToggleButton
IsChecked="{Binding IsResolutionLinked}"
Width="20" Height="20" FontSize="12" Foreground="Gray"
Style="{StaticResource MaterialDesignFlatToggleButton}"
ToolTip="Lock aspect ratio"
Grid.Column="1" Margin="4">🔗</ToggleButton>
<toolkit:IntegerUpDown
Value="{Binding ImageHeight, UpdateSourceTrigger=PropertyChanged}"
Minimum="1" Increment="100"
ToolTip="Image height"
Grid.Column="2" MinWidth="70" Margin="4" UpdateValueOnEnterKey="True"/>
<Menu Grid.Column="3" Height="22">
<MenuItem ItemsSource="{Binding ResolutionPresets}"
Header="⋮" ToolTip="Resolution presets"
HorizontalAlignment="Right" Padding="8 4" FontSize="12" Height="22">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem" BasedOn="{StaticResource MaterialDesignMenuItem}">
<Setter Property="Header" Value="{Binding Key}"/>
<Setter Property="Command" Value="{Binding DataContext.ApplyResolutionPresetCommand, ElementName=qualitySettingsView}"/>
<Setter Property="CommandParameter" Value="{Binding Value}"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</Menu>
</Grid>
<local:ValueSlider Value="{Binding Renderer.MaxFilterRadius}" SliderSettings="{Binding MaxFilterRadiusSlider}" Label="{Binding MaxFilterRadiusLabel}" Margin="4"/>
</StackPanel>
<Separator Style="{StaticResource MaterialDesignSeparator}"/>
<local:ValueSlider Value="{Binding Ifs.TargetIterationLevel}" SliderSettings="{Binding TargetIterationLevelSlider}" Margin="4"/>
<Separator Style="{StaticResource MaterialDesignSeparator}"/>
<StackPanel Margin="4">
<CheckBox IsChecked="{Binding EnableDE}" ToolTip="Using density estimation.">Noise reduction</CheckBox>
<StackPanel Visibility="{Binding EnableDE, Converter={StaticResource betterBooleanToVisibilityConverter}}" Background="{DynamicResource MaterialDesignDarkBackground}" Margin="8">
<local:ValueSlider Value="{Binding Renderer.DEMaxRadius}" SliderSettings="{Binding DEMaxRadiusSlider}"/>
<local:ValueSlider Value="{Binding Renderer.DEPower}" SliderSettings="{Binding DEPowerSlider}"/>
<local:ValueSlider Value="{Binding Renderer.DEThreshold}" SliderSettings="{Binding DEThresholdSlider}"/>
</StackPanel>
<local:ValueSlider Value="{Binding Syntropy}" SliderSettings="{Binding SyntropySlider}"/>
<local:ValueSlider Value="{Binding Ifs.Warmup}" SliderSettings="{Binding WarmupSlider}"/>
</StackPanel>
</StackPanel>
</UserControl>