From 372f3991e1003e28c6a4635e1287b067c41cfb70 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Mon, 12 Aug 2024 20:25:31 +0800 Subject: [PATCH] Refactor code to decouple view and viewmodel --- v2rayN/v2rayN/Enums/EViewAction.cs | 2 ++ v2rayN/v2rayN/Handler/UpdateHandle.cs | 31 +++++++++---------- .../v2rayN/ViewModels/AddServer2ViewModel.cs | 11 ++----- .../ViewModels/RoutingRuleSettingViewModel.cs | 9 ++---- v2rayN/v2rayN/Views/AddServer2Window.xaml.cs | 9 ++++++ .../Views/RoutingRuleSettingWindow.xaml.cs | 8 +++++ 6 files changed, 38 insertions(+), 32 deletions(-) diff --git a/v2rayN/v2rayN/Enums/EViewAction.cs b/v2rayN/v2rayN/Enums/EViewAction.cs index 312e7ff7..19156be2 100644 --- a/v2rayN/v2rayN/Enums/EViewAction.cs +++ b/v2rayN/v2rayN/Enums/EViewAction.cs @@ -12,6 +12,8 @@ ShowHideWindow, ScanScreenTask, Shutdown, + BrowseServer, + ImportRulesFromFile, SubEditWindow, RoutingRuleSettingWindow, RoutingRuleDetailsWindow, diff --git a/v2rayN/v2rayN/Handler/UpdateHandle.cs b/v2rayN/v2rayN/Handler/UpdateHandle.cs index 996ded0a..7a469723 100644 --- a/v2rayN/v2rayN/Handler/UpdateHandle.cs +++ b/v2rayN/v2rayN/Handler/UpdateHandle.cs @@ -5,7 +5,6 @@ using System.IO; using System.Runtime.InteropServices; using System.Text; using System.Text.RegularExpressions; -using System.Windows; using v2rayN.Enums; using v2rayN.Models; using v2rayN.Resx; @@ -535,22 +534,22 @@ namespace v2rayN.Handler private async Task AskToDownload(DownloadHandle downloadHandle, string url, bool blAsk) { - bool blDownload = false; - if (blAsk) - { - if (UI.ShowYesNo(string.Format(ResUI.DownloadYesNo, url)) == MessageBoxResult.Yes) - { - blDownload = true; - } - } - else - { - blDownload = true; - } - if (blDownload) - { + //bool blDownload = false; + //if (blAsk) + //{ + // if (UI.ShowYesNo(string.Format(ResUI.DownloadYesNo, url)) == MessageBoxResult.Yes) + // { + // blDownload = true; + // } + //} + //else + //{ + // blDownload = true; + //} + //if (blDownload) + //{ await downloadHandle.DownloadFileAsync(url, true, 600); - } + //} } private async Task UpdateGeoFile(string geoName, Config config, Action update) diff --git a/v2rayN/v2rayN/ViewModels/AddServer2ViewModel.cs b/v2rayN/v2rayN/ViewModels/AddServer2ViewModel.cs index 061cca79..449f3bfe 100644 --- a/v2rayN/v2rayN/ViewModels/AddServer2ViewModel.cs +++ b/v2rayN/v2rayN/ViewModels/AddServer2ViewModel.cs @@ -38,7 +38,7 @@ namespace v2rayN.ViewModels BrowseServerCmd = ReactiveCommand.Create(() => { - BrowseServer(); + _updateView?.Invoke(EViewAction.BrowseServer, null); }); EditServerCmd = ReactiveCommand.Create(() => @@ -92,15 +92,8 @@ namespace v2rayN.ViewModels } } - private void BrowseServer() + public void BrowseServer(string fileName) { - //_noticeHandler?.Enqueue(ResUI.CustomServerTips); - - if (UI.OpenFileDialog(out string fileName, - "Config|*.json|YAML|*.yaml;*.yml|All|*.*") != true) - { - return; - } if (Utils.IsNullOrEmpty(fileName)) { return; diff --git a/v2rayN/v2rayN/ViewModels/RoutingRuleSettingViewModel.cs b/v2rayN/v2rayN/ViewModels/RoutingRuleSettingViewModel.cs index b1b08f7c..d13ca879 100644 --- a/v2rayN/v2rayN/ViewModels/RoutingRuleSettingViewModel.cs +++ b/v2rayN/v2rayN/ViewModels/RoutingRuleSettingViewModel.cs @@ -69,7 +69,7 @@ namespace v2rayN.ViewModels }); ImportRulesFromFileCmd = ReactiveCommand.Create(() => { - ImportRulesFromFile(); + _updateView?.Invoke(EViewAction.ImportRulesFromFile, null); }); ImportRulesFromClipboardCmd = ReactiveCommand.Create(() => { @@ -256,13 +256,8 @@ namespace v2rayN.ViewModels #region Import rules - private void ImportRulesFromFile() + public void ImportRulesFromFile(string fileName) { - if (UI.OpenFileDialog(out string fileName, - "Rules|*.json|All|*.*") != true) - { - return; - } if (Utils.IsNullOrEmpty(fileName)) { return; diff --git a/v2rayN/v2rayN/Views/AddServer2Window.xaml.cs b/v2rayN/v2rayN/Views/AddServer2Window.xaml.cs index 43a22f0d..4a191f4f 100644 --- a/v2rayN/v2rayN/Views/AddServer2Window.xaml.cs +++ b/v2rayN/v2rayN/Views/AddServer2Window.xaml.cs @@ -47,6 +47,15 @@ namespace v2rayN.Views { this.DialogResult = true; } + else if (action == EViewAction.BrowseServer) + { + if (UI.OpenFileDialog(out string fileName, "Config|*.json|YAML|*.yaml;*.yml|All|*.*") != true) + { + return false; + } + ViewModel?.BrowseServer(fileName); + } + return true; } diff --git a/v2rayN/v2rayN/Views/RoutingRuleSettingWindow.xaml.cs b/v2rayN/v2rayN/Views/RoutingRuleSettingWindow.xaml.cs index 50ad0bba..108dc087 100644 --- a/v2rayN/v2rayN/Views/RoutingRuleSettingWindow.xaml.cs +++ b/v2rayN/v2rayN/Views/RoutingRuleSettingWindow.xaml.cs @@ -88,6 +88,14 @@ namespace v2rayN.Views if (obj is null) return false; return (new RoutingRuleDetailsWindow((RulesItem)obj)).ShowDialog() ?? false; } + else if (action == EViewAction.ImportRulesFromFile) + { + if (UI.OpenFileDialog(out string fileName, "Rules|*.json|All|*.*") != true) + { + return false; + } + ViewModel?.ImportRulesFromFile(fileName); + } return true; }