feat(设置): 新增高级设置和随机点名设置页面

refactor: 将高级和随机点名设置从主窗口迁移到独立页面
style: 优化墨迹识别页面的高精度直线拉直开关样式
fix: 修复URI处理中未刷新配置列表的问题
This commit is contained in:
PrefacedCorg
2026-04-25 20:26:56 +08:00
parent 77dff81217
commit f3ef2f7aec
15 changed files with 1339 additions and 1096 deletions
+1 -304
View File
@@ -26,7 +26,7 @@
Closing="Window_Closing"
Closed="Window_Closed"
PreviewKeyDown="Main_Grid_PreviewKeyDown"
Height="11080" Width="1440"
Height="6000" Width="1440"
FontFamily="Microsoft YaHei UI"
MouseWheel="Window_MouseWheel"
Foreground="{DynamicResource FloatBarForeground}"
@@ -1478,138 +1478,6 @@
</ikw:SimpleStackPanel>
</GroupBox>
<GroupBox Name="GroupBoxAdvanced">
<GroupBox.Header>
<TextBlock Margin="0,12,0,0" Text="{i18n:I18n Key=Advanced_Title}" FontWeight="Bold" Foreground="#fafafa"
FontSize="26" />
</GroupBox.Header>
<ikw:SimpleStackPanel Spacing="6">
<TextBlock Text="{i18n:I18n Key=Advanced_TouchMultiplierHint}"
Foreground="#a1a1aa" TextWrapping="Wrap" Width="460" />
<controls:LabeledToggleSwitch x:Name="ToggleSwitchIsSpecialScreen" Label="{i18n:I18n Key=Advanced_SpecialScreenMode}" IsOn="True" Toggled="ToggleSwitchIsSpecialScreen_OnToggled"/>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchDisableHardwareAcceleration" Label="{i18n:I18n Key=Canvas_DisableHardwareAcceleration}" Hint="{i18n:I18n Key=Canvas_DisableHardwareAccelerationHint}" IsOn="False" Toggled="ToggleSwitchDisableHardwareAcceleration_Toggled"/>
<StackPanel Orientation="Vertical">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Advanced_TouchMultiplier}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<StackPanel Orientation="Horizontal"
Visibility="{Binding Visibility,ElementName=TouchMultiplierSlider}">
<Slider x:Name="TouchMultiplierSlider"
Minimum="0" Maximum="2"
Width="340"
IsSnapToTickEnabled="True"
TickFrequency="0.01" TickPlacement="None"
ValueChanged="TouchMultiplierSlider_ValueChanged"
Visibility="Visible" />
<TextBlock
Text="{Binding Value, ElementName=TouchMultiplierSlider, Mode=OneWay}"
VerticalAlignment="Bottom" Margin="10,0,0,8"
FontSize="14" Width="30" HorizontalAlignment="Center"
Visibility="{Binding Path=Visibility, ElementName=TouchMultiplierSlider, Mode=OneWay}" />
</StackPanel>
</StackPanel>
<ikw:SimpleStackPanel Spacing="8" Margin="0,4,0,4"
Visibility="{Binding Visibility,ElementName=TouchMultiplierSlider}">
<TextBlock FontSize="14" Text="{i18n:I18n Key=Advanced_TouchMultiplierCalibrateHint}"
TextWrapping="Wrap" MaxWidth="420" />
<TextBlock Text="{i18n:I18n Key=Advanced_TouchMultiplierValueHint}" Foreground="#a1a1aa"
TextWrapping="Wrap" MaxWidth="420" />
<Border Margin="0,0,20,0" CornerRadius="4" Height="48" Background="Transparent"
BorderBrush="#a1a1aa" BorderThickness="2"
TouchDown="BorderCalculateMultiplier_TouchDown" />
<TextBlock Name="TextBlockShowCalculatedMultiplier" FontSize="14" />
</ikw:SimpleStackPanel>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0" Stroke="#3f3f46"
StrokeThickness="1" Margin="0,4,0,4" />
<controls:LabeledToggleSwitch x:Name="ToggleSwitchEraserBindTouchMultiplier" Label="{i18n:I18n Key=Advanced_EraserBindTouchMultiplier}" Hint="{i18n:I18n Key=Advanced_EraserBindTouchHint}" IsOn="True" Toggled="ToggleSwitchEraserBindTouchMultiplier_Toggled"/>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0" Stroke="#3f3f46"
StrokeThickness="1" Margin="0,4,0,4" />
<StackPanel Orientation="Horizontal"
Visibility="{Binding Visibility,ElementName=TouchMultiplierSlider}">
<Slider x:Name="NibModeBoundsWidthSlider" Minimum="1" Maximum="50" Width="340"
ui:ControlHelper.Header="{i18n:I18n Key=Advanced_NibModeBoundsWidthHeader}"
FontSize="14" IsSnapToTickEnabled="True" TickFrequency="1" Value="5"
TickPlacement="None"
ValueChanged="NibModeBoundsWidthSlider_ValueChanged" />
<TextBlock
Text="{Binding Value, ElementName=NibModeBoundsWidthSlider, Mode=OneWay}"
VerticalAlignment="Bottom" Margin="10,0,0,8" FontSize="14" Width="30" />
</StackPanel>
<StackPanel Orientation="Horizontal"
Visibility="{Binding Visibility,ElementName=TouchMultiplierSlider}">
<Slider x:Name="FingerModeBoundsWidthSlider" Minimum="1" Maximum="50"
Width="340"
ui:ControlHelper.Header="{i18n:I18n Key=Advanced_FingerModeBoundsWidthHeader}"
FontSize="14" IsSnapToTickEnabled="True" TickFrequency="1" Value="20"
TickPlacement="None"
ValueChanged="FingerModeBoundsWidthSlider_ValueChanged" />
<TextBlock
Text="{Binding Value, ElementName=FingerModeBoundsWidthSlider, Mode=OneWay}"
VerticalAlignment="Bottom" Margin="10,0,0,8" FontSize="14" Width="30" />
</StackPanel>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchIsQuadIR" Label="{i18n:I18n Key=Advanced_QuadIRMode}" IsOn="True" Toggled="ToggleSwitchIsQuadIR_Toggled"/>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0" Stroke="#3f3f46"
StrokeThickness="1" Margin="0,4,0,4" />
<controls:LabeledToggleSwitch x:Name="ToggleSwitchIsLogEnabled" Label="{i18n:I18n Key=Advanced_Logging}" IsOn="True" Toggled="ToggleSwitchIsLogEnabled_Toggled"/>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchIsSaveLogByDate" Label="{i18n:I18n Key=Advanced_LogByDate}" Hint="{i18n:I18n Key=Advanced_LogRotateHint}" IsOn="True" Toggled="ToggleSwitchIsSaveLogByDate_Toggled"/>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchIsSecondConfimeWhenShutdownApp" Label="{i18n:I18n Key=Advanced_ConfirmExit}" IsOn="True" Toggled="ToggleSwitchIsSecondConfimeWhenShutdownApp_Toggled"/>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0" Stroke="#3f3f46"
StrokeThickness="1" Margin="0,4,0,4" />
<!-- 添加备份相关按钮 -->
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0" Stroke="#3f3f46"
StrokeThickness="1" Margin="0,4,0,4" />
<TextBlock Text="{i18n:I18n Key=Backup_Title}" FontWeight="Bold" Foreground="#fafafa"
FontSize="16" Margin="0,5,0,5" />
<TextBlock TextWrapping="Wrap" Foreground="#a1a1aa"
Text="{i18n:I18n Key=Backup_Desc}" />
<controls:LabeledToggleSwitch x:Name="ToggleSwitchIsAutoBackupBeforeUpdate" Label="{i18n:I18n Key=Backup_AutoBeforeUpdate}" IsOn="True" Toggled="ToggleSwitchIsAutoBackupBeforeUpdate_Toggled"/>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchIsAutoBackupEnabled" Label="{i18n:I18n Key=Backup_AutoPeriodic}" IsOn="True" Toggled="ToggleSwitchIsAutoBackupEnabled_Toggled"/>
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,5,0,0">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Backup_Interval}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<ComboBox x:Name="ComboBoxAutoBackupInterval" Margin="0,0,16,0"
SelectionChanged="ComboBoxAutoBackupInterval_SelectionChanged">
<ComboBoxItem Content="{i18n:I18n Key=Backup_Interval_1Day}" Tag="1" />
<ComboBoxItem Content="{i18n:I18n Key=Backup_Interval_3Days}" Tag="3" />
<ComboBoxItem Content="{i18n:I18n Key=Backup_Interval_7Days}" Tag="7" IsSelected="True" />
<ComboBoxItem Content="{i18n:I18n Key=Backup_Interval_14Days}" Tag="14" />
<ComboBoxItem Content="{i18n:I18n Key=Backup_Interval_30Days}" Tag="30" />
</ComboBox>
<TextBlock Foreground="#a1a1aa" Text="{i18n:I18n Key=Backup_Interval_DefaultHint}" VerticalAlignment="Center" FontSize="12"
TextWrapping="Wrap" Width="180" />
</ikw:SimpleStackPanel>
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,10,0,0">
<Button x:Name="BtnManualBackup" Content="{i18n:I18n Key=Backup_Manual}" Click="BtnManualBackup_Click"
Background="#2563eb" Foreground="White" Padding="12,6" Margin="0,0,12,0" />
<Button x:Name="BtnRestoreBackup" Content="{i18n:I18n Key=Backup_Restore}" Click="BtnRestoreBackup_Click"
Background="#2563eb" Foreground="White" Padding="12,6" />
</ikw:SimpleStackPanel>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0" Stroke="#3f3f46"
StrokeThickness="1" Margin="0,8,0,4" />
<TextBlock Text="{i18n:I18n Key=ConfigProfiles_Title}" FontWeight="Bold" Foreground="#fafafa"
FontSize="16" Margin="0,5,0,5" />
<TextBlock TextWrapping="Wrap" Foreground="#a1a1aa"
Text="{i18n:I18n Key=ConfigProfiles_Desc}" />
<ikw:SimpleStackPanel Spacing="8" Margin="0,6,0,0">
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=ConfigProfiles_Label}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,8,0" />
<ComboBox x:Name="ComboBoxConfigProfile" MinWidth="180"
SelectionChanged="ComboBoxConfigProfile_SelectionChanged" />
</ikw:SimpleStackPanel>
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Button x:Name="BtnDeleteConfigProfile" Content="{i18n:I18n Key=ConfigProfiles_Delete}" Click="BtnDeleteConfigProfile_Click"
Padding="10,6" Margin="0,0,8,0" />
<Button x:Name="BtnSaveAsConfigProfile" Content="{i18n:I18n Key=ConfigProfiles_SaveAs}" Click="BtnSaveAsConfigProfile_Click"
Padding="10,6" />
</ikw:SimpleStackPanel>
</ikw:SimpleStackPanel>
</ikw:SimpleStackPanel>
</GroupBox>
<GroupBox Name="GroupBoxAutomation">
<GroupBox.Header>
<TextBlock Margin="0,12,0,0" Text="{i18n:I18n Key=Automation_Title}" FontWeight="Bold" Foreground="#fafafa"
@@ -2350,177 +2218,6 @@
<controls:LabeledToggleSwitch x:Name="ToggleSwitchAutoFoldWhenExitWhiteboard" Label="{i18n:I18n Key=FoldMode_AutoFoldAfterWhiteboard}" Hint="{i18n:I18n Key=FoldMode_AutoFoldAfterWhiteboardHint}" IsOn="False" Toggled="ToggleSwitchAutoFoldWhenExitWhiteboard_Toggled"/>
</ikw:SimpleStackPanel>
</GroupBox>
<GroupBox Name="GroupBoxRandWindow">
<GroupBox.Header>
<TextBlock Margin="0,12,0,0" Text="{i18n:I18n Key=Random_Title}" FontWeight="Bold" Foreground="#fafafa"
FontSize="26" />
</GroupBox.Header>
<ikw:SimpleStackPanel Spacing="12">
<controls:LabeledToggleSwitch x:Name="ToggleSwitchDisplayRandWindowNamesInputBtn" Label="{i18n:I18n Key=Random_ShowEditNamesButton}" IsOn="True" Toggled="ToggleSwitchDisplayRandWindowNamesInputBtn_OnToggled"/>
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Random_BackgroundSettingsTitle}"
FontSize="16" FontWeight="Bold" Margin="0,10,0,5" />
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,5,0,0">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Random_BackgroundSelectLabel}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<ComboBox Name="ComboBoxPickNameBackground"
SelectedIndex="0" Width="180"
SelectionChanged="ComboBoxPickNameBackground_SelectionChanged">
<ComboBoxItem Content="{i18n:I18n Key=Random_Background_Default}" />
<!-- 自定义背景会在代码中动态添加 -->
</ComboBox>
</ikw:SimpleStackPanel>
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,5,0,0">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Random_CustomBackgroundLabel}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<Button Name="ButtonAddCustomBackground" Content="{i18n:I18n Key=Random_CustomBackground_Upload}"
Click="ButtonAddCustomBackground_Click" Padding="10,3"/>
<Button Name="ButtonManageBackgrounds" Content="{i18n:I18n Key=Random_CustomBackground_Manage}"
Click="ButtonManageBackgrounds_Click" Padding="10,3" Margin="5,0,0,0"/>
</ikw:SimpleStackPanel>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchShowRandomAndSingleDraw" Label="{i18n:I18n Key=Random_EnableButtons}" IsOn="True" Toggled="ToggleSwitchShowRandomAndSingleDraw_Toggled"/>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchEnableQuickDraw" Label="{i18n:I18n Key=Random_EnableQuickButton}" IsOn="True" Toggled="ToggleSwitchEnableQuickDraw_Toggled"/>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchExternalCaller" Label="{i18n:I18n Key=Random_UseExternal}" IsOn="False" Toggled="ToggleSwitchExternalCaller_Toggled"/>
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,8,0,0">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Random_ExternalTypeLabel}"
VerticalAlignment="Center" FontSize="14" Margin="0,0,16,0" />
<ComboBox Name="ComboBoxExternalCallerType" Height="30"
IsEditable="False" IsReadOnly="True" SelectedIndex="0"
SelectionChanged="ComboBoxExternalCallerType_SelectionChanged">
<ComboBoxItem Content="{i18n:I18n Key=Random_ExternalType_ClassIsland}" />
<ComboBoxItem Content="{i18n:I18n Key=Random_ExternalType_SecRandom}" />
<ComboBoxItem Content="{i18n:I18n Key=Random_ExternalType_NamePicker}" />
</ComboBox>
</ikw:SimpleStackPanel>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0"
Stroke="#3f3f46" StrokeThickness="1" Margin="0,4,0,4" />
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Random_OnceCloseDelay}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<Slider x:Name="RandWindowOnceCloseLatencySlider" Minimum="0.5"
Maximum="8" Width="168"
FontSize="20" IsSnapToTickEnabled="True" Value="2.5"
TickFrequency="0.1"
ValueChanged="RandWindowOnceCloseLatencySlider_ValueChanged"
TickPlacement="None" AutoToolTipPlacement="None" />
<StackPanel Orientation="Horizontal" VerticalAlignment="Center"
Margin="12,0,16,0">
<TextBlock FontSize="14" FontFamily="Consolas"
Text="{Binding ElementName=RandWindowOnceCloseLatencySlider, Path=Value}" />
<TextBlock FontSize="14" FontFamily="Consolas">s</TextBlock>
</StackPanel>
</ikw:SimpleStackPanel>
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Random_OnceMaxStudents}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<Slider x:Name="RandWindowOnceMaxStudentsSlider" Minimum="0"
Maximum="20" Width="168"
ValueChanged="RandWindowOnceMaxStudentsSlider_ValueChanged"
FontSize="20" IsSnapToTickEnabled="True" Value="10" TickFrequency="1"
TickPlacement="None" AutoToolTipPlacement="None" />
<TextBlock VerticalAlignment="Center" Margin="12,0,16,0" FontSize="14"
FontFamily="Consolas"
Text="{Binding ElementName=RandWindowOnceMaxStudentsSlider, Path=Value, Converter={StaticResource IntNumberToString}}" />
</ikw:SimpleStackPanel>
<!-- 新点名UI设置 -->
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0"
Stroke="#3f3f46" StrokeThickness="1" Margin="0,4,0,4" />
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Random_NewUI_Title}"
FontSize="16" FontWeight="Bold" Margin="0,10,0,5" />
<controls:LabeledToggleSwitch x:Name="ToggleSwitchUseNewRollCallUI" Label="{i18n:I18n Key=Random_NewUI_Enable}" IsOn="True" Toggled="ToggleSwitchUseNewRollCallUI_Toggled"/>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchEnableMLAvoidance" Label="{i18n:I18n Key=Random_ML_AvoidRepeat}" IsOn="True" Toggled="ToggleSwitchEnableMLAvoidance_Toggled"/>
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Random_ML_HistoryCount}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,12,0" Width="190"
Style="{StaticResource AutoFitSettingsOptionLabel14}" />
<Slider x:Name="MLAvoidanceHistorySlider" Minimum="5"
Maximum="50" Width="180"
ValueChanged="MLAvoidanceHistorySlider_ValueChanged"
FontSize="20" IsSnapToTickEnabled="True" Value="50" TickFrequency="5"
TickPlacement="None" AutoToolTipPlacement="None" />
<TextBlock VerticalAlignment="Center" Margin="8,0,0,0" FontSize="14" Width="48"
FontFamily="Consolas"
Text="{Binding ElementName=MLAvoidanceHistorySlider, Path=Value, Converter={StaticResource IntNumberToString}}" />
</ikw:SimpleStackPanel>
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Random_ML_Weight}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,12,0" Width="190"
Style="{StaticResource AutoFitSettingsOptionLabel14}" />
<Slider x:Name="MLAvoidanceWeightSlider" Minimum="0.1"
Maximum="1.0" Width="180"
ValueChanged="MLAvoidanceWeightSlider_ValueChanged"
FontSize="20" IsSnapToTickEnabled="True" Value="1.0" TickFrequency="0.1"
TickPlacement="None" AutoToolTipPlacement="None" />
<TextBlock VerticalAlignment="Center" Margin="8,0,0,0" FontSize="14" Width="48"
FontFamily="Consolas"
Text="{Binding ElementName=MLAvoidanceWeightSlider, Path=Value, StringFormat={}{0:P0}}" />
</ikw:SimpleStackPanel>
<TextBlock Text="{i18n:I18n Key=Random_ML_Hint}"
TextWrapping="Wrap" Foreground="#a1a1aa" Margin="0,5,0,0" />
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0"
Stroke="#3f3f46" StrokeThickness="1" Margin="0,4,0,4" />
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Timer_Title}"
FontSize="16" FontWeight="Bold" Margin="0,10,0,5" />
<controls:LabeledToggleSwitch x:Name="ToggleSwitchUseLegacyTimerUI" Label="{i18n:I18n Key=Timer_UseLegacyButtons}" IsOn="False" Toggled="ToggleSwitchUseLegacyTimerUI_Toggled"/>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchUseNewStyleUI" Label="{i18n:I18n Key=Timer_NewUI}" IsOn="False" Toggled="ToggleSwitchUseNewStyleUI_Toggled"/>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchEnableOvertimeCountUp" Label="{i18n:I18n Key=Timer_EnableCountUp}" IsOn="False" Toggled="ToggleSwitchEnableOvertimeCountUp_Toggled"/>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchEnableOvertimeRedText" Label="{i18n:I18n Key=Timer_OvertimeHighlight}" IsOn="True" Toggled="ToggleSwitchEnableOvertimeRedText_Toggled"/>
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Timer_Volume}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<Slider x:Name="TimerVolumeSlider" Minimum="0"
Maximum="1" Width="168"
ValueChanged="TimerVolumeSlider_ValueChanged"
FontSize="20" IsSnapToTickEnabled="True" Value="1" TickFrequency="0.1"
TickPlacement="None" AutoToolTipPlacement="None" />
<TextBlock VerticalAlignment="Center" Margin="12,0,16,0" FontSize="14"
FontFamily="Consolas"
Text="{Binding ElementName=TimerVolumeSlider, Path=Value, StringFormat={}{0:P0}}" />
</ikw:SimpleStackPanel>
<ikw:SimpleStackPanel HorizontalAlignment="Left" Margin="0,5,0,0" Width="420">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Timer_CustomSoundLabel}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,0,4" Style="{StaticResource AutoFitSettingsOptionLabel14}" />
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Button Name="ButtonSelectCustomTimerSound" Content="{i18n:I18n Key=Timer_SelectFile}"
Click="ButtonSelectCustomTimerSound_Click" Padding="10,3" Width="130" Margin="0,0,6,0"/>
<Button Name="ButtonResetTimerSound" Content="{i18n:I18n Key=Timer_Reset}"
Click="ButtonResetTimerSound_Click" Padding="10,3" Width="90"/>
</WrapPanel>
</ikw:SimpleStackPanel>
<controls:LabeledToggleSwitch x:Name="ToggleSwitchEnableProgressiveReminder" Label="{i18n:I18n Key=Timer_Progressive}" IsOn="False" Toggled="ToggleSwitchEnableProgressiveReminder_Toggled"/>
<ikw:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,5,0,0">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Timer_ProgressiveVolume}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<Slider x:Name="ProgressiveReminderVolumeSlider" Minimum="0"
Maximum="1" Width="168"
ValueChanged="ProgressiveReminderVolumeSlider_ValueChanged"
FontSize="20" IsSnapToTickEnabled="True" Value="1" TickFrequency="0.1"
TickPlacement="None" AutoToolTipPlacement="None" />
<TextBlock VerticalAlignment="Center" Margin="12,0,16,0" FontSize="14"
FontFamily="Consolas"
Text="{Binding ElementName=ProgressiveReminderVolumeSlider, Path=Value, StringFormat={}{0:P0}}" />
</ikw:SimpleStackPanel>
<ikw:SimpleStackPanel HorizontalAlignment="Left" Margin="0,5,0,0" Width="420">
<TextBlock Foreground="#fafafa" Text="{i18n:I18n Key=Timer_ProgressiveCustomLabel}" VerticalAlignment="Center"
FontSize="14" Margin="0,0,0,4" Style="{StaticResource AutoFitSettingsOptionLabel14}" />
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Button Name="ButtonSelectCustomProgressiveReminderSound" Content="{i18n:I18n Key=Timer_ProgressiveSelectFile}"
Click="ButtonSelectCustomProgressiveReminderSound_Click" Padding="10,3" Width="130" Margin="0,0,6,0"/>
<Button Name="ButtonResetProgressiveReminderSound" Content="{i18n:I18n Key=Timer_ProgressiveReset}"
Click="ButtonResetProgressiveReminderSound_Click" Padding="10,3" Width="90"/>
</WrapPanel>
</ikw:SimpleStackPanel>
</ikw:SimpleStackPanel>
</GroupBox>
</StackPanel>
</ui:ScrollViewerEx>