From e6cb146671ab409beea2f768b0f13e537f4e0928 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sun, 9 Nov 2025 11:11:23 +0800 Subject: [PATCH] Refactor UI platform visibility to use ViewModel properties --- .../ViewModels/MainWindowViewModel.cs | 3 ++ .../ViewModels/OptionSettingViewModel.cs | 13 +++++++++ v2rayN/v2rayN.Desktop/Views/MainWindow.axaml | 6 ++-- .../v2rayN.Desktop/Views/MainWindow.axaml.cs | 4 --- .../Views/OptionSettingWindow.axaml | 21 +++++++------- .../Views/OptionSettingWindow.axaml.cs | 28 ------------------- 6 files changed, 30 insertions(+), 45 deletions(-) diff --git a/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs b/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs index 48792a0c..c3bb0fe3 100644 --- a/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs @@ -62,6 +62,8 @@ public class MainWindowViewModel : MyReactiveObject [Reactive] public int TabMainSelectedIndex { get; set; } + [Reactive] public bool BlIsWindows { get; set; } + #endregion Menu #region Init @@ -70,6 +72,7 @@ public class MainWindowViewModel : MyReactiveObject { _config = AppManager.Instance.Config; _updateView = updateView; + BlIsWindows = Utils.IsWindows(); #region WhenAnyValue && ReactiveCommand diff --git a/v2rayN/ServiceLib/ViewModels/OptionSettingViewModel.cs b/v2rayN/ServiceLib/ViewModels/OptionSettingViewModel.cs index 81f63d00..4012e663 100644 --- a/v2rayN/ServiceLib/ViewModels/OptionSettingViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/OptionSettingViewModel.cs @@ -69,6 +69,15 @@ public class OptionSettingViewModel : MyReactiveObject #endregion UI + #region UI visibility + + [Reactive] public bool BlIsWindows { get; set; } + [Reactive] public bool BlIsLinux { get; set; } + [Reactive] public bool BlIsIsMacOS { get; set; } + [Reactive] public bool BlIsNonWindows { get; set; } + + #endregion UI visibility + #region System proxy [Reactive] public bool notProxyLocalAddress { get; set; } @@ -108,6 +117,10 @@ public class OptionSettingViewModel : MyReactiveObject { _config = AppManager.Instance.Config; _updateView = updateView; + BlIsWindows = Utils.IsWindows(); + BlIsLinux = Utils.IsLinux(); + BlIsIsMacOS = Utils.IsMacOS(); + BlIsNonWindows = Utils.IsNonWindows(); SaveCmd = ReactiveCommand.CreateFromTask(async () => { diff --git a/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml b/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml index e02d0ba5..5a391134 100644 --- a/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml +++ b/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml @@ -75,10 +75,10 @@ - + - - + + diff --git a/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs b/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs index 64063de8..08f66dcd 100644 --- a/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs +++ b/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs @@ -161,10 +161,6 @@ public partial class MainWindow : WindowBase else { Title = $"{Utils.GetVersion()}"; - - menuRebootAsAdmin.IsVisible = false; - menuSettingsSetUWP.IsVisible = false; - menuGlobalHotkeySetting.IsVisible = false; } menuAddServerViaScan.IsVisible = false; diff --git a/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml b/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml index 321dba74..36a57637 100644 --- a/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml +++ b/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml @@ -356,11 +356,11 @@ Margin="{StaticResource Margin4}" HorizontalAlignment="Left" /> @@ -443,24 +443,25 @@ HorizontalAlignment="Left" /> + HorizontalAlignment="Left" + IsVisible="{Binding BlIsLinux}" /> + Watermark="proxy_set.sh" />