Browse Source

Refine code

tags/3.3.6
noisyfox 8 years ago
parent
commit
e7b559f1da
3 changed files with 23 additions and 18 deletions
  1. +21
    -2
      shadowsocks-csharp/Controller/System/Hotkeys/HotkeyCallbacks.cs
  2. +1
    -1
      shadowsocks-csharp/Program.cs
  3. +1
    -15
      shadowsocks-csharp/View/HotkeySettingsForm.cs

+ 21
- 2
shadowsocks-csharp/Controller/System/Hotkeys/HotkeyCallbacks.cs View File

@@ -1,11 +1,11 @@
using System.Reflection;
using System;
using System.Reflection;
using Shadowsocks.View;

namespace Shadowsocks.Controller.Hotkeys
{
public class HotkeyCallbacks
{
public static HotkeyCallbacks Instance { get; private set; }

public static void InitInstance(ShadowsocksController controller)
{
@@ -17,6 +17,23 @@ namespace Shadowsocks.Controller.Hotkeys
Instance = new HotkeyCallbacks(controller);
}

/// <summary>
/// Create hotkey callback handler delegate based on callback name
/// </summary>
/// <param name="methodname"></param>
/// <returns></returns>
public static Delegate GetCallback(string methodname)
{
if (methodname.IsNullOrEmpty()) throw new ArgumentException(nameof(methodname));
MethodInfo dynMethod = typeof(HotkeyCallbacks).GetMethod(methodname,
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase);
return dynMethod == null ? null : Delegate.CreateDelegate(typeof(HotKeys.HotKeyCallBackHandler), Instance, dynMethod);
}

#region Singleton
private static HotkeyCallbacks Instance { get; set; }

private readonly ShadowsocksController _controller;

private HotkeyCallbacks(ShadowsocksController controller)
@@ -24,6 +41,8 @@ namespace Shadowsocks.Controller.Hotkeys
_controller = controller;
}

#endregion

#region Callbacks

private void SwitchSystemProxyCallback()


+ 1
- 1
shadowsocks-csharp/Program.cs View File

@@ -82,7 +82,7 @@ namespace Shadowsocks
#endif
_controller = new ShadowsocksController();
_viewController = new MenuViewController(_controller);
HotKeys.Init();
HotKeys.Init(_controller);
_controller.Start();
Application.Run();
}


+ 1
- 15
shadowsocks-csharp/View/HotkeySettingsForm.cs View File

@@ -270,7 +270,7 @@ namespace Shadowsocks.View
var labelName = rawName + "Label";
var callbackName = rawName + "Callback";
var callback = GetDelegateViaMethodName(callbackName);
var callback = HotkeyCallbacks.GetCallback(callbackName);
if (callback == null)
{
throw new Exception($"{callbackName} not found");
@@ -302,20 +302,6 @@ namespace Shadowsocks.View
return fi == null ? null : fi.GetValue(obj);
}
/// <summary>
/// Create hotkey callback handler delegate based on callback name
/// </summary>
/// <param name="type"></param>
/// <param name="methodname"></param>
/// <returns></returns>
private Delegate GetDelegateViaMethodName(string methodname)
{
if (methodname.IsNullOrEmpty()) throw new ArgumentException(nameof(methodname));
MethodInfo dynMethod = typeof(HotkeyCallbacks).GetMethod(methodname,
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase);
return dynMethod == null ? null : Delegate.CreateDelegate(typeof(HotKeys.HotKeyCallBackHandler), HotkeyCallbacks.Instance, dynMethod);
}
#endregion
}
}

Loading…
Cancel
Save