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

📄 quicksearchdlg.cpp

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

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

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


//#pragma optimize( "s", on )

#define INVALID_SEARCH_ENGINE(url,alias)		(url.Find("%s")<0 && alias!="--" && url.Find("%u")<0)
/////////////////////////////////////////////////////////////////////////////
// CQuickSearchDlg dialog


CQuickSearchDlg::CQuickSearchDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CQuickSearchDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CQuickSearchDlg)
	//}}AFX_DATA_INIT
}


void CQuickSearchDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CQuickSearchDlg)
	DDX_Control(pDX, IDC_ICON_PATH, m_cIcon);
	DDX_Control(pDX, IDC_SEARCHENGINE, m_cSearchEngine);
	DDX_Control(pDX, IDC_NAME, m_cName);
	DDX_Control(pDX, IDC_SEACHLIST, m_EngineList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CQuickSearchDlg, CDialog)
	//{{AFX_MSG_MAP(CQuickSearchDlg)
	ON_BN_CLICKED(IDC_UPDATE, OnUpdate)
	ON_BN_CLICKED(IDC_INSERT, OnInsert)
	ON_BN_CLICKED(IDC_DELETE, OnDelete)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_SEACHLIST, OnItemchangedSeachlist)
	ON_BN_CLICKED(IDC_CLEAN, OnClean)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN, OnDeltaposSpin)
	ON_BN_CLICKED(IDC_GET_ICON, OnGetIcon)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CQuickSearchDlg message handlers

BOOL CQuickSearchDlg::OnInitDialog() 
{
	LOADDLG("DialogSearch");
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_EngineList.SetExtendedStyle(m_EngineList.GetExtendedStyle()| LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES);

	//setup list ctrl
	CRect rect;
	int i=0;
	m_bUpdating = FALSE;
	CString str;
	LOADSTR(str ,IDS_NAME);
	m_EngineList.InsertColumn(0,str);
	m_EngineList.GetWindowRect(rect);
	m_EngineList.SetColumnWidth(0, 120);
	//
	LOADSTR(str ,IDS_SEARCH_ENGINE);
	m_EngineList.InsertColumn(1,str);
	m_EngineList.SetColumnWidth(1, rect.Width()-200);
	//
	LOADSTR(str ,IDS_ICON);
	m_EngineList.InsertColumn(2,str);
	m_EngineList.SetColumnWidth(2, 50);

	CSearch *item;
	for(i=0;i<=pmf->m_SearchList.m_Searchs.GetUpperBound();i++)
	{
		item = pmf->m_SearchList.m_Searchs.GetAt(i);
		m_EngineList.InsertItem(i, item->name);
		m_EngineList.SetItemText(i, 1, item->url);
		m_EngineList.SetItemText(i, 2, item->icon);
		m_EngineList.SetCheck(i,item->state);
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CQuickSearchDlg::OnOK() 
{
	// TODO: Add extra validation here
	OnUpdate();
	//
	pmf->m_SearchList.Clean();
	//
	CSearch *ps;
	int n = m_EngineList.GetItemCount();
	pmf->m_SearchList.m_nIconCount = 0;
	for( int i=0; i<n; i++)
	{
		ps = new CSearch;
		ps->state = m_EngineList.GetCheck(i);
		ps->name = m_EngineList.GetItemText(i,0);
		ps->url  = m_EngineList.GetItemText(i,1);
		ps->icon = m_EngineList.GetItemText(i,2);
		pmf->m_SearchList.m_Searchs.Add(ps);
		if (ps->icon.GetLength())
			pmf->m_SearchList.m_nIconCount++;
	}

	CDialog::OnOK();
}

void CQuickSearchDlg::OnUpdate()
{
	// TODO: Add your control notification handler code here
	POSITION pos = m_EngineList.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int i = m_EngineList.GetNextSelectedItem(pos);
		CString alias;
		m_cName.GetWindowText(alias);
		alias.TrimLeft(); alias.TrimRight();
		CString url;
		m_cSearchEngine.GetWindowText(url);
		url.TrimLeft();
		if (alias.GetLength()<1 || url.GetLength()<2)
			return;
		CString icon;
		m_cIcon.GetWindowText(icon);

		if(INVALID_SEARCH_ENGINE(url,alias))
		{
			MSGBOX(IDS_NEEDKEYSTRING);
			return;
		}

		if(!alias.IsEmpty() && !url.IsEmpty() || alias=="--" )
		{
			m_bUpdating = TRUE;
			m_EngineList.SetItemText(i, 0, alias);
			m_EngineList.SetItemText(i, 1, url);
			m_EngineList.SetItemText(i, 2, icon);
		}
	}	
}

void CQuickSearchDlg::OnInsert() 
{
	// TODO: Add your control notification handler code here
	CString alias;
	m_cName.GetWindowText(alias);
	CString url;
	m_cSearchEngine.GetWindowText(url);
	CString icon;
	m_cIcon.GetWindowText(icon);
	
	if(INVALID_SEARCH_ENGINE(url,alias))
	{
		MSGBOX(IDS_NEEDKEYSTRING);
		return;
	}

	alias.TrimLeft(); alias.TrimRight();
	url.TrimLeft();

	int count = m_EngineList.GetItemCount();
	CString existAlias;
	for (int i=0;i<count;i++)
	{
		existAlias = m_EngineList.GetItemText(i,0);
		if (existAlias==alias && alias!="--")
		{
			MSGBOX(IDS_NAME_EXISTED);
			return;
		}
	}
	//
	if(!alias.IsEmpty() && !url.IsEmpty() || alias=="--")
	{
		int item; LIST_GET_INSERT_POS(m_EngineList,&item);
		m_EngineList.InsertItem(item, alias);
		m_EngineList.SetItemText(item, 1, url);
		m_EngineList.SetItemText(item, 2, icon);
		LIST_FOCUS_POS(m_EngineList, item);
		//
		m_cName.SetWindowText("");
		m_cSearchEngine.SetWindowText("");
		m_cIcon.SetWindowText("");
	}
}

void CQuickSearchDlg::OnDelete() 
{
	// TODO: Add your control notification handler code here
	POSITION pos = m_EngineList.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int i = m_EngineList.GetNextSelectedItem(pos);
		m_EngineList.DeleteItem(i);
		//
		LIST_FOCUS_POS(m_EngineList,i);
	}
}

void CQuickSearchDlg::OnItemchangedSeachlist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(m_bUpdating)
	{
		m_bUpdating = FALSE;
		return;
	}

	int i, nIndex = pNMListView->iItem;
	POSITION pos = m_EngineList.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		i = m_EngineList.GetNextSelectedItem(pos);
	}
	if(nIndex==i)
	{
		m_cName.SetWindowText(m_EngineList.GetItemText(nIndex,0));
		m_cSearchEngine.SetWindowText(m_EngineList.GetItemText(nIndex,1));
		m_cIcon.SetWindowText(m_EngineList.GetItemText(nIndex,2));
	}
	else
	{
		m_cName.SetWindowText("");
		m_cSearchEngine.SetWindowText("");
		m_cIcon.SetWindowText("");
	}

	*pResult = 0;
}

//#pragma optimize( "s", off)

void CQuickSearchDlg::OnClean() 
{
	// TODO: Add your control notification handler code here
	m_cName.SetWindowText("");
	m_cSearchEngine.SetWindowText("");
	m_cIcon.SetWindowText("");
}

void CQuickSearchDlg::OnDeltaposSpin(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
	// TODO: Add your control notification handler code here
	POSITION pos = m_EngineList.GetFirstSelectedItemPosition();
	int nItem = -1, newItem;
	if(pos!=NULL)
	{
		nItem = m_EngineList.GetNextSelectedItem(pos);
		if(pNMUpDown->iDelta<0)
			newItem = nItem -1;
		else
			newItem = nItem + 1;
		int n = m_EngineList.GetItemCount();
		if(newItem>=0 && newItem<n)
		{
			CString alias = m_EngineList.GetItemText(nItem,0);
			CString url = m_EngineList.GetItemText(nItem, 1);
			CString icon = m_EngineList.GetItemText(nItem, 2);
			BOOL	bState = m_EngineList.GetCheck(nItem);
			m_EngineList.DeleteItem(nItem);

			m_EngineList.InsertItem(newItem, alias);
			m_EngineList.SetItemText(newItem, 1, url);
			m_EngineList.SetItemText(newItem, 2, icon);
			m_EngineList.SetCheck(newItem, bState);
			//
			LIST_FOCUS_POS(m_EngineList,newItem);
		}
	}
	
	*pResult = 0;
}

void CQuickSearchDlg::OnGetIcon() 
{
	// TODO: Add your control notification handler code here
	CString str;
	LOADSTR(str ,IDS_TYPE_ICON);
	CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, str);
	if(fileDlg.DoModal() == IDOK)
		m_cIcon.SetWindowText(fileDlg.GetPathName());
}

⌨️ 快捷键说明

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