Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Commit f8426ed

Browse files
committed
main form finished except quit
1 parent b5d3775 commit f8426ed

File tree

2 files changed

+99
-46
lines changed

2 files changed

+99
-46
lines changed

V2RayW/MainForm.Designer.cs

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

V2RayW/MainForm.cs

Lines changed: 98 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace V2RayW
1414
public partial class MainForm : Form
1515
{
1616

17-
ConfigForm configForm;
17+
public ConfigForm configForm;
1818
FormCoreOutput outputForm;
1919

2020
public MainForm()
@@ -24,47 +24,80 @@ public MainForm()
2424

2525
public void updateMenu()
2626
{
27-
statusToolStripMenuItem.Text = Program.proxyIsOn ? "V2Ray: On" : "V2Ray: Off";
27+
statusToolStripMenuItem.Text = Program.coreLoaded ? "V2Ray: loaded" : "V2Ray: unloaded";
2828
startStopToolStripMenuItem.Enabled = Program.profiles.Count > 0;
29-
startStopToolStripMenuItem.Text = Program.proxyIsOn ? "Stop V2Ray" : "Start V2Ray";
29+
startStopToolStripMenuItem.Text = Program.coreLoaded ? "Unload V2Ray" : "Load V2Ray";
3030

31-
v2RayRulesToolStripMenuItem.Checked = false;
32-
pacModeToolStripMenuItem.Checked = false;
33-
globalModeToolStripMenuItem.Checked = false;
34-
switch (Program.proxyMode)
31+
//v2RayRulesToolStripMenuItem.Checked = Program.proxyMode == Program.RULES_MODE;
32+
pacModeToolStripMenuItem.Checked = Program.proxyMode == Program.PAC_MODE;
33+
//globalModeToolStripMenuItem.Checked = Program.proxyMode == Program.GLOBAL_MODE;
34+
manualModeToolStripMenuItem.Checked = Program.proxyMode == Program.MANUAL_MODE;
35+
if (!Program.useCusProfile)
3536
{
36-
case 0: v2RayRulesToolStripMenuItem.Checked = true; break;
37-
case 1: pacModeToolStripMenuItem.Checked = true; break;
38-
case 2: globalModeToolStripMenuItem.Checked = true; break;
37+
v2RayRulesToolStripMenuItem.Checked = Program.proxyMode == Program.RULES_MODE;
38+
globalModeToolStripMenuItem.Checked = Program.proxyMode == Program.GLOBAL_MODE;
39+
v2RayRulesToolStripMenuItem.Visible = true;
40+
} else
41+
{
42+
v2RayRulesToolStripMenuItem.Visible = false;
43+
globalModeToolStripMenuItem.Checked = Program.proxyMode == Program.GLOBAL_MODE || Program.proxyMode == Program.RULES_MODE;
3944
}
45+
46+
4047
serversToolStripMenuItem.DropDownItems.Clear();
48+
if (Program.profiles.Count == 0 && Program.cusProfiles.Count == 0)
49+
{
50+
ToolStripMenuItem noServer = new ToolStripMenuItem("no available servers.");
51+
serversToolStripMenuItem.DropDownItems.Add(noServer);
52+
return;
53+
}
4154
var serverMenuItems = Program.profiles.Select(p => new ToolStripMenuItem(p.remark == "" ? p.address : p.remark, null, switchToServer)).ToArray();
42-
if (Program.profiles.Count > 0 )
55+
var cusServerMenuItems = Program.cusProfiles.Select(p => new ToolStripMenuItem(p.Split('\\').Last(), null, switchToCusServer)).ToArray();
56+
if(Program.useCusProfile)
4357
{
44-
serverMenuItems[Program.selectedServerIndex].Checked = true;
45-
foreach (var p in Program.profiles)
46-
{
47-
serversToolStripMenuItem.DropDownItems.AddRange(serverMenuItems);
48-
}
58+
cusServerMenuItems[Program.selectedCusServerIndex].Checked = true;
4959
} else
5060
{
51-
var item = new ToolStripMenuItem("no available servers.");
52-
item.Enabled = false;
53-
serversToolStripMenuItem.DropDownItems.Add(item);
61+
serverMenuItems[Program.selectedServerIndex].Checked = true;
62+
}
63+
foreach(var p in serverMenuItems)
64+
{
65+
serversToolStripMenuItem.DropDownItems.Add(p);
5466
}
67+
if(serverMenuItems.Count() > 1)
68+
{
69+
serversToolStripMenuItem.DropDownItems.Add(new ToolStripMenuItem("use all", null, switchToServer));
70+
}
71+
if (serverMenuItems.Count() > 0 && cusServerMenuItems.Count() > 0)
72+
{
73+
serversToolStripMenuItem.DropDownItems.Add(new ToolStripSeparator());
74+
}
75+
serversToolStripMenuItem.DropDownItems.AddRange(cusServerMenuItems);
5576
}
5677

5778
private void switchToServer(object sender, EventArgs e)
5879
{
5980
Program.selectedServerIndex = serversToolStripMenuItem.DropDownItems.IndexOf((ToolStripMenuItem)sender);
60-
foreach (ToolStripMenuItem i in serversToolStripMenuItem.DropDownItems)
81+
if(Program.selectedServerIndex == Program.profiles.Count)
6182
{
62-
i.Checked = false;
83+
Program.useMultipleServer = true;
84+
} else
85+
{
86+
Program.useMultipleServer = false;
6387
}
64-
((ToolStripMenuItem)serversToolStripMenuItem.DropDownItems[Program.selectedServerIndex]).Checked = true;
65-
Program.updateSystemProxy();
88+
Program.useCusProfile = false;
89+
Program.configurationDidChange();
90+
}
91+
92+
private void switchToCusServer(object sender, EventArgs e)
93+
{
94+
Program.selectedCusServerIndex = Program.cusProfiles.Count - serversToolStripMenuItem.DropDownItems.Count + serversToolStripMenuItem.DropDownItems.IndexOf((ToolStripMenuItem)sender);
95+
Program.useCusProfile = true;
96+
Program.useMultipleServer = false;
97+
Program.configurationDidChange();
6698
}
6799

100+
68101
private void configureToolStripMenuItem_Click(object sender, EventArgs e)
69102
{
70103
if (this.configForm == null || this.configForm.IsDisposed)
@@ -77,22 +110,22 @@ private void configureToolStripMenuItem_Click(object sender, EventArgs e)
77110

78111
private void quitToolStripMenuItem_Click(object sender, EventArgs e)
79112
{
80-
if (Program.proxyIsOn)
113+
if (Program.coreLoaded)
81114
{
82-
Program.proxyIsOn = false; // change to false temporarily
115+
Program.coreLoaded = false; // change to false temporarily
83116
Program.finalAction = true;
84117
Debug.WriteLine("close system proxy on exit");
85118
Program.updateSystemProxy();
86119
Debug.WriteLine("wait quit");
87120
Program._resetEvent.WaitOne();
88-
Program.proxyIsOn = true; // recover proxy state
121+
Program.coreLoaded = true; // recover proxy state
89122
}
90123
Application.Exit();
91124
}
92125

93126
private void helpToolStripMenuItem_Click(object sender, EventArgs e)
94127
{
95-
Process.Start("http://v2ray.com");
128+
Process.Start("https://v2ray.com");
96129
}
97130

98131
private void notifyIconMain_MouseDoubleClick(object sender, MouseEventArgs e)
@@ -102,30 +135,56 @@ private void notifyIconMain_MouseDoubleClick(object sender, MouseEventArgs e)
102135

103136
private void startStopToolStripMenuItem_Click(object sender, EventArgs e)
104137
{
105-
Program.proxyIsOn = !Program.proxyIsOn;
106-
Program.updateSystemProxy();
107-
this.updateMenu();
138+
if(!Program.coreLoaded && Program.proxyMode != 3)
139+
{
140+
Program.backUpProxy();
141+
}
142+
if(Program.coreLoaded && Program.proxyMode != 3)
143+
{
144+
Program.restoreProxy();
145+
}
146+
Program.coreLoaded = !Program.coreLoaded;
147+
Program.configurationDidChange();
108148
}
109149

110150
private void v2RayRulesToolStripMenuItem_Click(object sender, EventArgs e)
111151
{
112-
Program.proxyMode = 0;
113-
this.updateMenu();
114-
Program.updateSystemProxy();
152+
if (Program.coreLoaded && Program.proxyMode == 3)
153+
{
154+
Program.backUpProxy();
155+
}
156+
Program.proxyMode = Program.RULES_MODE;
157+
Program.configurationDidChange();
115158
}
116159

117160
private void pacModeToolStripMenuItem_Click(object sender, EventArgs e)
118161
{
119-
Program.proxyMode = 1;
120-
this.updateMenu();
121-
Program.updateSystemProxy();
162+
if (Program.coreLoaded && Program.proxyMode == 3)
163+
{
164+
Program.backUpProxy();
165+
}
166+
Program.proxyMode = Program.PAC_MODE;
167+
Program.configurationDidChange();
122168
}
123169

124170
private void globalModeToolStripMenuItem_Click(object sender, EventArgs e)
125171
{
126-
Program.proxyMode = 2;
127-
this.updateMenu();
128-
Program.updateSystemProxy();
172+
if (Program.coreLoaded && Program.proxyMode == 3)
173+
{
174+
Program.backUpProxy();
175+
}
176+
Program.proxyMode = Program.GLOBAL_MODE;
177+
Program.configurationDidChange();
178+
}
179+
180+
private void manualModeToolStripMenuItem_Click(object sender, EventArgs e)
181+
{
182+
if(Program.coreLoaded && Program.proxyMode != 3)
183+
{
184+
Program.restoreProxy();
185+
}
186+
Program.proxyMode = Program.MANUAL_MODE;
187+
Program.configurationDidChange();
129188
}
130189

131190
internal void viewLogToolStripMenuItem_Click(object sender, EventArgs e)
@@ -136,13 +195,6 @@ internal void viewLogToolStripMenuItem_Click(object sender, EventArgs e)
136195
outputForm.Show();
137196
}
138197
outputForm.Focus();
139-
/*
140-
if(Program.proxyIsOn)
141-
{
142-
startStopToolStripMenuItem_Click(sender,e);
143-
}
144-
System.Threading.Thread.Sleep(500);
145-
MessageBox.Show(Program.v2rayoutput);*/
146198
}
147199
}
148200
}

0 commit comments

Comments
 (0)