mirror of https://github.com/2dust/v2rayN
Add DialogHost fro Desktop
parent
3971318ffb
commit
2bb5f6afc4
|
@ -9,6 +9,7 @@
|
||||||
<StyleInclude Source="Styles/GlobalStyles.axaml" />
|
<StyleInclude Source="Styles/GlobalStyles.axaml" />
|
||||||
<StyleInclude Source="avares://Semi.Avalonia/Themes/Index.axaml" />
|
<StyleInclude Source="avares://Semi.Avalonia/Themes/Index.axaml" />
|
||||||
<StyleInclude Source="avares://Semi.Avalonia.DataGrid/Index.axaml" />
|
<StyleInclude Source="avares://Semi.Avalonia.DataGrid/Index.axaml" />
|
||||||
|
<StyleInclude Source="avares://DialogHost.Avalonia/Styles.xaml" />
|
||||||
</Application.Styles>
|
</Application.Styles>
|
||||||
|
|
||||||
<TrayIcon.Icons>
|
<TrayIcon.Icons>
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:dialogHost="clr-namespace:DialogHostAvalonia;assembly=DialogHost.Avalonia"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:resx="clr-namespace:ServiceLib.Resx;assembly=ServiceLib"
|
xmlns:resx="clr-namespace:ServiceLib.Resx;assembly=ServiceLib"
|
||||||
xmlns:vms="clr-namespace:ServiceLib.ViewModels;assembly=ServiceLib"
|
xmlns:vms="clr-namespace:ServiceLib.ViewModels;assembly=ServiceLib"
|
||||||
|
@ -15,270 +16,273 @@
|
||||||
ShowInTaskbar="True"
|
ShowInTaskbar="True"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
<dialogHost:DialogHost
|
||||||
|
Background="Gray"
|
||||||
|
CloseOnClickAway="True"
|
||||||
|
DisableOpeningAnimation="True">
|
||||||
|
<DockPanel>
|
||||||
|
<DockPanel Classes="Margin8" DockPanel.Dock="Top">
|
||||||
|
<ContentControl x:Name="conTheme" DockPanel.Dock="Right" />
|
||||||
|
<Menu Margin="0,1">
|
||||||
|
<MenuItem Padding="8,0">
|
||||||
|
<MenuItem.Header>
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<TextBlock Text="{x:Static resx:ResUI.menuServers}" />
|
||||||
|
</StackPanel>
|
||||||
|
</MenuItem.Header>
|
||||||
|
<MenuItem x:Name="menuAddServerViaClipboard" Header="{x:Static resx:ResUI.menuAddServerViaClipboard}" />
|
||||||
|
<MenuItem
|
||||||
|
x:Name="menuAddServerViaScan"
|
||||||
|
Header="{x:Static resx:ResUI.menuAddServerViaScan}"
|
||||||
|
IsVisible="False" />
|
||||||
|
<MenuItem x:Name="menuAddCustomServer" Header="{x:Static resx:ResUI.menuAddCustomServer}" />
|
||||||
|
<Separator />
|
||||||
|
<MenuItem x:Name="menuAddVmessServer" Header="{x:Static resx:ResUI.menuAddVmessServer}" />
|
||||||
|
<MenuItem x:Name="menuAddVlessServer" Header="{x:Static resx:ResUI.menuAddVlessServer}" />
|
||||||
|
<MenuItem x:Name="menuAddShadowsocksServer" Header="{x:Static resx:ResUI.menuAddShadowsocksServer}" />
|
||||||
|
<MenuItem x:Name="menuAddSocksServer" Header="{x:Static resx:ResUI.menuAddSocksServer}" />
|
||||||
|
<MenuItem x:Name="menuAddHttpServer" Header="{x:Static resx:ResUI.menuAddHttpServer}" />
|
||||||
|
<MenuItem x:Name="menuAddTrojanServer" Header="{x:Static resx:ResUI.menuAddTrojanServer}" />
|
||||||
|
<Separator />
|
||||||
|
<MenuItem x:Name="menuAddHysteria2Server" Header="{x:Static resx:ResUI.menuAddHysteria2Server}" />
|
||||||
|
<MenuItem x:Name="menuAddTuicServer" Header="{x:Static resx:ResUI.menuAddTuicServer}" />
|
||||||
|
<MenuItem x:Name="menuAddWireguardServer" Header="{x:Static resx:ResUI.menuAddWireguardServer}" />
|
||||||
|
</MenuItem>
|
||||||
|
|
||||||
<DockPanel>
|
<MenuItem Padding="8,0">
|
||||||
<DockPanel Classes="Margin8" DockPanel.Dock="Top">
|
<MenuItem.Header>
|
||||||
<ContentControl x:Name="conTheme" DockPanel.Dock="Right" />
|
<StackPanel Orientation="Horizontal">
|
||||||
<Menu Margin="0,1">
|
<TextBlock Text="{x:Static resx:ResUI.menuSubscription}" />
|
||||||
<MenuItem Padding="8,0">
|
</StackPanel>
|
||||||
<MenuItem.Header>
|
</MenuItem.Header>
|
||||||
<StackPanel Orientation="Horizontal">
|
<MenuItem x:Name="menuSubSetting" Header="{x:Static resx:ResUI.menuSubSetting}" />
|
||||||
<TextBlock Text="{x:Static resx:ResUI.menuServers}" />
|
<Separator />
|
||||||
</StackPanel>
|
<MenuItem x:Name="menuSubUpdate" Header="{x:Static resx:ResUI.menuSubUpdate}" />
|
||||||
</MenuItem.Header>
|
<MenuItem x:Name="menuSubUpdateViaProxy" Header="{x:Static resx:ResUI.menuSubUpdateViaProxy}" />
|
||||||
<MenuItem x:Name="menuAddServerViaClipboard" Header="{x:Static resx:ResUI.menuAddServerViaClipboard}" />
|
<MenuItem x:Name="menuSubGroupUpdate" Header="{x:Static resx:ResUI.menuSubGroupUpdate}" />
|
||||||
<MenuItem
|
<MenuItem x:Name="menuSubGroupUpdateViaProxy" Header="{x:Static resx:ResUI.menuSubGroupUpdateViaProxy}" />
|
||||||
x:Name="menuAddServerViaScan"
|
</MenuItem>
|
||||||
Header="{x:Static resx:ResUI.menuAddServerViaScan}"
|
|
||||||
IsVisible="False" />
|
|
||||||
<MenuItem x:Name="menuAddCustomServer" Header="{x:Static resx:ResUI.menuAddCustomServer}" />
|
|
||||||
<Separator />
|
|
||||||
<MenuItem x:Name="menuAddVmessServer" Header="{x:Static resx:ResUI.menuAddVmessServer}" />
|
|
||||||
<MenuItem x:Name="menuAddVlessServer" Header="{x:Static resx:ResUI.menuAddVlessServer}" />
|
|
||||||
<MenuItem x:Name="menuAddShadowsocksServer" Header="{x:Static resx:ResUI.menuAddShadowsocksServer}" />
|
|
||||||
<MenuItem x:Name="menuAddSocksServer" Header="{x:Static resx:ResUI.menuAddSocksServer}" />
|
|
||||||
<MenuItem x:Name="menuAddHttpServer" Header="{x:Static resx:ResUI.menuAddHttpServer}" />
|
|
||||||
<MenuItem x:Name="menuAddTrojanServer" Header="{x:Static resx:ResUI.menuAddTrojanServer}" />
|
|
||||||
<Separator />
|
|
||||||
<MenuItem x:Name="menuAddHysteria2Server" Header="{x:Static resx:ResUI.menuAddHysteria2Server}" />
|
|
||||||
<MenuItem x:Name="menuAddTuicServer" Header="{x:Static resx:ResUI.menuAddTuicServer}" />
|
|
||||||
<MenuItem x:Name="menuAddWireguardServer" Header="{x:Static resx:ResUI.menuAddWireguardServer}" />
|
|
||||||
</MenuItem>
|
|
||||||
|
|
||||||
<MenuItem Padding="8,0">
|
<MenuItem Padding="8,0">
|
||||||
<MenuItem.Header>
|
<MenuItem.Header>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Text="{x:Static resx:ResUI.menuSubscription}" />
|
<TextBlock Text="{x:Static resx:ResUI.menuSetting}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</MenuItem.Header>
|
</MenuItem.Header>
|
||||||
<MenuItem x:Name="menuSubSetting" Header="{x:Static resx:ResUI.menuSubSetting}" />
|
<MenuItem x:Name="menuOptionSetting" Header="{x:Static resx:ResUI.menuOptionSetting}" />
|
||||||
<Separator />
|
<MenuItem x:Name="menuRoutingSetting" Header="{x:Static resx:ResUI.menuRoutingSetting}" />
|
||||||
<MenuItem x:Name="menuSubUpdate" Header="{x:Static resx:ResUI.menuSubUpdate}" />
|
<MenuItem x:Name="menuDNSSetting" Header="{x:Static resx:ResUI.menuDNSSetting}" />
|
||||||
<MenuItem x:Name="menuSubUpdateViaProxy" Header="{x:Static resx:ResUI.menuSubUpdateViaProxy}" />
|
<MenuItem x:Name="menuGlobalHotkeySetting" Header="{x:Static resx:ResUI.menuGlobalHotkeySetting}" />
|
||||||
<MenuItem x:Name="menuSubGroupUpdate" Header="{x:Static resx:ResUI.menuSubGroupUpdate}" />
|
<Separator />
|
||||||
<MenuItem x:Name="menuSubGroupUpdateViaProxy" Header="{x:Static resx:ResUI.menuSubGroupUpdateViaProxy}" />
|
<MenuItem x:Name="menuRebootAsAdmin" Header="{x:Static resx:ResUI.menuRebootAsAdmin}" />
|
||||||
</MenuItem>
|
<MenuItem x:Name="menuSettingsSetUWP" Header="{x:Static resx:ResUI.TbSettingsSetUWP}" />
|
||||||
|
<MenuItem x:Name="menuClearServerStatistics" Header="{x:Static resx:ResUI.menuClearServerStatistics}" />
|
||||||
|
<Separator />
|
||||||
|
<MenuItem x:Name="menuOpenTheFileLocation" Header="{x:Static resx:ResUI.menuOpenTheFileLocation}" />
|
||||||
|
</MenuItem>
|
||||||
|
|
||||||
<MenuItem Padding="8,0">
|
<MenuItem x:Name="menuReload" Padding="8,0">
|
||||||
<MenuItem.Header>
|
<MenuItem.Header>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Text="{x:Static resx:ResUI.menuSetting}" />
|
<TextBlock Text="{x:Static resx:ResUI.menuReload}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</MenuItem.Header>
|
</MenuItem.Header>
|
||||||
<MenuItem x:Name="menuOptionSetting" Header="{x:Static resx:ResUI.menuOptionSetting}" />
|
</MenuItem>
|
||||||
<MenuItem x:Name="menuRoutingSetting" Header="{x:Static resx:ResUI.menuRoutingSetting}" />
|
|
||||||
<MenuItem x:Name="menuDNSSetting" Header="{x:Static resx:ResUI.menuDNSSetting}" />
|
|
||||||
<MenuItem x:Name="menuGlobalHotkeySetting" Header="{x:Static resx:ResUI.menuGlobalHotkeySetting}" />
|
|
||||||
<Separator />
|
|
||||||
<MenuItem x:Name="menuRebootAsAdmin" Header="{x:Static resx:ResUI.menuRebootAsAdmin}" />
|
|
||||||
<MenuItem x:Name="menuSettingsSetUWP" Header="{x:Static resx:ResUI.TbSettingsSetUWP}" />
|
|
||||||
<MenuItem x:Name="menuClearServerStatistics" Header="{x:Static resx:ResUI.menuClearServerStatistics}" />
|
|
||||||
<Separator />
|
|
||||||
<MenuItem x:Name="menuOpenTheFileLocation" Header="{x:Static resx:ResUI.menuOpenTheFileLocation}" />
|
|
||||||
</MenuItem>
|
|
||||||
|
|
||||||
<MenuItem x:Name="menuReload" Padding="8,0">
|
<MenuItem Padding="8,0">
|
||||||
<MenuItem.Header>
|
<MenuItem.Header>
|
||||||
<StackPanel Orientation="Horizontal">
|
<ContentControl x:Name="conCheckUpdate" />
|
||||||
<TextBlock Text="{x:Static resx:ResUI.menuReload}" />
|
</MenuItem.Header>
|
||||||
</StackPanel>
|
</MenuItem>
|
||||||
</MenuItem.Header>
|
|
||||||
</MenuItem>
|
|
||||||
|
|
||||||
<MenuItem Padding="8,0">
|
<MenuItem x:Name="menuHelp" Padding="8,0">
|
||||||
<MenuItem.Header>
|
<MenuItem.Header>
|
||||||
<ContentControl x:Name="conCheckUpdate" />
|
<StackPanel Orientation="Horizontal">
|
||||||
</MenuItem.Header>
|
<TextBlock Text="{x:Static resx:ResUI.menuHelp}" />
|
||||||
</MenuItem>
|
</StackPanel>
|
||||||
|
</MenuItem.Header>
|
||||||
|
</MenuItem>
|
||||||
|
|
||||||
<MenuItem x:Name="menuHelp" Padding="8,0">
|
<MenuItem x:Name="menuPromotion" Padding="8,0">
|
||||||
<MenuItem.Header>
|
<MenuItem.Header>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Text="{x:Static resx:ResUI.menuHelp}" />
|
<TextBlock Text="{x:Static resx:ResUI.menuPromotion}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</MenuItem.Header>
|
</MenuItem.Header>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
|
||||||
<MenuItem x:Name="menuPromotion" Padding="8,0">
|
<MenuItem x:Name="menuClose" Padding="8,0">
|
||||||
<MenuItem.Header>
|
<MenuItem.Header>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Text="{x:Static resx:ResUI.menuPromotion}" />
|
<TextBlock Text="{x:Static resx:ResUI.menuClose}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</MenuItem.Header>
|
</MenuItem.Header>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
</Menu>
|
||||||
<MenuItem x:Name="menuClose" Padding="8,0">
|
|
||||||
<MenuItem.Header>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<TextBlock Text="{x:Static resx:ResUI.menuClose}" />
|
|
||||||
</StackPanel>
|
|
||||||
</MenuItem.Header>
|
|
||||||
</MenuItem>
|
|
||||||
</Menu>
|
|
||||||
</DockPanel>
|
|
||||||
|
|
||||||
<StackPanel Height="50" DockPanel.Dock="Bottom">
|
|
||||||
<DockPanel>
|
|
||||||
<StackPanel
|
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
DockPanel.Dock="Right">
|
|
||||||
<TextBlock x:Name="txtSpeedProxyDisplay" />
|
|
||||||
<Border Margin="2" />
|
|
||||||
<TextBlock x:Name="txtSpeedDirectDisplay" />
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<StackPanel
|
|
||||||
Width="240"
|
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
DockPanel.Dock="Left">
|
|
||||||
<TextBlock x:Name="txtInboundDisplay" />
|
|
||||||
<Border Margin="2" />
|
|
||||||
<TextBlock x:Name="txtInboundLanDisplay" />
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<StackPanel
|
|
||||||
x:Name="spEnableTun"
|
|
||||||
Width="100"
|
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
DockPanel.Dock="Left">
|
|
||||||
<TextBlock Text="{x:Static resx:ResUI.TbEnableTunAs}" />
|
|
||||||
<ToggleSwitch
|
|
||||||
x:Name="togEnableTun"
|
|
||||||
HorizontalAlignment="Left"
|
|
||||||
Classes="Margin8"
|
|
||||||
Theme="{StaticResource SimpleToggleSwitch}" />
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<StackPanel
|
|
||||||
Margin="8,0"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
DockPanel.Dock="Left"
|
|
||||||
Orientation="Horizontal">
|
|
||||||
<ComboBox
|
|
||||||
x:Name="cmbSystemProxy"
|
|
||||||
Width="120"
|
|
||||||
Margin="8,0"
|
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuSystemproxy}">
|
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxyClear}" />
|
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxySet}" />
|
|
||||||
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxyNothing}" />
|
|
||||||
</ComboBox>
|
|
||||||
|
|
||||||
<ComboBox
|
|
||||||
x:Name="cmbRoutings2"
|
|
||||||
Width="150"
|
|
||||||
Margin="8,0"
|
|
||||||
DisplayMemberBinding="{Binding remarks}"
|
|
||||||
ItemsSource="{Binding RoutingItems}"
|
|
||||||
ToolTip.Tip="{x:Static resx:ResUI.menuRouting}" />
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<StackPanel Margin="8,0" VerticalAlignment="Center">
|
|
||||||
<TextBlock x:Name="txtRunningServerDisplay" Tapped="TxtRunningServerDisplay_Tapped" />
|
|
||||||
<Border Margin="2" />
|
|
||||||
<TextBlock x:Name="txtRunningInfoDisplay" Tapped="TxtRunningServerDisplay_Tapped" />
|
|
||||||
</StackPanel>
|
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<Grid>
|
<StackPanel Height="50" DockPanel.Dock="Bottom">
|
||||||
<Grid x:Name="gridMain" IsVisible="False">
|
<DockPanel>
|
||||||
<Grid.ColumnDefinitions>
|
<StackPanel
|
||||||
<ColumnDefinition Width="1*" />
|
Margin="8,0"
|
||||||
<ColumnDefinition Width="10" />
|
VerticalAlignment="Center"
|
||||||
<ColumnDefinition Width="1*" />
|
DockPanel.Dock="Right">
|
||||||
</Grid.ColumnDefinitions>
|
<TextBlock x:Name="txtSpeedProxyDisplay" />
|
||||||
<ContentControl x:Name="tabProfiles" Grid.Column="0" />
|
<Border Margin="2" />
|
||||||
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
|
<TextBlock x:Name="txtSpeedDirectDisplay" />
|
||||||
<TabControl
|
</StackPanel>
|
||||||
x:Name="tabMain"
|
|
||||||
Grid.Column="2"
|
|
||||||
HorizontalContentAlignment="Left">
|
|
||||||
<TabItem x:Name="tabMsgView" Header="{x:Static resx:ResUI.MsgInformationTitle}" />
|
|
||||||
<TabItem x:Name="tabClashProxies" Header="{x:Static resx:ResUI.TbProxies}" />
|
|
||||||
<TabItem x:Name="tabClashConnections" Header="{x:Static resx:ResUI.TbConnections}" />
|
|
||||||
</TabControl>
|
|
||||||
</Grid>
|
|
||||||
<Grid x:Name="gridMain1" IsVisible="False">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="1*" />
|
|
||||||
<RowDefinition Height="10" />
|
|
||||||
<RowDefinition Height="1*" />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<ContentControl x:Name="tabProfiles1" Grid.Row="0" />
|
|
||||||
<GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" />
|
|
||||||
<TabControl
|
|
||||||
x:Name="tabMain1"
|
|
||||||
Grid.Row="2"
|
|
||||||
TabStripPlacement="Left">
|
|
||||||
<TabItem x:Name="tabMsgView1">
|
|
||||||
<TabItem.Header>
|
|
||||||
<StackPanel>
|
|
||||||
|
|
||||||
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.MsgInformationTitle}" />
|
<StackPanel
|
||||||
</StackPanel>
|
Width="240"
|
||||||
</TabItem.Header>
|
Margin="8,0"
|
||||||
</TabItem>
|
VerticalAlignment="Center"
|
||||||
<TabItem x:Name="tabClashProxies1">
|
DockPanel.Dock="Left">
|
||||||
<TabItem.Header>
|
<TextBlock x:Name="txtInboundDisplay" />
|
||||||
<StackPanel>
|
<Border Margin="2" />
|
||||||
|
<TextBlock x:Name="txtInboundLanDisplay" />
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.TbProxies}" />
|
<StackPanel
|
||||||
</StackPanel>
|
x:Name="spEnableTun"
|
||||||
</TabItem.Header>
|
Width="100"
|
||||||
</TabItem>
|
Margin="8,0"
|
||||||
<TabItem x:Name="tabClashConnections1">
|
VerticalAlignment="Center"
|
||||||
<TabItem.Header>
|
DockPanel.Dock="Left">
|
||||||
<StackPanel>
|
<TextBlock Text="{x:Static resx:ResUI.TbEnableTunAs}" />
|
||||||
|
<ToggleSwitch
|
||||||
|
x:Name="togEnableTun"
|
||||||
|
HorizontalAlignment="Left"
|
||||||
|
Classes="Margin8"
|
||||||
|
Theme="{StaticResource SimpleToggleSwitch}" />
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.TbConnections}" />
|
<StackPanel
|
||||||
</StackPanel>
|
Margin="8,0"
|
||||||
</TabItem.Header>
|
VerticalAlignment="Center"
|
||||||
</TabItem>
|
DockPanel.Dock="Left"
|
||||||
</TabControl>
|
Orientation="Horizontal">
|
||||||
</Grid>
|
<ComboBox
|
||||||
<Grid x:Name="gridMain2" IsVisible="False">
|
x:Name="cmbSystemProxy"
|
||||||
<TabControl x:Name="tabMain2" TabStripPlacement="Left">
|
Width="120"
|
||||||
<TabItem x:Name="tabProfiles2">
|
Margin="8,0"
|
||||||
<TabItem.Header>
|
ToolTip.Tip="{x:Static resx:ResUI.menuSystemproxy}">
|
||||||
<StackPanel>
|
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxyClear}" />
|
||||||
|
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxySet}" />
|
||||||
|
<ComboBoxItem Content="{x:Static resx:ResUI.menuSystemProxyNothing}" />
|
||||||
|
</ComboBox>
|
||||||
|
|
||||||
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.menuServers}" />
|
<ComboBox
|
||||||
</StackPanel>
|
x:Name="cmbRoutings2"
|
||||||
</TabItem.Header>
|
Width="150"
|
||||||
</TabItem>
|
Margin="8,0"
|
||||||
<TabItem x:Name="tabMsgView2">
|
DisplayMemberBinding="{Binding remarks}"
|
||||||
<TabItem.Header>
|
ItemsSource="{Binding RoutingItems}"
|
||||||
<StackPanel>
|
ToolTip.Tip="{x:Static resx:ResUI.menuRouting}" />
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.MsgInformationTitle}" />
|
<StackPanel Margin="8,0" VerticalAlignment="Center">
|
||||||
</StackPanel>
|
<TextBlock x:Name="txtRunningServerDisplay" Tapped="TxtRunningServerDisplay_Tapped" />
|
||||||
</TabItem.Header>
|
<Border Margin="2" />
|
||||||
</TabItem>
|
<TextBlock x:Name="txtRunningInfoDisplay" Tapped="TxtRunningServerDisplay_Tapped" />
|
||||||
<TabItem x:Name="tabClashProxies2">
|
</StackPanel>
|
||||||
<TabItem.Header>
|
</DockPanel>
|
||||||
<StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.TbProxies}" />
|
<Grid>
|
||||||
</StackPanel>
|
<Grid x:Name="gridMain" IsVisible="False">
|
||||||
</TabItem.Header>
|
<Grid.ColumnDefinitions>
|
||||||
</TabItem>
|
<ColumnDefinition Width="1*" />
|
||||||
<TabItem x:Name="tabClashConnections2">
|
<ColumnDefinition Width="10" />
|
||||||
<TabItem.Header>
|
<ColumnDefinition Width="1*" />
|
||||||
<StackPanel>
|
</Grid.ColumnDefinitions>
|
||||||
|
<ContentControl x:Name="tabProfiles" Grid.Column="0" />
|
||||||
|
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
|
||||||
|
<TabControl
|
||||||
|
x:Name="tabMain"
|
||||||
|
Grid.Column="2"
|
||||||
|
HorizontalContentAlignment="Left">
|
||||||
|
<TabItem x:Name="tabMsgView" Header="{x:Static resx:ResUI.MsgInformationTitle}" />
|
||||||
|
<TabItem x:Name="tabClashProxies" Header="{x:Static resx:ResUI.TbProxies}" />
|
||||||
|
<TabItem x:Name="tabClashConnections" Header="{x:Static resx:ResUI.TbConnections}" />
|
||||||
|
</TabControl>
|
||||||
|
</Grid>
|
||||||
|
<Grid x:Name="gridMain1" IsVisible="False">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="1*" />
|
||||||
|
<RowDefinition Height="10" />
|
||||||
|
<RowDefinition Height="1*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<ContentControl x:Name="tabProfiles1" Grid.Row="0" />
|
||||||
|
<GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" />
|
||||||
|
<TabControl
|
||||||
|
x:Name="tabMain1"
|
||||||
|
Grid.Row="2"
|
||||||
|
TabStripPlacement="Left">
|
||||||
|
<TabItem x:Name="tabMsgView1">
|
||||||
|
<TabItem.Header>
|
||||||
|
<StackPanel>
|
||||||
|
|
||||||
|
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.MsgInformationTitle}" />
|
||||||
|
</StackPanel>
|
||||||
|
</TabItem.Header>
|
||||||
|
</TabItem>
|
||||||
|
<TabItem x:Name="tabClashProxies1">
|
||||||
|
<TabItem.Header>
|
||||||
|
<StackPanel>
|
||||||
|
|
||||||
|
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.TbProxies}" />
|
||||||
|
</StackPanel>
|
||||||
|
</TabItem.Header>
|
||||||
|
</TabItem>
|
||||||
|
<TabItem x:Name="tabClashConnections1">
|
||||||
|
<TabItem.Header>
|
||||||
|
<StackPanel>
|
||||||
|
|
||||||
|
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.TbConnections}" />
|
||||||
|
</StackPanel>
|
||||||
|
</TabItem.Header>
|
||||||
|
</TabItem>
|
||||||
|
</TabControl>
|
||||||
|
</Grid>
|
||||||
|
<Grid x:Name="gridMain2" IsVisible="False">
|
||||||
|
<TabControl x:Name="tabMain2" TabStripPlacement="Left">
|
||||||
|
<TabItem x:Name="tabProfiles2">
|
||||||
|
<TabItem.Header>
|
||||||
|
<StackPanel>
|
||||||
|
|
||||||
|
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.menuServers}" />
|
||||||
|
</StackPanel>
|
||||||
|
</TabItem.Header>
|
||||||
|
</TabItem>
|
||||||
|
<TabItem x:Name="tabMsgView2">
|
||||||
|
<TabItem.Header>
|
||||||
|
<StackPanel>
|
||||||
|
|
||||||
|
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.MsgInformationTitle}" />
|
||||||
|
</StackPanel>
|
||||||
|
</TabItem.Header>
|
||||||
|
</TabItem>
|
||||||
|
<TabItem x:Name="tabClashProxies2">
|
||||||
|
<TabItem.Header>
|
||||||
|
<StackPanel>
|
||||||
|
|
||||||
|
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.TbProxies}" />
|
||||||
|
</StackPanel>
|
||||||
|
</TabItem.Header>
|
||||||
|
</TabItem>
|
||||||
|
<TabItem x:Name="tabClashConnections2">
|
||||||
|
<TabItem.Header>
|
||||||
|
<StackPanel>
|
||||||
|
|
||||||
|
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.TbConnections}" />
|
||||||
|
</StackPanel>
|
||||||
|
</TabItem.Header>
|
||||||
|
</TabItem>
|
||||||
|
</TabControl>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
<TextBlock HorizontalAlignment="Center" Text="{x:Static resx:ResUI.TbConnections}" />
|
|
||||||
</StackPanel>
|
|
||||||
</TabItem.Header>
|
|
||||||
</TabItem>
|
|
||||||
</TabControl>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
</Grid>
|
</DockPanel>
|
||||||
|
</dialogHost:DialogHost>
|
||||||
</DockPanel>
|
|
||||||
|
|
||||||
</Window>
|
</Window>
|
|
@ -3,6 +3,7 @@ using Avalonia.Input;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Avalonia.ReactiveUI;
|
using Avalonia.ReactiveUI;
|
||||||
using Avalonia.Threading;
|
using Avalonia.Threading;
|
||||||
|
using DialogHostAvalonia;
|
||||||
using MsBox.Avalonia.Enums;
|
using MsBox.Avalonia.Enums;
|
||||||
using ReactiveUI;
|
using ReactiveUI;
|
||||||
using Splat;
|
using Splat;
|
||||||
|
@ -88,7 +89,7 @@ namespace v2rayN.Desktop.Views
|
||||||
|
|
||||||
RestoreUI();
|
RestoreUI();
|
||||||
ViewModel?.RefreshServers();
|
ViewModel?.RefreshServers();
|
||||||
}
|
}
|
||||||
|
|
||||||
//#region Event
|
//#region Event
|
||||||
|
|
||||||
|
@ -170,8 +171,9 @@ namespace v2rayN.Desktop.Views
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var dialog = new QrcodeView(url);
|
var dialog = new QrcodeView(url);
|
||||||
await dialog.ShowDialog(_window);
|
await DialogHost.Show(dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void lstProfiles_SelectionChanged(object? sender, SelectionChangedEventArgs e)
|
private void lstProfiles_SelectionChanged(object? sender, SelectionChangedEventArgs e)
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
<Window
|
<UserControl
|
||||||
x:Class="v2rayN.Desktop.Views.QrcodeView"
|
x:Class="v2rayN.Desktop.Views.QrcodeView"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:resx="clr-namespace:ServiceLib.Resx;assembly=ServiceLib"
|
xmlns:resx="clr-namespace:ServiceLib.Resx;assembly=ServiceLib"
|
||||||
Title=""
|
|
||||||
Width="400"
|
|
||||||
Height="480"
|
|
||||||
d:DesignHeight="480"
|
d:DesignHeight="480"
|
||||||
d:DesignWidth="400"
|
d:DesignWidth="400"
|
||||||
ExtendClientAreaChromeHints="NoChrome"
|
|
||||||
ExtendClientAreaToDecorationsHint="True"
|
|
||||||
ShowInTaskbar="False"
|
|
||||||
WindowStartupLocation="CenterOwner"
|
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<Grid Margin="30">
|
<Grid Margin="30">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="60" />
|
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
<Image
|
<Image
|
||||||
|
@ -37,12 +29,6 @@
|
||||||
IsReadOnly="True"
|
IsReadOnly="True"
|
||||||
MaxLines="1" />
|
MaxLines="1" />
|
||||||
|
|
||||||
<Button
|
|
||||||
x:Name="btnCancel"
|
|
||||||
Grid.Row="2"
|
|
||||||
Width="100"
|
|
||||||
HorizontalAlignment="Right"
|
|
||||||
Classes="Margin8"
|
|
||||||
Content="{x:Static resx:ResUI.TbConfirm}" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Window>
|
</UserControl>
|
|
@ -3,7 +3,7 @@ using Avalonia.Media.Imaging;
|
||||||
|
|
||||||
namespace v2rayN.Desktop.Views
|
namespace v2rayN.Desktop.Views
|
||||||
{
|
{
|
||||||
public partial class QrcodeView : Window
|
public partial class QrcodeView : UserControl
|
||||||
{
|
{
|
||||||
public QrcodeView(string? url)
|
public QrcodeView(string? url)
|
||||||
{
|
{
|
||||||
|
@ -12,7 +12,7 @@ namespace v2rayN.Desktop.Views
|
||||||
txtContent.Text = url;
|
txtContent.Text = url;
|
||||||
imgQrcode.Source = GetQRCode(url);
|
imgQrcode.Source = GetQRCode(url);
|
||||||
|
|
||||||
btnCancel.Click += (s, e) => this.Close();
|
// btnCancel.Click += (s, e) => this.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Bitmap? GetQRCode(string? url)
|
private Bitmap? GetQRCode(string? url)
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:dialogHost="clr-namespace:DialogHostAvalonia;assembly=DialogHost.Avalonia"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:resx="clr-namespace:ServiceLib.Resx;assembly=ServiceLib"
|
xmlns:resx="clr-namespace:ServiceLib.Resx;assembly=ServiceLib"
|
||||||
xmlns:vms="clr-namespace:ServiceLib.ViewModels;assembly=ServiceLib"
|
xmlns:vms="clr-namespace:ServiceLib.ViewModels;assembly=ServiceLib"
|
||||||
|
@ -15,58 +16,64 @@
|
||||||
ShowInTaskbar="False"
|
ShowInTaskbar="False"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<DockPanel Classes="Margin8">
|
<dialogHost:DialogHost
|
||||||
<StackPanel
|
Background="Gray"
|
||||||
Classes="Margin8"
|
CloseOnClickAway="True"
|
||||||
DockPanel.Dock="Top"
|
DisableOpeningAnimation="True"
|
||||||
Orientation="Horizontal">
|
Identifier="dialogHostSub">
|
||||||
<Menu>
|
<DockPanel Classes="Margin8">
|
||||||
<MenuItem x:Name="menuSubAdd" Header="{x:Static resx:ResUI.menuSubAdd}" />
|
<StackPanel
|
||||||
<MenuItem x:Name="menuSubDelete" Header="{x:Static resx:ResUI.menuSubDelete}" />
|
Classes="Margin8"
|
||||||
<MenuItem x:Name="menuSubEdit" Header="{x:Static resx:ResUI.menuSubEdit}" />
|
DockPanel.Dock="Top"
|
||||||
<MenuItem x:Name="menuSubShare" Header="{x:Static resx:ResUI.menuSubShare}" />
|
Orientation="Horizontal">
|
||||||
<MenuItem x:Name="menuClose" Header="{x:Static resx:ResUI.menuClose}" />
|
<Menu>
|
||||||
</Menu>
|
<MenuItem x:Name="menuSubAdd" Header="{x:Static resx:ResUI.menuSubAdd}" />
|
||||||
</StackPanel>
|
<MenuItem x:Name="menuSubDelete" Header="{x:Static resx:ResUI.menuSubDelete}" />
|
||||||
|
<MenuItem x:Name="menuSubEdit" Header="{x:Static resx:ResUI.menuSubEdit}" />
|
||||||
|
<MenuItem x:Name="menuSubShare" Header="{x:Static resx:ResUI.menuSubShare}" />
|
||||||
|
<MenuItem x:Name="menuClose" Header="{x:Static resx:ResUI.menuClose}" />
|
||||||
|
</Menu>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
<DataGrid
|
<DataGrid
|
||||||
x:Name="lstSubscription"
|
x:Name="lstSubscription"
|
||||||
AutoGenerateColumns="False"
|
AutoGenerateColumns="False"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
CanUserResizeColumns="True"
|
CanUserResizeColumns="True"
|
||||||
GridLinesVisibility="All"
|
GridLinesVisibility="All"
|
||||||
HeadersVisibility="Column"
|
HeadersVisibility="Column"
|
||||||
IsReadOnly="True"
|
IsReadOnly="True"
|
||||||
ItemsSource="{Binding SubItems}">
|
ItemsSource="{Binding SubItems}">
|
||||||
<DataGrid.KeyBindings>
|
<DataGrid.KeyBindings>
|
||||||
<KeyBinding Command="{Binding SubDeleteCmd}" Gesture="Delete" />
|
<KeyBinding Command="{Binding SubDeleteCmd}" Gesture="Delete" />
|
||||||
</DataGrid.KeyBindings>
|
</DataGrid.KeyBindings>
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn
|
<DataGridTextColumn
|
||||||
Width="120"
|
Width="120"
|
||||||
Binding="{Binding remarks}"
|
Binding="{Binding remarks}"
|
||||||
Header="{x:Static resx:ResUI.LvRemarks}" />
|
Header="{x:Static resx:ResUI.LvRemarks}" />
|
||||||
<DataGridTextColumn
|
<DataGridTextColumn
|
||||||
Width="150"
|
Width="150"
|
||||||
Binding="{Binding url}"
|
Binding="{Binding url}"
|
||||||
Header="{x:Static resx:ResUI.LvUrl}" />
|
Header="{x:Static resx:ResUI.LvUrl}" />
|
||||||
<DataGridCheckBoxColumn
|
<DataGridCheckBoxColumn
|
||||||
Width="100"
|
Width="100"
|
||||||
Binding="{Binding enabled}"
|
Binding="{Binding enabled}"
|
||||||
Header="{x:Static resx:ResUI.LvEnabled}" />
|
Header="{x:Static resx:ResUI.LvEnabled}" />
|
||||||
<DataGridTextColumn
|
<DataGridTextColumn
|
||||||
Width="150"
|
Width="150"
|
||||||
Binding="{Binding autoUpdateInterval}"
|
Binding="{Binding autoUpdateInterval}"
|
||||||
Header="{x:Static resx:ResUI.LvAutoUpdateInterval}" />
|
Header="{x:Static resx:ResUI.LvAutoUpdateInterval}" />
|
||||||
<DataGridTextColumn
|
<DataGridTextColumn
|
||||||
Width="150"
|
Width="150"
|
||||||
Binding="{Binding userAgent}"
|
Binding="{Binding userAgent}"
|
||||||
Header="{x:Static resx:ResUI.LvUserAgent}" />
|
Header="{x:Static resx:ResUI.LvUserAgent}" />
|
||||||
<DataGridTextColumn
|
<DataGridTextColumn
|
||||||
Width="80"
|
Width="80"
|
||||||
Binding="{Binding sort}"
|
Binding="{Binding sort}"
|
||||||
Header="{x:Static resx:ResUI.LvSort}" />
|
Header="{x:Static resx:ResUI.LvSort}" />
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
|
</dialogHost:DialogHost>
|
||||||
</Window>
|
</Window>
|
|
@ -1,6 +1,7 @@
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Avalonia.ReactiveUI;
|
using Avalonia.ReactiveUI;
|
||||||
|
using DialogHostAvalonia;
|
||||||
using DynamicData;
|
using DynamicData;
|
||||||
using MsBox.Avalonia.Enums;
|
using MsBox.Avalonia.Enums;
|
||||||
using ReactiveUI;
|
using ReactiveUI;
|
||||||
|
@ -71,7 +72,7 @@ namespace v2rayN.Desktop.Views
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var dialog = new QrcodeView(url);
|
var dialog = new QrcodeView(url);
|
||||||
await dialog.ShowDialog(this);
|
await DialogHost.Show(dialog, "dialogHostSub");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LstSubscription_DoubleTapped(object? sender, Avalonia.Input.TappedEventArgs e)
|
private void LstSubscription_DoubleTapped(object? sender, Avalonia.Input.TappedEventArgs e)
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.1.3" />
|
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.1.3" />
|
||||||
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.1.3" />
|
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.1.3" />
|
||||||
<PackageReference Include="Avalonia.ReactiveUI" Version="11.1.3" />
|
<PackageReference Include="Avalonia.ReactiveUI" Version="11.1.3" />
|
||||||
|
<PackageReference Include="DialogHost.Avalonia" Version="0.8.1" />
|
||||||
<PackageReference Include="MessageBox.Avalonia" Version="3.1.6" />
|
<PackageReference Include="MessageBox.Avalonia" Version="3.1.6" />
|
||||||
<PackageReference Include="Semi.Avalonia" Version="11.1.0.4" />
|
<PackageReference Include="Semi.Avalonia" Version="11.1.0.4" />
|
||||||
<PackageReference Include="Semi.Avalonia.DataGrid" Version="11.1.0.4" />
|
<PackageReference Include="Semi.Avalonia.DataGrid" Version="11.1.0.4" />
|
||||||
|
|
Loading…
Reference in New Issue