support online pac, see https://github.com/shadowsocks/shadowsocks-csharp/issues/163
This commit is contained in:
@@ -35,7 +35,10 @@ namespace Shadowsocks.View
|
||||
private MenuItem ServersItem;
|
||||
private MenuItem globalModeItem;
|
||||
private MenuItem PACModeItem;
|
||||
private MenuItem localPACItem;
|
||||
private MenuItem onlinePACItem;
|
||||
private ConfigForm configForm;
|
||||
private PACUrlForm pacUrlForm;
|
||||
private string _urlToOpen;
|
||||
|
||||
public MenuViewController(ShadowsocksController controller)
|
||||
@@ -151,10 +154,15 @@ namespace Shadowsocks.View
|
||||
CreateMenuItem("Show QRCode...", new EventHandler(this.QRCodeItem_Click)),
|
||||
CreateMenuItem("Scan QRCode from Screen...", new EventHandler(this.ScanQRCodeItem_Click))
|
||||
}),
|
||||
new MenuItem("-"),
|
||||
CreateMenuItem("Edit PAC File...", new EventHandler(this.EditPACFileItem_Click)),
|
||||
CreateMenuItem("Update PAC from GFWList", new EventHandler(this.UpdatePACFromGFWListItem_Click)),
|
||||
CreateMenuItem("Edit User Rule for GFWList...", new EventHandler(this.EditUserRuleFileForGFWListItem_Click)),
|
||||
CreateMenuGroup("PAC", new MenuItem[] {
|
||||
this.localPACItem = CreateMenuItem("Local PAC", new EventHandler(this.LocalPACItem_Click)),
|
||||
this.onlinePACItem = CreateMenuItem("Online PAC", new EventHandler(this.OnlinePACItem_Click)),
|
||||
new MenuItem("-"),
|
||||
CreateMenuItem("Edit PAC File...", new EventHandler(this.EditPACFileItem_Click)),
|
||||
CreateMenuItem("Update PAC from GFWList", new EventHandler(this.UpdatePACFromGFWListItem_Click)),
|
||||
CreateMenuItem("Edit User Rule for GFWList...", new EventHandler(this.EditUserRuleFileForGFWListItem_Click)),
|
||||
CreateMenuItem("Update Online PAC URL", new EventHandler(this.UpdateOnlinePACURLItem_Click)),
|
||||
}),
|
||||
new MenuItem("-"),
|
||||
this.AutoStartupItem = CreateMenuItem("Start on Boot", new EventHandler(this.AutoStartupItem_Click)),
|
||||
this.ShareOverLANItem = CreateMenuItem("Allow Clients from LAN", new EventHandler(this.ShareOverLANItem_Click)),
|
||||
@@ -240,6 +248,9 @@ namespace Shadowsocks.View
|
||||
PACModeItem.Checked = !config.global;
|
||||
ShareOverLANItem.Checked = config.shareOverLan;
|
||||
AutoStartupItem.Checked = AutoStartup.Check();
|
||||
onlinePACItem.Enabled = !string.IsNullOrEmpty(config.pacUrl);
|
||||
onlinePACItem.Checked = onlinePACItem.Enabled && config.useOnlinePac;
|
||||
localPACItem.Checked = !onlinePACItem.Checked;
|
||||
}
|
||||
|
||||
private void UpdateServersMenu()
|
||||
@@ -481,5 +492,51 @@ namespace Shadowsocks.View
|
||||
MessageBox.Show(I18N.GetString("Failed to update registry"));
|
||||
}
|
||||
}
|
||||
|
||||
private void LocalPACItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!localPACItem.Checked)
|
||||
{
|
||||
localPACItem.Checked = true;
|
||||
onlinePACItem.Checked = false;
|
||||
controller.UseOnlinePAC(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnlinePACItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!onlinePACItem.Checked)
|
||||
{
|
||||
localPACItem.Checked = false;
|
||||
onlinePACItem.Checked = true;
|
||||
controller.UseOnlinePAC(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void showPACUrlForm()
|
||||
{
|
||||
if (pacUrlForm != null)
|
||||
{
|
||||
pacUrlForm.Activate();
|
||||
}
|
||||
else
|
||||
{
|
||||
pacUrlForm = new PACUrlForm(controller);
|
||||
pacUrlForm.Show();
|
||||
pacUrlForm.FormClosed += pacUrlForm_FormClosed;
|
||||
}
|
||||
}
|
||||
|
||||
private void pacUrlForm_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
pacUrlForm = null;
|
||||
Util.Utils.ReleaseMemory();
|
||||
ShowFirstTimeBalloon();
|
||||
}
|
||||
|
||||
private void UpdateOnlinePACURLItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
showPACUrlForm();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user