From 9eac4abd2087fa5dbbcececc35aa99841d995eb6 Mon Sep 17 00:00:00 2001 From: wzxjohn Date: Sun, 9 Nov 2014 19:27:40 +0800 Subject: [PATCH] add modify detector Add a detector to check whether the server setting changed. --- shadowsocks-csharp/Controller/ShadowsocksController.cs | 18 ++++++++++++------ shadowsocks-csharp/View/ConfigForm.cs | 6 +++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/shadowsocks-csharp/Controller/ShadowsocksController.cs b/shadowsocks-csharp/Controller/ShadowsocksController.cs index bd6e74ed..8b4fcae6 100644 --- a/shadowsocks-csharp/Controller/ShadowsocksController.cs +++ b/shadowsocks-csharp/Controller/ShadowsocksController.cs @@ -42,15 +42,15 @@ namespace Shadowsocks.Controller } openOnLan = _config.openOnLan; - polipoRunner = new PolipoRunner(); + polipoRunner = new PolipoRunner(); polipoRunner.Start(_config); - local = new Local(_config); + local = new Local(_config); try { local.Start(); pacServer = new PACServer(); - pacServer.PACFileChanged += pacServer_PACFileChanged; - pacServer.Start(_config); + pacServer.PACFileChanged += pacServer_PACFileChanged; + pacServer.Start(_config); } catch (Exception e) { @@ -59,7 +59,7 @@ namespace Shadowsocks.Controller UpdateSystemProxy(); } - + public Server GetCurrentServer() { return _config.GetCurrentServer(); @@ -71,9 +71,10 @@ namespace Shadowsocks.Controller return Configuration.Load(); } - public void SaveServers(List servers) + public void SaveServers(List servers, bool noChange) { _config.configs = servers; + _config.noChange = noChange; SaveConfig(_config); } @@ -91,6 +92,7 @@ namespace Shadowsocks.Controller public void ToggleShareOverLAN(bool enabled) { _config.shareOverLan = enabled; + _config.noChange = false; SaveConfig(_config); if (ShareOverLANStatusChanged != null) { @@ -142,6 +144,10 @@ namespace Shadowsocks.Controller Configuration.Save(newConfig); // some logic in configuration updated the config when saving, we need to read it again _config = Configuration.Load(); + if (newConfig.noChange) + { + return; + } pacServer.Stop(); local.Stop(); diff --git a/shadowsocks-csharp/View/ConfigForm.cs b/shadowsocks-csharp/View/ConfigForm.cs index 9d7c1fe2..80d31c09 100644 --- a/shadowsocks-csharp/View/ConfigForm.cs +++ b/shadowsocks-csharp/View/ConfigForm.cs @@ -122,6 +122,10 @@ namespace Shadowsocks.View _oldConfiguration = _modifiedConfiguration; } } + else + { + _modifiedConfiguration.noChange = false; + } return true; } catch (FormatException) @@ -301,7 +305,7 @@ namespace Shadowsocks.View MessageBox.Show("Please add at least one server"); return; } - controller.SaveServers(_modifiedConfiguration.configs); + controller.SaveServers(_modifiedConfiguration.configs, _modifiedConfiguration.noChange); this.Hide(); ShowFirstTimeBalloon(); }