Browse Source

Refactor

- Only use one instance of LogForm

Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
tags/3.3.1
Syrone Wong 8 years ago
parent
commit
33b2ca8c8a
6 changed files with 69 additions and 69 deletions
  1. +12
    -0
      shadowsocks-csharp/Controller/ShadowsocksController.cs
  2. +4
    -0
      shadowsocks-csharp/Model/Configuration.cs
  3. +11
    -9
      shadowsocks-csharp/Program.cs
  4. +9
    -17
      shadowsocks-csharp/View/LogForm.cs
  5. +33
    -38
      shadowsocks-csharp/View/MenuViewController.cs
  6. +0
    -5
      shadowsocks-csharp/View/ProxyForm.cs

+ 12
- 0
shadowsocks-csharp/Controller/ShadowsocksController.cs View File

@@ -348,18 +348,30 @@ namespace Shadowsocks.Controller
{
_config.autoCheckUpdate = enabled;
Configuration.Save(_config);
if (ConfigChanged != null)
{
ConfigChanged(this, new EventArgs());
}
}
public void SaveLogViewerConfig(LogViewerConfig newConfig)
{
_config.logViewer = newConfig;
Configuration.Save(_config);
if (ConfigChanged != null)
{
ConfigChanged(this, new EventArgs());
}
}
public void SaveProxyConfig(ProxyConfig newConfig)
{
_config.proxy = newConfig;
Configuration.Save(_config);
if (ConfigChanged != null)
{
ConfigChanged(this, new EventArgs());
}
}
public void UpdateLatency(Server server, TimeSpan latency)


+ 4
- 0
shadowsocks-csharp/Model/Configuration.cs View File

@@ -56,6 +56,10 @@ namespace Shadowsocks.Model
config.localPort = 1080;
if (config.index == -1 && config.strategy == null)
config.index = 0;
if (config.logViewer == null)
config.logViewer = new LogViewerConfig();
if (config.proxy == null)
config.proxy = new ProxyConfig();
return config;
}
catch (Exception e)


+ 11
- 9
shadowsocks-csharp/Program.cs View File

@@ -13,7 +13,9 @@ namespace Shadowsocks
{
static class Program
{
static ShadowsocksController controller;
private static ShadowsocksController _controller;
// XXX: Don't change this name
private static MenuViewController _viewController;
/// <summary>
/// 应用程序的主入口点。
@@ -61,9 +63,9 @@ namespace Shadowsocks
#else
Logging.OpenLogFile();
#endif
controller = new ShadowsocksController();
MenuViewController viewController = new MenuViewController(controller);
controller.Start();
_controller = new ShadowsocksController();
_viewController = new MenuViewController(_controller);
_controller.Start();
Application.Run();
}
}
@@ -88,10 +90,10 @@ namespace Shadowsocks
{
case PowerModes.Resume:
Logging.Info("os wake up");
controller?.Start();
_controller?.Start();
break;
case PowerModes.Suspend:
controller?.Stop();
_controller?.Stop();
Logging.Info("os suspend");
break;
}
@@ -99,10 +101,10 @@ namespace Shadowsocks
private static void Application_ApplicationExit(object sender, EventArgs e)
{
if (controller != null)
if (_controller != null)
{
controller.Stop();
controller = null;
_controller.Stop();
_controller = null;
}
}
}


+ 9
- 17
shadowsocks-csharp/View/LogForm.cs View File

@@ -35,19 +35,13 @@ namespace Shadowsocks.View
Icon = Icon.FromHandle(Resources.ssw128.GetHicon());
LogViewerConfig config = controller.GetConfigurationCopy().logViewer;
if (config == null)
{
config = new LogViewerConfig();
}
else
{
topMostTrigger = config.topMost;
wrapTextTrigger = config.wrapText;
toolbarTrigger = config.toolbarShown;
LogMessageTextBox.BackColor = config.GetBackgroundColor();
LogMessageTextBox.ForeColor = config.GetTextColor();
LogMessageTextBox.Font = config.GetFont();
}
topMostTrigger = config.topMost;
wrapTextTrigger = config.wrapText;
toolbarTrigger = config.toolbarShown;
LogMessageTextBox.BackColor = config.GetBackgroundColor();
LogMessageTextBox.ForeColor = config.GetTextColor();
LogMessageTextBox.Font = config.GetFont();
controller.TrafficChanged += controller_TrafficChanged;
@@ -219,8 +213,7 @@ namespace Shadowsocks.View
timer.Start();
LogViewerConfig config = controller.GetConfigurationCopy().logViewer;
if (config == null)
config = new LogViewerConfig();
Height = config.height;
Width = config.width;
Top = config.GetBestTop();
@@ -246,8 +239,7 @@ namespace Shadowsocks.View
timer.Stop();
controller.TrafficChanged -= controller_TrafficChanged;
LogViewerConfig config = controller.GetConfigurationCopy().logViewer;
if (config == null)
config = new LogViewerConfig();
config.topMost = topMostTrigger;
config.wrapText = wrapTextTrigger;
config.toolbarShown = toolbarTrigger;


+ 33
- 38
shadowsocks-csharp/View/MenuViewController.cs View File

@@ -52,8 +52,7 @@ namespace Shadowsocks.View
private MenuItem VerboseLoggingToggleItem;
private ConfigForm configForm;
private ProxyForm proxyForm;
private List<LogForm> logForms = new List<LogForm>();
private bool logFormsVisible = false;
private LogForm logForm;
private string _urlToOpen;
public MenuViewController(ShadowsocksController controller)
@@ -133,6 +132,8 @@ namespace Shadowsocks.View
MessageBox.Show(e.GetException().ToString(), String.Format(I18N.GetString("Shadowsocks Error: {0}"), e.GetException().Message));
}
#region Tray Icon
private void UpdateTrayIcon()
{
int dpi;
@@ -177,10 +178,10 @@ namespace Shadowsocks.View
}
// we want to show more details but notify icon title is limited to 63 characters
string text = I18N.GetString("Shadowsocks") + " " + UpdateChecker.Version + "\n" +
(enabled ?
I18N.GetString("System Proxy On: ") + (global ? I18N.GetString("Global") : I18N.GetString("PAC")) :
String.Format(I18N.GetString("Running: Port {0}"), config.localPort)) // this feedback is very important because they need to know Shadowsocks is running
+ "\n" + serverInfo;
(enabled ?
I18N.GetString("System Proxy On: ") + (global ? I18N.GetString("Global") : I18N.GetString("PAC")) :
String.Format(I18N.GetString("Running: Port {0}"), config.localPort)) // this feedback is very important because they need to know Shadowsocks is running
+ "\n" + serverInfo;
_notifyIcon.Text = text.Substring(0, Math.Min(63, text.Length));
}
@@ -201,7 +202,7 @@ namespace Shadowsocks.View
else if (global)
{
Color flyBlue = Color.FromArgb(25, 125, 191);
// Muliply with flyBlue
// Multiply with flyBlue
int red = color.R * flyBlue.R / 255;
int green = color.G * flyBlue.G / 255;
int blue = color.B * flyBlue.B / 255;
@@ -230,6 +231,10 @@ namespace Shadowsocks.View
return bitmap;
}
#endregion
#region MenuItems and MenuGroups
private MenuItem CreateMenuItem(string text, EventHandler click)
{
return new MenuItem(I18N.GetString(text), click);
@@ -282,6 +287,8 @@ namespace Shadowsocks.View
});
}
#endregion
private void controller_ConfigChanged(object sender, EventArgs e)
{
LoadCurrentConfiguration();
@@ -406,7 +413,7 @@ namespace Shadowsocks.View
i++;
}
// user want a seperator item between strategy and servers menugroup
// user wants a seperator item between strategy and servers menugroup
items.Add( i++, new MenuItem("-") );
int strategyCount = i;
@@ -459,31 +466,25 @@ namespace Shadowsocks.View
}
}
private void ShowLogForms()
private void ShowLogForm()
{
if (logForms.Count == 0)
if (logForm != null)
{
LogForm f = new LogForm(controller, Logging.LogFilePath);
f.Show();
f.Activate();
f.FormClosed += logForm_FormClosed;
logForms.Add(f);
logFormsVisible = true;
logForm.Activate();
}
else
{
logFormsVisible = !logFormsVisible;
foreach (LogForm f in logForms)
{
f.Visible = logFormsVisible;
}
logForm = new LogForm(controller, Logging.LogFilePath);
logForm.Show();
logForm.Activate();
logForm.FormClosed += logForm_FormClosed;
}
}
void logForm_FormClosed(object sender, FormClosedEventArgs e)
{
logForms.Remove((LogForm)sender);
logForm = null;
Utils.ReleaseMemory(true);
}
void configForm_FormClosed(object sender, FormClosedEventArgs e)
@@ -519,11 +520,9 @@ namespace Shadowsocks.View
private void CheckUpdateForFirstRun()
{
Configuration config = controller.GetConfigurationCopy();
if (!config.isDefault)
{
_isStartupChecking = true;
updateChecker.CheckUpdate(config, 3000);
}
if (config.isDefault) return;
_isStartupChecking = true;
updateChecker.CheckUpdate(config, 3000);
}
private void ShowFirstTimeBalloon()
@@ -547,7 +546,7 @@ namespace Shadowsocks.View
}
else if (e.Button == MouseButtons.Middle)
{
ShowLogForms();
ShowLogForm();
}
}
@@ -607,15 +606,6 @@ namespace Shadowsocks.View
controller.SelectStrategy((string)item.Tag);
}
private void ShowLogItem_Click(object sender, EventArgs e)
{
LogForm f = new LogForm(controller, Logging.LogFilePath);
f.Show();
f.FormClosed += logForm_FormClosed;
logForms.Add(f);
}
private void VerboseLoggingToggleItem_Click( object sender, EventArgs e ) {
VerboseLoggingToggleItem.Checked = ! VerboseLoggingToggleItem.Checked;
controller.ToggleVerboseLogging( VerboseLoggingToggleItem.Checked );
@@ -820,5 +810,10 @@ namespace Shadowsocks.View
{
ShowProxyForm();
}
private void ShowLogItem_Click(object sender, EventArgs e)
{
ShowLogForm();
}
}
}

+ 0
- 5
shadowsocks-csharp/View/ProxyForm.cs View File

@@ -47,11 +47,6 @@ namespace Shadowsocks.View
private void LoadCurrentConfiguration()
{
_modifiedConfiguration = controller.GetConfigurationCopy().proxy;
if (_modifiedConfiguration == null)
{
_modifiedConfiguration = new ProxyConfig();
controller.SaveProxyConfig(_modifiedConfiguration);
}
UseProxyCheckBox.Checked = _modifiedConfiguration.useProxy;
ProxyServerTextBox.Text = _modifiedConfiguration.proxyServer;
ProxyPortTextBox.Text = _modifiedConfiguration.proxyPort.ToString();


Loading…
Cancel
Save