private void btnNew_Click(object sender, EventArgs e) { DialogResult dr = DlgOptionsProxyGroup.Instance.ShowDialog( this, new ProxyGroup()); if (dr == DialogResult.OK) { ProxyGroup pg = new ProxyGroup(DlgOptionsProxyGroup.Instance.DlgProxyGroup); ListViewItem item = CreateListViewItem(pg); if (lvProxyGroups.SelectedItems.Count <= 0) { // add to the tail m_dlgProfile.m_listProxyGroups.Add(pg); lvProxyGroups.Items.Add(item); } else { // insert at current selected item int idx = lvProxyGroups.SelectedItems[0].Index; m_dlgProfile.m_listProxyGroups.Insert(idx, pg); lvProxyGroups.Items.Insert(idx, item); } item.Selected = true; } lvProxyGroups.Focus(); }
public ProxyGroup(ProxyGroup pg) { m_szName = pg.m_szName; m_isEnabled = pg.m_isEnabled; m_iSelectedIndex = pg.m_iSelectedIndex; m_applyRule = new ApplyRule(pg.m_applyRule); m_listProxyItems = new List <ProxyItem>(pg.m_listProxyItems); }
public DialogResult ShowDialog(IWin32Window owner, ProxyGroup pg) { Logger.V(">> DlgOptionsProxyGroup.ShowDialog"); m_bExitByOK = false; SetDialogLayout(pg); DialogResult dr = ShowDialog(owner); Logger.V("<< DlgOptionsProxyGroup.ShowDialog : " + dr.ToString()); return dr; }
private ProxyItem FindMatchedProxyItem() { Logger.V(">> AppManager.FindMatchedProxyItem"); ProxyItem ret = null; for (int i = 0; i < m_profile.m_listProxyGroups.Count; ++i) { ProxyGroup pg = m_profile.m_listProxyGroups[i]; if (!pg.m_isEnabled) { continue; } if (!IsRuleMatched(pg.m_applyRule)) { continue; } if (pg.m_iSelectedIndex <= 0 || pg.m_iSelectedIndex > pg.m_listProxyItems.Count) { // reset the invalid SelectedIndex value pg.m_iSelectedIndex = 0; } else if (pg.m_listProxyItems[pg.m_iSelectedIndex - 1].m_isEnabled) { // directly get the specified selected proxy item ret = pg.m_listProxyItems[pg.m_iSelectedIndex - 1]; m_idxProxyGroup = i; break; } // try to get the proxy item by default routine for (int j = 0; j < pg.m_listProxyItems.Count; ++j) { ProxyItem pi = pg.m_listProxyItems[j]; if (pi.m_isEnabled) { ret = pi; pg.m_iSelectedIndex = j + 1; m_idxProxyGroup = i; break; } } if (ret != null) { break; } else { pg.m_iSelectedIndex = 0; } } Logger.V("<< AppManager.FindMatchedProxyItem"); return(ret); }
public DialogResult ShowDialog(IWin32Window owner, ProxyGroup pg) { Logger.V(">> DlgOptionsProxyGroup.ShowDialog"); m_bExitByOK = false; SetDialogLayout(pg); DialogResult dr = ShowDialog(owner); Logger.V("<< DlgOptionsProxyGroup.ShowDialog : " + dr.ToString()); return(dr); }
private ListViewItem CreateListViewItem(ProxyGroup pg) { ListViewItem item = new ListViewItem(); item.Text = pg.m_szName; item.SubItems.Add(new ListViewItem.ListViewSubItem(item, (pg.m_isEnabled ? "Enable" : "Disable"))); item.SubItems.Add(new ListViewItem.ListViewSubItem(item, (pg.m_listProxyItems == null ? "0" : pg.m_listProxyItems.Count.ToString()))); return(item); }
private void UserRequest_SelectProxyFromCurrentGroup(object sender, EventArgs e) { Logger.V(">> FormMain.UserRequest_SelectProxyFromCurrentGroup"); var mi = sender as MenuItem; ProxyGroup pg = m_appManagerRef.AppProfile.m_listProxyGroups[ m_appManagerRef.AutoModeProxyGroupIndex]; pg.m_iSelectedIndex = mi.Index + 1; ProxyItem pi = pg.m_listProxyItems[pg.m_iSelectedIndex - 1]; Logger.I("UserRequest :: Select proxy item from the current group (" + pi.m_szProxyAddr + ")."); m_appManagerRef.EnableProxy(pi); Profile.Save(m_appManagerRef.AppProfile); Logger.V("<< FormMain.UserRequest_SelectProxyFromCurrentGroup"); }
private void EditProxyGroup(ListViewItem item) { ProxyGroup pg = m_dlgProfile.m_listProxyGroups[item.Index]; DialogResult dr = DlgOptionsProxyGroup.Instance.ShowDialog(this, pg); if ((dr == DialogResult.OK) && (!pg.Equals(DlgOptionsProxyGroup.Instance.DlgProxyGroup))) { m_dlgProfile.m_listProxyGroups[item.Index] = new ProxyGroup( DlgOptionsProxyGroup.Instance.DlgProxyGroup); pg = m_dlgProfile.m_listProxyGroups[item.Index]; item.SubItems[0].Text = pg.m_szName; item.SubItems[1].Text = (pg.m_isEnabled ? "Enable" : "Disable"); item.SubItems[2].Text = (pg.m_listProxyItems == null ? "0" : pg.m_listProxyItems.Count.ToString()); } }
private void btnDown_Click(object sender, EventArgs e) { if (HasListViewItemSelected()) { int idx = lvProxyGroups.SelectedItems[0].Index; if (idx < lvProxyGroups.Items.Count - 1) { ProxyGroup pg = m_dlgProfile.m_listProxyGroups[idx]; m_dlgProfile.m_listProxyGroups.RemoveAt(idx); m_dlgProfile.m_listProxyGroups.Insert(idx + 1, pg); ListViewItem item = lvProxyGroups.Items[idx]; lvProxyGroups.Items.RemoveAt(idx); lvProxyGroups.Items.Insert(idx + 1, item); } } lvProxyGroups.Focus(); }
private void SetDialogLayout(ProxyGroup pg) { if (pg != null) { m_dlgProxyGroup = new ProxyGroup(pg); } else { m_dlgProxyGroup = new ProxyGroup(); } // proxy group name tbName.Text = m_dlgProxyGroup.m_szName; // proxy group enable/disable cbEnable.Checked = m_dlgProxyGroup.m_isEnabled; // proxy group items dgvProxyItems.Rows.Clear(); if (m_dlgProxyGroup.m_listProxyItems != null) { foreach (ProxyItem pi in m_dlgProxyGroup.m_listProxyItems) { int idx = dgvProxyItems.Rows.Add(); dgvProxyItems.Rows[idx].Cells[IDX_IS_ENABLED].Value = pi.m_isEnabled; dgvProxyItems.Rows[idx].Cells[IDX_PROXY_ADDR].Value = pi.m_szProxyAddr; dgvProxyItems.Rows[idx].Cells[IDX_BYPASS].Value = pi.m_szBypass; } } // proxy group apply rule if (m_dlgProxyGroup.m_applyRule == null) { m_dlgProxyGroup.m_applyRule = new ApplyRule(); } // filter network adapter id cbFilterId.Checked = m_dlgProxyGroup.m_applyRule.m_bIdFilter; tbFilterId.Text = m_dlgProxyGroup.m_applyRule.m_szIdFilter; tbFilterId.Enabled = cbFilterId.Checked; // filter network adapter name cbFilterName.Checked = m_dlgProxyGroup.m_applyRule.m_bNameFilter; tbFilterName.Text = m_dlgProxyGroup.m_applyRule.m_szNameFilter; tbFilterName.Enabled = cbFilterName.Checked; // filter ip addr cbFilterIpAddr.Checked = m_dlgProxyGroup.m_applyRule.m_bIpAddrFilter; tbFilterIpAddr.Text = m_dlgProxyGroup.m_applyRule.m_szIpAddrFilter; tbFilterIpAddr.Enabled = cbFilterIpAddr.Checked; // filter subnet mask cbFilterMask.Checked = m_dlgProxyGroup.m_applyRule.m_bSubMaskFilter; tbFilterMask.Text = m_dlgProxyGroup.m_applyRule.m_szSubMaskFilter; tbFilterMask.Enabled = cbFilterMask.Checked; // filter gateway cbFilterGateway.Checked = m_dlgProxyGroup.m_applyRule.m_bGatewayFilter; tbFilterGateway.Text = m_dlgProxyGroup.m_applyRule.m_szGatewayFilter; tbFilterGateway.Enabled = cbFilterGateway.Checked; // filter dns addr cbFilterDns.Checked = m_dlgProxyGroup.m_applyRule.m_bDnsAddrFilter; tbFilterDns.Text = m_dlgProxyGroup.m_applyRule.m_szDnsAddrFilter; tbFilterDns.Enabled = cbFilterDns.Checked; // filter dns suffix cbFilterDnsSuffix.Checked = m_dlgProxyGroup.m_applyRule.m_bDnsSuffixFilter; tbFilterDnsSuffix.Text = m_dlgProxyGroup.m_applyRule.m_szDnsSuffixFilter; tbFilterDnsSuffix.Enabled = cbFilterDnsSuffix.Checked; }
private ListViewItem CreateListViewItem(ProxyGroup pg) { ListViewItem item = new ListViewItem(); item.Text = pg.m_szName; item.SubItems.Add(new ListViewItem.ListViewSubItem(item, (pg.m_isEnabled ? "Enable" : "Disable"))); item.SubItems.Add(new ListViewItem.ListViewSubItem(item, (pg.m_listProxyItems == null ? "0" : pg.m_listProxyItems.Count.ToString()))); return item; }
private void UpdateGui_NotifyIconMenuProxySelection() { switch (m_appManagerRef.CurrWorkMode) { case WorkMode.Auto: { if (!IeProxyOptions.ProxyEnable) { // fall through goto case WorkMode.Direct; } ProxyGroup pg = m_appManagerRef.AppProfile.m_listProxyGroups[ m_appManagerRef.AutoModeProxyGroupIndex]; MenuItem[] mis = new MenuItem[pg.m_listProxyItems.Count]; for (int i = 0; i < pg.m_listProxyItems.Count; ++i) { mis[i] = new MenuItem(pg.m_listProxyItems[i].m_szProxyAddr); if (!pg.m_listProxyItems[i].m_isEnabled) { mis[i].Enabled = false; } else { mis[i].Click += new System.EventHandler( UserRequest_SelectProxyFromCurrentGroup); } mis[i].Checked = false; mis[i].RadioCheck = true; } mis[pg.m_iSelectedIndex - 1].Checked = true; m_arrayMenuItems[m_idxNiCtxProxySelection] = new MenuItem( "Select Proxy from Group", mis); notifyIcon.ContextMenu = new ContextMenu(m_arrayMenuItems); break; } case WorkMode.Direct: { m_arrayMenuItems[m_idxNiCtxProxySelection] = new MenuItem( "Select Proxy: N/A"); m_arrayMenuItems[m_idxNiCtxProxySelection].Enabled = false; notifyIcon.ContextMenu = new ContextMenu(m_arrayMenuItems); break; } case WorkMode.Proxy: { string proxyAddr = IeProxyOptions.ProxyAddr; string bypass = IeProxyOptions.Bypass; bool autoConfDisabled = IeProxyOptions.AutoConfDisabled; bool found = false; List <ProxyGroup> listPg = m_appManagerRef.AppProfile.m_listProxyGroups; MenuItem[] misPg = new MenuItem[listPg.Count]; for (int i = 0; i < listPg.Count; ++i) { List <ProxyItem> listPi = listPg[i].m_listProxyItems; MenuItem[] mis; if (listPi.Count > 0) { mis = new MenuItem[listPi.Count]; for (int j = 0; j < listPi.Count; ++j) { mis[j] = new MenuItem(listPi[j].m_szProxyAddr, UserRequest_SelectProxyFromPool); mis[j].Checked = false; mis[j].RadioCheck = true; if (!found && listPi[j].m_szProxyAddr.Equals(proxyAddr) && listPi[j].m_szBypass.Equals(bypass) && listPi[j].m_isAutoConfDisabled.Equals(autoConfDisabled)) { mis[j].Checked = true; found = true; } } } else { mis = new MenuItem[1]; mis[0] = new MenuItem("(N/A)"); mis[0].Enabled = false; } misPg[i] = new MenuItem(listPg[i].m_szName, mis); } m_arrayMenuItems[m_idxNiCtxProxySelection] = new MenuItem( "Select Proxy from Pool", misPg); notifyIcon.ContextMenu = new ContextMenu(m_arrayMenuItems); break; } } }
public ProxyGroup(ProxyGroup pg) { m_szName = pg.m_szName; m_isEnabled = pg.m_isEnabled; m_iSelectedIndex = pg.m_iSelectedIndex; m_applyRule = new ApplyRule(pg.m_applyRule); m_listProxyItems = new List<ProxyItem>(pg.m_listProxyItems); }