Improved UI for routing rules

This commit is contained in:
2dust
2024-10-03 13:56:06 +08:00
parent 5fbeb4b0fb
commit 3971318ffb
14 changed files with 204 additions and 102 deletions

View File

@@ -33,36 +33,56 @@
Grid.Column="0"
VerticalAlignment="Center"
Classes="Margin8"
Text="outboundTag" />
<ComboBox
x:Name="cmbOutboundTag"
Text="{x:Static resx:ResUI.LvRemarks}" />
<TextBox
x:Name="txtRemarks"
Grid.Row="0"
Grid.Column="1"
Width="200"
Classes="Margin8"
MaxDropDownHeight="1000" />
<TextBlock
HorizontalAlignment="Left"
Classes="Margin8" />
<ToggleSwitch
x:Name="togEnabled"
Grid.Row="0"
Grid.Column="2"
HorizontalAlignment="Left"
Classes="Margin8"
Text="{x:Static resx:ResUI.TbRuleMatchingTips}" />
Classes="Margin8" />
<TextBlock
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Center"
Classes="Margin8"
Text="outboundTag" />
<ComboBox
x:Name="cmbOutboundTag"
Grid.Row="1"
Grid.Column="1"
Width="200"
Classes="Margin8"
MaxDropDownHeight="1000" />
<TextBlock
Grid.Row="1"
Grid.Column="2"
HorizontalAlignment="Left"
Classes="Margin8"
Text="{x:Static resx:ResUI.TbRuleMatchingTips}" />
<TextBlock
Grid.Row="2"
Grid.Column="0"
VerticalAlignment="Center"
Classes="Margin8"
Text="port" />
<TextBox
x:Name="txtPort"
Grid.Row="1"
Grid.Row="2"
Grid.Column="1"
Width="200"
HorizontalAlignment="Left"
Classes="Margin8" />
<TextBlock
Grid.Row="1"
Grid.Row="2"
Grid.Column="2"
VerticalAlignment="Center"
Classes="Margin8">
@@ -72,14 +92,14 @@
</TextBlock>
<TextBlock
Grid.Row="2"
Grid.Row="3"
Grid.Column="0"
VerticalAlignment="Center"
Classes="Margin8"
Text="protocol" />
<ListBox
x:Name="clbProtocol"
Grid.Row="2"
Grid.Row="3"
Grid.Column="1"
HorizontalAlignment="Left"
Classes="Margin8"
@@ -87,46 +107,32 @@
Theme="{DynamicResource PureCardRadioGroupListBox}" />
<TextBlock
Grid.Row="3"
Grid.Row="4"
Grid.Column="0"
VerticalAlignment="Center"
Classes="Margin8"
Text="inboundTag" />
<ListBox
x:Name="clbInboundTag"
Grid.Row="3"
Grid.Row="4"
Grid.Column="1"
Classes="Margin8"
SelectionMode="Multiple"
Theme="{DynamicResource PureCardRadioGroupListBox}" />
<TextBlock
Grid.Row="4"
Grid.Row="5"
Grid.Column="0"
VerticalAlignment="Center"
Classes="Margin8"
Text="network" />
<ComboBox
x:Name="cmbNetwork"
Grid.Row="4"
Grid.Row="5"
Grid.Column="1"
Width="200"
Classes="Margin8"
MaxDropDownHeight="1000" />
<TextBlock
Grid.Row="5"
Grid.Column="0"
VerticalAlignment="Center"
Classes="Margin8"
Text="enabled" />
<ToggleSwitch
x:Name="togEnabled"
Grid.Row="5"
Grid.Column="1"
HorizontalAlignment="Left"
Classes="Margin8" />
<TextBlock
Grid.Row="5"
Grid.Column="2"
@@ -169,25 +175,40 @@
<ColumnDefinition Width="10" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<HeaderedContentControl Grid.Column="0" Header="{x:Static resx:ResUI.TbRoutingRuleDomain}">
<HeaderedContentControl
Grid.Column="0"
BorderBrush="Gray"
BorderThickness="1"
Header="{x:Static resx:ResUI.TbRoutingRuleDomain}">
<TextBox
Name="txtDomain"
VerticalAlignment="Stretch"
Classes="TextArea"
MinLines="10"
TextWrapping="Wrap" />
</HeaderedContentControl>
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
<HeaderedContentControl Grid.Column="2" Header="{x:Static resx:ResUI.TbRoutingRuleIP}">
<HeaderedContentControl
Grid.Column="2"
BorderBrush="Gray"
BorderThickness="1"
Header="{x:Static resx:ResUI.TbRoutingRuleIP}">
<TextBox
Name="txtIP"
VerticalAlignment="Stretch"
Classes="TextArea"
MinLines="10"
TextWrapping="Wrap" />
</HeaderedContentControl>
<GridSplitter Grid.Column="3" HorizontalAlignment="Stretch" />
<HeaderedContentControl Grid.Column="4" Header="{x:Static resx:ResUI.TbRoutingRuleProcess}">
<HeaderedContentControl
Grid.Column="4"
BorderBrush="Gray"
BorderThickness="1"
Header="{x:Static resx:ResUI.TbRoutingRuleProcess}">
<TextBox
Name="txtProcess"
VerticalAlignment="Stretch"
Classes="TextArea"
MinLines="10"
TextWrapping="Wrap" />

View File

@@ -53,6 +53,7 @@ namespace v2rayN.Desktop.Views
this.WhenActivated(disposables =>
{
this.Bind(ViewModel, vm => vm.SelectedSource.remarks, v => v.txtRemarks.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSource.outboundTag, v => v.cmbOutboundTag.SelectedValue).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSource.port, v => v.txtPort.Text).DisposeWith(disposables);
this.Bind(ViewModel, vm => vm.SelectedSource.network, v => v.cmbNetwork.SelectedValue).DisposeWith(disposables);

View File

@@ -206,20 +206,28 @@
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.Columns>
<DataGridCheckBoxColumn
Width="60"
Binding="{Binding enabled}"
Header="" />
<DataGridTextColumn
Width="110"
Width="150"
Binding="{Binding remarks}"
Header="{x:Static resx:ResUI.LvRemarks}" />
<DataGridTextColumn
Width="120"
Binding="{Binding outboundTag}"
Header="outboundTag" />
<DataGridTextColumn
Width="80"
Width="100"
Binding="{Binding port}"
Header="port" />
<DataGridTextColumn
Width="80"
Width="100"
Binding="{Binding protocols}"
Header="protocol" />
<DataGridTextColumn
Width="110"
Width="120"
Binding="{Binding inboundTags}"
Header="inboundTag" />
<DataGridTextColumn
@@ -227,17 +235,13 @@
Binding="{Binding network}"
Header="network" />
<DataGridTextColumn
Width="190"
Width="200"
Binding="{Binding domains}"
Header="domain" />
<DataGridTextColumn
Width="190"
Width="200"
Binding="{Binding ips}"
Header="ip" />
<DataGridTextColumn
Width="80"
Binding="{Binding enabled}"
Header="enabled" />
</DataGrid.Columns>
</DataGrid>
</TabItem>

View File

@@ -50,7 +50,7 @@
Width="150"
Binding="{Binding url}"
Header="{x:Static resx:ResUI.LvUrl}" />
<DataGridTextColumn
<DataGridCheckBoxColumn
Width="100"
Binding="{Binding enabled}"
Header="{x:Static resx:ResUI.LvEnabled}" />