diff --git a/shadowsocks-csharp/View/MenuViewController.cs b/shadowsocks-csharp/View/MenuViewController.cs index bf5b138a..9d44d02b 100644 --- a/shadowsocks-csharp/View/MenuViewController.cs +++ b/shadowsocks-csharp/View/MenuViewController.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; @@ -33,8 +32,7 @@ namespace Shadowsocks.View private bool _isFirstRun; private bool _isStartupChecking; - private MenuItem enableItem; - private MenuItem modeItem; + private MenuItem disableItem; private MenuItem AutoStartupItem; private MenuItem ShareOverLANItem; private MenuItem SeperatorItem; @@ -99,7 +97,7 @@ namespace Shadowsocks.View _isFirstRun = true; ShowConfigForm(); } - else if(config.autoCheckUpdate) + else if (config.autoCheckUpdate) { _isStartupChecking = true; updateChecker.CheckUpdate(config, 3000); @@ -217,9 +215,9 @@ namespace Shadowsocks.View { Color flyBlue = Color.FromArgb(25, 125, 191); // Multiply with flyBlue - int red = color.R * flyBlue.R / 255; - int green = color.G * flyBlue.G / 255; - int blue = color.B * flyBlue.B / 255; + int red = color.R * flyBlue.R / 255; + int green = color.G * flyBlue.G / 255; + int blue = color.B * flyBlue.B / 255; iconCopy.SetPixel(x, y, Color.FromArgb(color.A, red, green, blue)); } } @@ -262,8 +260,8 @@ namespace Shadowsocks.View private void LoadMenu() { this.contextMenu1 = new ContextMenu(new MenuItem[] { - this.enableItem = CreateMenuItem("Enable System Proxy", new EventHandler(this.EnableItem_Click)), - this.modeItem = CreateMenuGroup("Mode", new MenuItem[] { + CreateMenuGroup("System Proxy", new MenuItem[] { + this.disableItem = CreateMenuItem("Disable", new EventHandler(this.EnableItem_Click)), this.PACModeItem = CreateMenuItem("PAC", new EventHandler(this.PACModeItem_Click)), this.globalModeItem = CreateMenuItem("Global", new EventHandler(this.GlobalModeItem_Click)) }), @@ -319,8 +317,7 @@ namespace Shadowsocks.View private void controller_EnableStatusChanged(object sender, EventArgs e) { - enableItem.Checked = controller.GetConfigurationCopy().enabled; - modeItem.Enabled = enableItem.Checked; + disableItem.Checked = !controller.GetConfigurationCopy().enabled; } void controller_ShareOverLANStatusChanged(object sender, EventArgs e) @@ -328,7 +325,8 @@ namespace Shadowsocks.View ShareOverLANItem.Checked = controller.GetConfigurationCopy().shareOverLan; } - void controller_VerboseLoggingStatusChanged(object sender, EventArgs e) { + void controller_VerboseLoggingStatusChanged(object sender, EventArgs e) + { VerboseLoggingToggleItem.Checked = controller.GetConfigurationCopy().isVerboseLogging; } @@ -405,10 +403,7 @@ namespace Shadowsocks.View { Configuration config = controller.GetConfigurationCopy(); UpdateServersMenu(); - enableItem.Checked = config.enabled; - modeItem.Enabled = config.enabled; - globalModeItem.Checked = config.global; - PACModeItem.Checked = !config.global; + UpdateSystemProxyItemsEnabledStatus(config); ShareOverLANItem.Checked = config.shareOverLan; VerboseLoggingToggleItem.Checked = config.isVerboseLogging; AutoStartupItem.Checked = AutoStartup.Check(); @@ -437,7 +432,7 @@ namespace Shadowsocks.View } // user wants a seperator item between strategy and servers menugroup - items.Add( i++, new MenuItem("-") ); + items.Add(i++, new MenuItem("-")); int strategyCount = i; Configuration configuration = controller.GetConfigurationCopy(); @@ -588,7 +583,7 @@ namespace Shadowsocks.View private void notifyIcon1_Click(object sender, MouseEventArgs e) { - if ( e.Button == MouseButtons.Middle ) + if (e.Button == MouseButtons.Middle) { ShowLogForm(); } @@ -604,17 +599,40 @@ namespace Shadowsocks.View private void EnableItem_Click(object sender, EventArgs e) { - controller.ToggleEnable(!enableItem.Checked); + controller.ToggleEnable(false); + Configuration config = controller.GetConfigurationCopy(); + UpdateSystemProxyItemsEnabledStatus(config); + } + + private void UpdateSystemProxyItemsEnabledStatus(Configuration config) + { + disableItem.Checked = !config.enabled; + if (!config.enabled) + { + globalModeItem.Checked = false; + PACModeItem.Checked = false; + } + else + { + globalModeItem.Checked = config.global; + PACModeItem.Checked = !config.global; + } } private void GlobalModeItem_Click(object sender, EventArgs e) { + controller.ToggleEnable(true); controller.ToggleGlobal(true); + Configuration config = controller.GetConfigurationCopy(); + UpdateSystemProxyItemsEnabledStatus(config); } private void PACModeItem_Click(object sender, EventArgs e) { + controller.ToggleEnable(true); controller.ToggleGlobal(false); + Configuration config = controller.GetConfigurationCopy(); + UpdateSystemProxyItemsEnabledStatus(config); } private void ShareOverLANItem_Click(object sender, EventArgs e) @@ -650,9 +668,10 @@ namespace Shadowsocks.View controller.SelectStrategy((string)item.Tag); } - private void VerboseLoggingToggleItem_Click( object sender, EventArgs e ) { - VerboseLoggingToggleItem.Checked = ! VerboseLoggingToggleItem.Checked; - controller.ToggleVerboseLogging( VerboseLoggingToggleItem.Checked ); + private void VerboseLoggingToggleItem_Click(object sender, EventArgs e) + { + VerboseLoggingToggleItem.Checked = !VerboseLoggingToggleItem.Checked; + controller.ToggleVerboseLogging(VerboseLoggingToggleItem.Checked); } private void StatisticsConfigItem_Click(object sender, EventArgs e)