Skip to content

Commit 948457f

Browse files
committed
enhance: Combine enable system proxy and proxy mode as one switcher for better user experience.
1 parent 0546927 commit 948457f

File tree

1 file changed

+41
-22
lines changed

1 file changed

+41
-22
lines changed

shadowsocks-csharp/View/MenuViewController.cs

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.Diagnostics;
43
using System.Drawing;
54
using System.Drawing.Imaging;
@@ -33,8 +32,7 @@ public class MenuViewController
3332

3433
private bool _isFirstRun;
3534
private bool _isStartupChecking;
36-
private MenuItem enableItem;
37-
private MenuItem modeItem;
35+
private MenuItem disableItem;
3836
private MenuItem AutoStartupItem;
3937
private MenuItem ShareOverLANItem;
4038
private MenuItem SeperatorItem;
@@ -99,7 +97,7 @@ public MenuViewController(ShadowsocksController controller)
9997
_isFirstRun = true;
10098
ShowConfigForm();
10199
}
102-
else if(config.autoCheckUpdate)
100+
else if (config.autoCheckUpdate)
103101
{
104102
_isStartupChecking = true;
105103
updateChecker.CheckUpdate(config, 3000);
@@ -217,9 +215,9 @@ private Bitmap getTrayIconByState(Bitmap originIcon, bool enabled, bool global)
217215
{
218216
Color flyBlue = Color.FromArgb(25, 125, 191);
219217
// Multiply with flyBlue
220-
int red = color.R * flyBlue.R / 255;
221-
int green = color.G * flyBlue.G / 255;
222-
int blue = color.B * flyBlue.B / 255;
218+
int red = color.R * flyBlue.R / 255;
219+
int green = color.G * flyBlue.G / 255;
220+
int blue = color.B * flyBlue.B / 255;
223221
iconCopy.SetPixel(x, y, Color.FromArgb(color.A, red, green, blue));
224222
}
225223
}
@@ -262,8 +260,8 @@ private MenuItem CreateMenuGroup(string text, MenuItem[] items)
262260
private void LoadMenu()
263261
{
264262
this.contextMenu1 = new ContextMenu(new MenuItem[] {
265-
this.enableItem = CreateMenuItem("Enable System Proxy", new EventHandler(this.EnableItem_Click)),
266-
this.modeItem = CreateMenuGroup("Mode", new MenuItem[] {
263+
CreateMenuGroup("System Proxy", new MenuItem[] {
264+
this.disableItem = CreateMenuItem("Disable", new EventHandler(this.EnableItem_Click)),
267265
this.PACModeItem = CreateMenuItem("PAC", new EventHandler(this.PACModeItem_Click)),
268266
this.globalModeItem = CreateMenuItem("Global", new EventHandler(this.GlobalModeItem_Click))
269267
}),
@@ -319,16 +317,16 @@ private void controller_ConfigChanged(object sender, EventArgs e)
319317

320318
private void controller_EnableStatusChanged(object sender, EventArgs e)
321319
{
322-
enableItem.Checked = controller.GetConfigurationCopy().enabled;
323-
modeItem.Enabled = enableItem.Checked;
320+
disableItem.Checked = !controller.GetConfigurationCopy().enabled;
324321
}
325322

326323
void controller_ShareOverLANStatusChanged(object sender, EventArgs e)
327324
{
328325
ShareOverLANItem.Checked = controller.GetConfigurationCopy().shareOverLan;
329326
}
330327

331-
void controller_VerboseLoggingStatusChanged(object sender, EventArgs e) {
328+
void controller_VerboseLoggingStatusChanged(object sender, EventArgs e)
329+
{
332330
VerboseLoggingToggleItem.Checked = controller.GetConfigurationCopy().isVerboseLogging;
333331
}
334332

@@ -405,10 +403,7 @@ private void LoadCurrentConfiguration()
405403
{
406404
Configuration config = controller.GetConfigurationCopy();
407405
UpdateServersMenu();
408-
enableItem.Checked = config.enabled;
409-
modeItem.Enabled = config.enabled;
410-
globalModeItem.Checked = config.global;
411-
PACModeItem.Checked = !config.global;
406+
UpdateSystemProxyItemsEnabledStatus(config);
412407
ShareOverLANItem.Checked = config.shareOverLan;
413408
VerboseLoggingToggleItem.Checked = config.isVerboseLogging;
414409
AutoStartupItem.Checked = AutoStartup.Check();
@@ -437,7 +432,7 @@ private void UpdateServersMenu()
437432
}
438433

439434
// user wants a seperator item between strategy and servers menugroup
440-
items.Add( i++, new MenuItem("-") );
435+
items.Add(i++, new MenuItem("-"));
441436

442437
int strategyCount = i;
443438
Configuration configuration = controller.GetConfigurationCopy();
@@ -588,7 +583,7 @@ private void AboutItem_Click(object sender, EventArgs e)
588583

589584
private void notifyIcon1_Click(object sender, MouseEventArgs e)
590585
{
591-
if ( e.Button == MouseButtons.Middle )
586+
if (e.Button == MouseButtons.Middle)
592587
{
593588
ShowLogForm();
594589
}
@@ -604,17 +599,40 @@ private void notifyIcon1_DoubleClick(object sender, MouseEventArgs e)
604599

605600
private void EnableItem_Click(object sender, EventArgs e)
606601
{
607-
controller.ToggleEnable(!enableItem.Checked);
602+
controller.ToggleEnable(false);
603+
Configuration config = controller.GetConfigurationCopy();
604+
UpdateSystemProxyItemsEnabledStatus(config);
605+
}
606+
607+
private void UpdateSystemProxyItemsEnabledStatus(Configuration config)
608+
{
609+
disableItem.Checked = !config.enabled;
610+
if (!config.enabled)
611+
{
612+
globalModeItem.Checked = false;
613+
PACModeItem.Checked = false;
614+
}
615+
else
616+
{
617+
globalModeItem.Checked = config.global;
618+
PACModeItem.Checked = !config.global;
619+
}
608620
}
609621

610622
private void GlobalModeItem_Click(object sender, EventArgs e)
611623
{
624+
controller.ToggleEnable(true);
612625
controller.ToggleGlobal(true);
626+
Configuration config = controller.GetConfigurationCopy();
627+
UpdateSystemProxyItemsEnabledStatus(config);
613628
}
614629

615630
private void PACModeItem_Click(object sender, EventArgs e)
616631
{
632+
controller.ToggleEnable(true);
617633
controller.ToggleGlobal(false);
634+
Configuration config = controller.GetConfigurationCopy();
635+
UpdateSystemProxyItemsEnabledStatus(config);
618636
}
619637

620638
private void ShareOverLANItem_Click(object sender, EventArgs e)
@@ -650,9 +668,10 @@ private void AStrategyItem_Click(object sender, EventArgs e)
650668
controller.SelectStrategy((string)item.Tag);
651669
}
652670

653-
private void VerboseLoggingToggleItem_Click( object sender, EventArgs e ) {
654-
VerboseLoggingToggleItem.Checked = ! VerboseLoggingToggleItem.Checked;
655-
controller.ToggleVerboseLogging( VerboseLoggingToggleItem.Checked );
671+
private void VerboseLoggingToggleItem_Click(object sender, EventArgs e)
672+
{
673+
VerboseLoggingToggleItem.Checked = !VerboseLoggingToggleItem.Checked;
674+
controller.ToggleVerboseLogging(VerboseLoggingToggleItem.Checked);
656675
}
657676

658677
private void StatisticsConfigItem_Click(object sender, EventArgs e)

0 commit comments

Comments
 (0)