mirror of
https://github.com/BililiveRecorder/BililiveRecorder.git
synced 2024-12-27 12:35:35 +08:00
d6c642de6e
close #298
145 lines
12 KiB
XML
145 lines
12 KiB
XML
<ui:Page
|
|
x:Class="BililiveRecorder.WPF.Pages.SettingsPage"
|
|
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:ui="http://schemas.modernwpf.com/2019"
|
|
xmlns:l="https://github.com/XAMLMarkupExtensions/WPFLocalizationExtension"
|
|
l:LocalizeDictionary.DesignCulture=""
|
|
l:ResxLocalizationProvider.DefaultAssembly="BililiveRecorder.WPF"
|
|
l:ResxLocalizationProvider.DefaultDictionary="Strings"
|
|
xmlns:c="clr-namespace:BililiveRecorder.WPF.Controls"
|
|
xmlns:m="clr-namespace:BililiveRecorder.WPF.Models"
|
|
xmlns:t="clr-namespace:BililiveRecorder.Core.Templating;assembly=BililiveRecorder.Core"
|
|
xmlns:local="clr-namespace:BililiveRecorder.WPF.Pages"
|
|
xmlns:config="clr-namespace:BililiveRecorder.Core.Config;assembly=BililiveRecorder.Core"
|
|
xmlns:configv3="clr-namespace:BililiveRecorder.Core.Config.V3;assembly=BililiveRecorder.Core"
|
|
mc:Ignorable="d"
|
|
d:DesignHeight="1500" d:DesignWidth="500"
|
|
DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:RootPage},Path=DataContext.Recorder.Config.Global}"
|
|
Title="SettingsPage">
|
|
<ui:Page.Resources>
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
</ui:Page.Resources>
|
|
<ScrollViewer d:DataContext="{d:DesignInstance Type=configv3:GlobalConfig}">
|
|
<ui:SimpleStackPanel Orientation="Vertical" Spacing="5" Margin="20">
|
|
<TextBlock Text="{l:Loc Settings_SettingsPage_Title}" Style="{StaticResource TitleTextBlockStyle}" FontFamily="Microsoft Yahei" Margin="0,10"/>
|
|
<GroupBox Header="{l:Loc Settings_Danmaku_Title}">
|
|
<StackPanel>
|
|
<ui:ToggleSwitch IsOn="{Binding RecordDanmaku}" Name="RecordDanmakuCheckbox" OnContent="{l:Loc Settings_Danmaku_ToggleSwitch_Enabled}" OffContent="{l:Loc Settings_Danmaku_ToggleSwitch_Enabled}"/>
|
|
<StackPanel Margin="0,7,0,0" Visibility="{Binding ElementName=RecordDanmakuCheckbox,Path=IsOn,Converter={StaticResource BooleanToVisibilityCollapsedConverter}}">
|
|
<ui:ToggleSwitch IsEnabled="{Binding RecordDanmaku}" IsOn="{Binding RecordDanmakuSuperChat}"
|
|
OnContent="{l:Loc Settings_Danmaku_ToggleSwitch_SuperChat}" OffContent="{l:Loc Settings_Danmaku_ToggleSwitch_SuperChat}"/>
|
|
<ui:ToggleSwitch IsEnabled="{Binding RecordDanmaku}" IsOn="{Binding RecordDanmakuGuard}"
|
|
OnContent="{l:Loc Settings_Danmaku_ToggleSwitch_Guard}" OffContent="{l:Loc Settings_Danmaku_ToggleSwitch_Guard}"/>
|
|
<ui:ToggleSwitch IsEnabled="{Binding RecordDanmaku}" IsOn="{Binding RecordDanmakuGift}"
|
|
OnContent="{l:Loc Settings_Danmaku_ToggleSwitch_Gift}" OffContent="{l:Loc Settings_Danmaku_ToggleSwitch_Gift}"/>
|
|
<ui:ToggleSwitch IsEnabled="{Binding RecordDanmaku}" IsOn="{Binding RecordDanmakuRaw}"
|
|
OnContent="{l:Loc Settings_Danmaku_ToggleSwitch_Raw}" OffContent="{l:Loc Settings_Danmaku_ToggleSwitch_Raw}"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
<GroupBox Header="{l:Loc Settings_RecordMode_Title}">
|
|
<StackPanel>
|
|
<RadioButton GroupName="RecordMode" Content="{l:Loc Settings_RecordMode_RadioButton_Standard}"
|
|
IsChecked="{Binding Path=RecordMode, Converter={StaticResource EnumToBooleanConverter},
|
|
ConverterParameter={x:Static config:RecordMode.Standard}}" />
|
|
<RadioButton GroupName="RecordMode" Content="{l:Loc Settings_RecordMode_RadioButton_RawData}"
|
|
IsChecked="{Binding Path=RecordMode, Converter={StaticResource EnumToBooleanConverter},
|
|
ConverterParameter={x:Static config:RecordMode.RawData}}" />
|
|
</StackPanel>
|
|
</GroupBox>
|
|
<GroupBox Header="标准模式录制修复设置">
|
|
<StackPanel>
|
|
<ui:ToggleSwitch IsOn="{Binding FlvProcessorSplitOnScriptTag}" OnContent="检测到可能缺少数据时分段" OffContent="检测到可能缺少数据时分段"/>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
<GroupBox Header="{l:Loc Settings_Splitting_Title}">
|
|
<StackPanel>
|
|
<RadioButton GroupName="Splitting" Name="CutDisabledRadioButton" Content="{l:Loc Settings_Splitting_RadioButton_Disabled}"
|
|
IsChecked="{Binding Path=CuttingMode, Converter={StaticResource EnumToBooleanConverter},
|
|
ConverterParameter={x:Static config:CuttingMode.Disabled}}" />
|
|
<RadioButton GroupName="Splitting" Name="CutBySizeRadioButton" Content="{l:Loc Settings_Splitting_RadioButton_BySize}"
|
|
IsChecked="{Binding Path=CuttingMode, Converter={StaticResource EnumToBooleanConverter},
|
|
ConverterParameter={x:Static config:CuttingMode.BySize}}" />
|
|
<RadioButton GroupName="Splitting" Name="CutByTimeRadioButton" Content="{l:Loc Settings_Splitting_RadioButton_ByTime}"
|
|
IsChecked="{Binding Path=CuttingMode, Converter={StaticResource EnumToBooleanConverter},
|
|
ConverterParameter={x:Static config:CuttingMode.ByTime}}" />
|
|
|
|
<StackPanel Orientation="Horizontal" Margin="0,5,0,0"
|
|
Visibility="{Binding ElementName=CutDisabledRadioButton,Path=IsChecked,Converter={StaticResource InvertBooleanToVisibilityCollapsedConverter}}">
|
|
<TextBlock Text="{l:Loc Settings_Splitting_TextBox_Left}"/>
|
|
<TextBox Margin="5,0" Width="100" Text="{Binding CuttingNumber,Delay=500}" ui:TextBoxHelper.IsDeleteButtonVisible="False"/>
|
|
<TextBlock Text="{l:Loc Settings_Splitting_TextBox_SizeUnit}" Visibility="{Binding ElementName=CutBySizeRadioButton,Path=IsChecked,Converter={StaticResource BooleanToVisibilityCollapsedConverter}}"/>
|
|
<TextBlock Text="{l:Loc Settings_Splitting_TextBox_TimeUnit}" Visibility="{Binding ElementName=CutByTimeRadioButton,Path=IsChecked,Converter={StaticResource BooleanToVisibilityCollapsedConverter}}"/>
|
|
<TextBlock Text="{l:Loc Settings_Splitting_TextBox_Right}"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
<GroupBox Header="直播封面">
|
|
<ui:ToggleSwitch IsOn="{Binding SaveStreamCover}" OnContent="录制时同时保存直播封面" OffContent="录制时同时保存直播封面"/>
|
|
</GroupBox>
|
|
<GroupBox Header="{l:Loc Settings_FileName_Title}">
|
|
<StackPanel MaxWidth="500" HorizontalAlignment="Left">
|
|
<StackPanel Orientation="Horizontal" Margin="0,0,0,10">
|
|
<StackPanel.ToolTip>
|
|
<TextBlock FontSize="13" Text="{l:Loc Settings_FileName_Description_ToolTip}"
|
|
l:ResxLocalizationProvider.DefaultDictionary="Strings"/>
|
|
</StackPanel.ToolTip>
|
|
<ui:PathIcon Margin="2,0" VerticalAlignment="Center" Height="15" Style="{StaticResource PathIconDataInformationOutline}"/>
|
|
<TextBlock VerticalAlignment="Center" Text="{l:Loc Settings_FileName_Description_Text}"/>
|
|
<Button Margin="5,0,0,0" Command="{x:Static m:Commands.OpenLink}" CommandParameter="https://rec.danmuji.org/docs/basic/settings/#%E5%BD%95%E5%88%B6%E6%96%87%E4%BB%B6%E5%90%8D%E6%A0%BC%E5%BC%8F">
|
|
<ui:PathIcon Margin="2,0" VerticalAlignment="Center" Height="15" Style="{StaticResource PathIconDataOpenInNew}"/>
|
|
</Button>
|
|
</StackPanel>
|
|
<c:SettingWithDefault IsSettingNotUsingDefault="{Binding HasFileNameRecordTemplate}" Header="{l:Loc Settings_FileName_Record}">
|
|
<TextBox Text="{Binding FileNameRecordTemplate,Delay=500}" ui:TextBoxHelper.IsDeleteButtonVisible="False"/>
|
|
</c:SettingWithDefault>
|
|
<Button Margin="0,10,0,5" Content="测试" Click="TestFileNameTemplate_Button_Click"/>
|
|
<Border x:Name="FileNameTestResultArea" d:DataContext="{d:DesignInstance Type=t:FileNameTemplateOutput}" Visibility="Collapsed"
|
|
BorderBrush="{DynamicResource SystemControlBackgroundBaseMediumBrush}" CornerRadius="5" BorderThickness="1" Padding="5">
|
|
<StackPanel Orientation="Vertical" Margin="0">
|
|
<TextBlock Text="测试结果:"/>
|
|
<TextBlock Text="{Binding ErrorMessage,Mode=OneWay}" Margin="0,5"/>
|
|
<TextBox IsReadOnly="True" Text="{Binding RelativePath,Mode=OneWay}"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
<GroupBox Header="开播通知">
|
|
<ui:ToggleSwitch IsOn="{Binding WpfNotifyStreamStart}" OnContent="直播间开播时弹出系统通知" OffContent="直播间开播时弹出系统通知"/>
|
|
</GroupBox>
|
|
<GroupBox Header="录制画质">
|
|
<StackPanel MaxWidth="400" HorizontalAlignment="Left">
|
|
<Button Margin="5,0,0,0" Command="{x:Static m:Commands.OpenLink}" CommandParameter="https://rec.danmuji.org/docs/basic/settings/#%E7%9B%B4%E6%92%AD%E7%94%BB%E8%B4%A8">
|
|
<StackPanel Orientation="Horizontal">
|
|
<ui:PathIcon Width="15" Height="15" Style="{StaticResource PathIconDataInformationOutline}"/>
|
|
<ui:PathIcon Margin="5,0,0,0" Width="15" Height="15" Style="{StaticResource PathIconDataOpenInNew}"/>
|
|
</StackPanel>
|
|
</Button>
|
|
<TextBlock Text="逗号分割的录制画质ID"/>
|
|
<c:SettingWithDefault IsSettingNotUsingDefault="{Binding HasRecordingQuality}">
|
|
<TextBox Text="{Binding RecordingQuality,UpdateSourceTrigger=PropertyChanged,Delay=1000}"
|
|
ui:TextBoxHelper.IsDeleteButtonVisible="False" Width="220" HorizontalAlignment="Left"/>
|
|
</c:SettingWithDefault>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
<GroupBox Header="{l:Loc Settings_Webhook_Title}">
|
|
<StackPanel MaxWidth="400" HorizontalAlignment="Left">
|
|
<TextBlock Text="{l:Loc Settings_Webhook_Address}" Margin="0,0,0,10"/>
|
|
<TextBlock Text="Webhook v2"/>
|
|
<TextBox AcceptsReturn="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible"
|
|
Text="{Binding WebHookUrlsV2,UpdateSourceTrigger=PropertyChanged,Delay=1000}" ui:TextBoxHelper.IsDeleteButtonVisible="False"/>
|
|
<TextBlock Text="Webhook v1"/>
|
|
<TextBox AcceptsReturn="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible"
|
|
Text="{Binding WebHookUrls,UpdateSourceTrigger=PropertyChanged,Delay=1000}" ui:TextBoxHelper.IsDeleteButtonVisible="False"/>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
</ui:SimpleStackPanel>
|
|
</ScrollViewer>
|
|
</ui:Page>
|