⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proxylist.cpp

📁 1.MyIE开源工程协议 MyIE开源工程遵循GNU通用公共许可证GPL(GNU General Public License)开发,任何人都可以永久免费安装使用,在你下载和使用MyIE源代码前,请
💻 CPP
字号:
// ProxyCategories.cpp: implementation of the CProxyCategories class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MyIE.h"
#include "ProxyList.h"
#include "MainFrm.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CProxyItem::CProxyItem()
{
	index = -1;
}

CProxyItem::~CProxyItem()
{

}

CProxyList::CProxyList()
{
	m_bIsTransProxy = FALSE;
}

CProxyList::~CProxyList()
{
	CProxyItem* pi;
	for (int i=0;i <= m_Proxies.GetUpperBound();i++)
	{
	   pi = m_Proxies.GetAt(i);
	   delete pi;
	}
	m_Proxies.RemoveAll();
}

CProxyCategory::CProxyCategory()
{

}

CProxyCategory::CProxyCategory(CProxyCategory& pc)
{
	Copy(pc);
}


CProxyCategory::~CProxyCategory()
{
	RemoveAll();
}

void CProxyCategory::RemoveAll()
{
	CProxyList* pl;
	for (int i=0;i <= m_ProxyCategory.GetUpperBound();i++)
	{
	   pl = m_ProxyCategory.GetAt(i);
	   delete pl;
	}
	m_ProxyCategory.RemoveAll();
}

CProxyList* CProxyCategory::GetWebProxyList(BOOL bTrans)
{
	CProxyList* pl;
	for (int i=0;i <= m_ProxyCategory.GetUpperBound();i++)
	{
	   pl = m_ProxyCategory.GetAt(i);
	   if((!bTrans && pl->m_bIsWebProxy && !pl->m_bIsTransProxy) || (bTrans && pl->m_bIsTransProxy))
		   return pl;
	}

	return NULL;
}

CProxyList* CProxyCategory::GetProxyServerList()
{
	CProxyList* pl;
	for (int i=0;i <= m_ProxyCategory.GetUpperBound();i++)
	{
	   pl = m_ProxyCategory.GetAt(i);
	   if(!pl->m_bIsWebProxy && !pl->m_bIsTransProxy)
		   return pl;
	}
	return NULL;
}

int CProxyList::Find(LPCSTR proxy)
{
	for (int i=0;i <= m_Proxies.GetUpperBound();i++)
	{
	   if(m_Proxies.ElementAt(i)->m_strProxy == proxy)
		   return i;
	}
	return -1;
}

void CProxyList::Add(LPCSTR proxy, LPCSTR name, int speed)
{
	try{
	CProxyItem* pi;
	pi = new CProxyItem;
	pi->m_nProxySpeed = speed;
	pi->m_strProxy = proxy;
	pi->m_strProxyName = name;
	m_Proxies.Add(pi);
	}catch(...){}
}

void CProxyCategory::LoadProxies()
{
	char *tmp = NULL;
	m_ProxyCategory.RemoveAll();
	CString filename = theApp.m_strUser+"Proxy.ini";
	TCHAR buf[1024];
	CProxyList* pl;
	CProxyItem *pi;
	CString wp;
	CString wpn;

	int rlens = ::GetPrivateProfileString("Proxy", "CategoryName", _T(""), buf, 1024, filename);
	if(rlens>0)
	{
		//load new one
		char Keyname1[11] = "proxy", Keyname2[11] = "speed", Keyname3[11] = "alias";
		int sp, i, l=1;
		char Section[10]="Proxy";
		do{
			i=1;
			sp = ::GetPrivateProfileInt(Section, "speed1", 3, filename);
			::GetPrivateProfileString(Section, "alias1", _T(""), buf, 1024, filename);
			wpn = buf;
			::GetPrivateProfileString(Section, "proxy1", _T(""), buf, 1024, filename);
			wp = buf;
			pl = new CProxyList;
			while(wp != "" && !wp.IsEmpty())
			{
				pi = new CProxyItem;
				pi->m_nProxySpeed = sp;
				pi->m_strProxy = wp;
				pi->m_strProxyName = wpn;
				pl->m_Proxies.Add(pi);
				i++;
				itoa(i, Keyname1+5, 10);
				itoa(i, Keyname2+5, 10);
				itoa(i, Keyname3+5, 10);
				sp = ::GetPrivateProfileInt(Section, Keyname2, 3, filename);
				::GetPrivateProfileString(Section, Keyname3, _T(""), buf, 1024, filename);
				wpn = buf;
				::GetPrivateProfileString(Section, Keyname1, _T(""), buf, 1024, filename);
				wp = buf;
			}
			::GetPrivateProfileString(Section, "ProxyByPass",	pmf->m_strProxyByPass, buf, 1024, filename);
			pl->m_strProxyByPass = buf;
			pl->m_bIsWebProxy = ::GetPrivateProfileInt(Section, "ProxyType", 0, filename);
			pl->m_bIsTransProxy = ::GetPrivateProfileInt(Section, "Translation", 0, filename);
			::GetPrivateProfileString(Section, "CategoryName", NULL,buf, 1024, filename);
			pl->m_strCategoryName = buf;

			m_ProxyCategory.Add(pl);

			itoa(l, Section+5, 10);
			l++;
			rlens = ::GetPrivateProfileString(Section, "CategoryName", NULL,buf, 1024, filename);

		}while(rlens>0);
	}

	if(GetWebProxyList()==NULL)
	{
		CString str;
		LOADSTR(str ,IDS_WEB_PROXY);

		pl = new CProxyList;
		pl->m_strProxyByPass = "";
		pl->m_bIsWebProxy = TRUE;
		pl->m_strCategoryName = str;
		m_ProxyCategory.Add(pl);
	}
	if(GetWebProxyList(TRUE)==NULL)
	{
		CString str;
		LOADSTR(str ,IDS_TRANS_PROXY);

		pl = new CProxyList;
		pl->m_strProxyByPass = "";
		pl->m_bIsWebProxy = TRUE;
		pl->m_bIsTransProxy = TRUE;
		pl->m_strCategoryName = str;
		m_ProxyCategory.Add(pl);
	}
	if(GetProxyServerList()==NULL)
	{
		CString str;
		LOADSTR(str ,IDS_PROXY_SERVER);
		
		pl = new CProxyList;
		pl->m_strProxyByPass = "<local>";
		pl->m_bIsWebProxy = FALSE;
		pl->m_bIsTransProxy = FALSE;
		pl->m_strCategoryName = str;
		m_ProxyCategory.Add(pl);
	}
}

void CProxyCategory::SaveProxies()
{
	int i = 1;
	char Keyname1[11]="proxy", Keyname2[11]="speed", Keyname3[11]="alias";
	CProxyItem *pi;
	CProxyList* pl;

	CString filename = theApp.m_strUser+"Proxy.ini";
	remove(filename);//!!

	char num[10];
	char Section[10]="Proxy";
	int l=0;
	for (i=0;i <= m_ProxyCategory.GetUpperBound();i++)
	{
	   pl = m_ProxyCategory.GetAt(i);
	   if(pl!=NULL)
	   {
			if(l>0)
			   itoa(l, Section+5, 10);
			WritePrivateProfileSection(Section, NULL, filename);
			for(int ii=0; ii<=pl->m_Proxies.GetUpperBound(); ii++)
			{
				pi = pl->m_Proxies.ElementAt(ii);
				itoa(ii+1, Keyname1+5, 10);
				//app->WriteProfileString(Section, Keyname1, pi->m_strProxy);
				::WritePrivateProfileString(Section, Keyname1, pi->m_strProxy, filename);
				itoa(ii+1, Keyname2+5, 10);
				itoa(pi->m_nProxySpeed, num, 10);
				::WritePrivateProfileString(Section, Keyname2, num, filename);
				itoa(ii+1, Keyname3+5, 10);
				::WritePrivateProfileString(Section, Keyname3, pi->m_strProxyName, filename);
			}
			::WritePrivateProfileString(Section, "CategoryName", pl->m_strCategoryName, filename);
			::WritePrivateProfileString(Section, "ProxyByPass", pl->m_strProxyByPass, filename);
			itoa(pl->m_bIsWebProxy, num, 10);
			::WritePrivateProfileString(Section, "ProxyType",  num, filename);
			itoa(pl->m_bIsTransProxy, num, 10);
			::WritePrivateProfileString(Section, "Translation",  num, filename);
			l++;
		}
	}
}

CProxyItem* CProxyCategory::FindIndex(int index, CProxyList** plist, int* item)
{
	CProxyList* pl;
	CProxyItem* pi;
	int l;
	for (int i=0;i <= m_ProxyCategory.GetUpperBound();i++)
	{
	   pl = m_ProxyCategory.GetAt(i);
	   if((l=pl->FindIndex(index))>=0)
	   {
			pi = pl->m_Proxies.GetAt(l);
			break;
	   }
	}
	*plist = pl;
	*item = i;
	return pi;
}

int CProxyList::FindIndex(int index)
{
	for (int i=0;i <= m_Proxies.GetUpperBound();i++)
	{
	   if(m_Proxies.ElementAt(i)->index == index)
		   return i;
	}
	return -1;
}


void CProxyCategory::Copy(CProxyCategory &pc)
{
	RemoveAll();

	CProxyList* pl, *plcopy;
	CProxyItem *pi;
	for (int i=0;i <= pc.m_ProxyCategory.GetUpperBound();i++)
	{
	   pl = pc.m_ProxyCategory.GetAt(i);
	   if(pl!=NULL)
	   {
		   plcopy= new CProxyList;
		   plcopy->m_bIsWebProxy = pl->m_bIsWebProxy;
		   plcopy->m_bIsTransProxy = pl->m_bIsTransProxy;
		   plcopy->m_strCategoryName = pl->m_strCategoryName;
		   plcopy->m_strProxyByPass = pl->m_strProxyByPass;
		   for(int l=0; l<=pl->m_Proxies.GetUpperBound(); l++)
		   {
			   pi = new CProxyItem;
			   pi->index = pl->m_Proxies.GetAt(l)->index;
			   pi->m_nProxySpeed = pl->m_Proxies.GetAt(l)->m_nProxySpeed;
			   pi->m_strProxy = pl->m_Proxies.GetAt(l)->m_strProxy;
			   pi->m_strProxyName = pl->m_Proxies.GetAt(l)->m_strProxyName;
			   plcopy->m_Proxies.Add(pi);
		   }
		   m_ProxyCategory.Add(plcopy);
	   }
	}
}

//#######################################################################
CSearchList::~CSearchList()
{
	Clean();
}

void CSearchList::Clean()
{
	CSearch* item;
	for (int i=0;i <= m_Searchs.GetUpperBound();i++)
	{
	   item = m_Searchs.GetAt(i);
	   delete item;
	}
	m_Searchs.RemoveAll();
}

int CSearchList::Lookup(LPCTSTR key, CString& rValue)
{
	for (int i=0;i <= m_Searchs.GetUpperBound();i++)
	{
	   if(m_Searchs.ElementAt(i)->name == key)
	   {
		   rValue = m_Searchs.ElementAt(i)->url;
		   return i;
	   }
	}
	return -1;
}

int CSearchList::GetIconIndex(int nIndex)
{
	int nCount = 0;
	for (int i=0;i <= m_Searchs.GetUpperBound();i++)
	{
		if(m_Searchs.ElementAt(i)->icon.GetLength())
		{
			if (nCount==nIndex)
				return i;
			nCount++;
		}
	}
	return -1;
}

BOOL CSearchList::LoadSearchList()
{
	m_nIconCount = 0;
	//
	CSearch *item;
	TCHAR key[10];
	CString url, alias, icon;
	int r = TRUE;
	int i = 0,rlens;
	int state ;
	TCHAR buf[1024];
	CString filename = theApp.m_strUser+"SearchEngine.ini";
	while(r)
	{
		key[0] = 'N';
		itoa(i, key+1, 10);
		rlens = ::GetPrivateProfileString("SearchEngine", key, _T(""), buf, 1024, filename);
		if(rlens==0)
			r=FALSE;
		else
		{
			alias = buf;
			//
			key[0] = 'S';
			itoa(i, key+1, 10);
			rlens = ::GetPrivateProfileString("SearchEngine", key, _T(""), buf, 1024, filename);
			url = buf;
			//
			key[0] = 'C';//selected
			state = ::GetPrivateProfileInt("SearchEngine", key, 0, filename);
			//
			key[0] = 'I';//icon
			itoa(i, key+1, 10);
			rlens = ::GetPrivateProfileString("SearchEngine", key, _T(""), buf, 1024, filename);
			icon = buf;
			//
			item = new CSearch;
			item->state = state;
			item->name = alias;
			item->url = url;
			item->icon = icon;
			m_Searchs.Add(item);
			if (icon.GetLength())
				m_nIconCount++;
		}
		i++;
	}
	
	return TRUE;
}

//#######################################################################
CLinkList::~CLinkList()
{
	Clean();
}

void CLinkList::Clean()
{
	CLink* item;
	for (int i=0;i <= m_Links.GetUpperBound();i++)
	{
	   item = m_Links.GetAt(i);
	   delete item;
	}
	m_Links.RemoveAll();
}

//#######################################################################
CGestureList::~CGestureList()
{
	Clean();
}

void CGestureList::Clean()
{
	CGesture* item;
	for (int i=0;i <= m_Gestures.GetUpperBound();i++)
	{
	   item = m_Gestures.GetAt(i);
	   delete item;
	}
	m_Gestures.RemoveAll();
}

int CGestureList::GetCmdFromName(LPCSTR name)
{
	CGesture *item;
	for (int i=0;i <= m_Gestures.GetUpperBound();i++)
	{
		item = m_Gestures.ElementAt(i);
		if( item->gesture == name)
		   return item->command;
	}
	return 0;
}

void CGestureList::SaveGestureList()
{
	CGesture *item;
	TCHAR key[10];
	for (int i=0;i <= m_Gestures.GetUpperBound();i++)
	{
		item = m_Gestures.ElementAt(i);
		key[0] = 'N';
		itoa(i, key+1, 10);
		theApp.WriteProfileString("MouseGesture", key, item->gesture);
		//
		key[0] = 'C';
		itoa(i, key+1, 10);
		theApp.WriteProfileInt("MouseGesture", key, item->command);
	}
	//
	key[0] = 'N';
	itoa(i, key+1, 10);
	theApp.WriteProfileString("MouseGesture", key, "");
}

BOOL CGestureList::LoadGestureList()
{
	CGesture *item;
	TCHAR key[10];
	CString strName;
	int command;
	int i=0;
	
	while(1)
	{
		key[0] = 'N';
		itoa(i, key+1, 10);
		strName = theApp.GetProfileString("MouseGesture", key, "");
		if (strName.GetLength()<1)
			break;
		key[0] = 'C';
		itoa(i, key+1, 10);
		command = theApp.GetProfileInt("MouseGesture", key, 0);
		//
		item = new CGesture;
		item->gesture = strName;
		item->command = command;
		m_Gestures.Add(item);
		i++;
	}

	return TRUE;
}
//#######################################################################
CFavIconList::~CFavIconList()
{
	Clean();
}

void CFavIconList::Clean()
{
	CFavIcon* item;
	for (int i=0;i <= m_FavIcons.GetUpperBound();i++)
	{
		item = m_FavIcons.GetAt(i);
		delete item;
	}
	m_FavIcons.RemoveAll();
}

int CFavIconList::Find(LPCSTR strRoot)
{
	CFavIcon* item;
	int nCount = m_FavIcons.GetSize();
	for (int i=0;i < nCount; i++)
	{
		item = m_FavIcons.GetAt(i);
		if (item->strRoot==strRoot)
			return item->nIcon;
	}
	return FI_NOT_IN_LIST;
}

void CFavIconList::Insert(LPCSTR strRoot, int nIcon)
{
	CFavIcon* item;
	int nCount = m_FavIcons.GetSize();
	for (int i=0;i < nCount; i++)
	{
		item = m_FavIcons.GetAt(i);
		if (item->strRoot==strRoot)
		{
			item->nIcon = nIcon;
			return;
		}
	}
	//inser new
	try{
	item = new CFavIcon;
	item->strRoot = strRoot;
	item->nIcon = nIcon;
	m_FavIcons.Add(item);
	}catch(...){}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -