www.pudn.com > CraftFTP_gb.rar > ConnectDialog.cpp


// ConnectDialog.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "CraftFTP.h" 
#include "ProfilePage.h" 
#include "ConnectDialog.h" 
#include "PropertySheetExt.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CConnectDialog dialog 
 
const DWORD CConnectDialog::m_nHelpIDs[] = 
{ 
	IDC_COMBO_HOST,			HIDC_COMBO_HOST, 
	IDC_EDIT_FTPPORT,		HIDC_EDIT_FTPPORT, 
	IDC_SPIN_FTPPORT,		HIDC_SPIN_FTPPORT, 
	IDC_EDIT_REMOTEPATH,	HIDC_EDIT_REMOTEPATH, 
	IDC_EDIT_USERNAME,		HIDC_EDIT_USERNAME, 
	IDC_EDIT_PASSWORD,		HIDC_EDIT_PASSWORD, 
	IDC_CHECK_ANONYMOUS,	HIDC_CHECK_ANONYMOUS, 
	IDC_BUTTON_ADDTO_FAVORITES,	HIDC_BUTTON_ADDTO_FAVORITES, 
	0 , 0 
}; 
 
CConnectDialog::CConnectDialog(CWnd* pParent /*=NULL*/) 
	: CDialogEx(CConnectDialog::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CConnectDialog) 
	m_szHostName	=	_T(""); 
	m_szPassWord	=	_T(""); 
	m_szUserName	=	_T("anonymous"); 
	m_bAnonymous	=	FALSE; 
	m_szRemotePath	=	_T("/"); 
	m_nPort			=	21; 
	//}}AFX_DATA_INIT 
	m_bAnonymous	=	TRUE; 
} 
 
void CConnectDialog::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialogEx::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CConnectDialog) 
	DDX_Control(pDX, IDC_COMBO_HOST, m_wndHostBox); 
	DDX_CBString(pDX, IDC_COMBO_HOST, m_szHostName); 
	DDX_Text(pDX, IDC_EDIT_PASSWORD, m_szPassWord); 
	DDX_Text(pDX, IDC_EDIT_USERNAME, m_szUserName); 
	DDX_Check(pDX, IDC_CHECK_ANONYMOUS, m_bAnonymous); 
	DDX_Text(pDX, IDC_EDIT_REMOTEPATH, m_szRemotePath); 
	DDX_Text(pDX, IDC_EDIT_FTPPORT, m_nPort); 
	DDV_MinMaxUInt(pDX, m_nPort, 1, 65535); 
	//}}AFX_DATA_MAP 
} 
 
BEGIN_MESSAGE_MAP(CConnectDialog, CDialogEx) 
	//{{AFX_MSG_MAP(CConnectDialog) 
	ON_CBN_EDITCHANGE(IDC_COMBO_HOST, OnEditchangeComboHost) 
	ON_BN_CLICKED(IDC_CHECK_ANONYMOUS, OnCheckAnonymous) 
	ON_BN_CLICKED(IDC_BUTTON_ADDTO_FAVORITES, OnButtonAddtoFavorites) 
	ON_CBN_SELCHANGE(IDC_COMBO_HOST, OnSelchangeComboHost) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CConnectDialog message handlers 
 
void CConnectDialog::OnEditchangeComboHost()  
{ 
	// TODO: Add your control notification handler code here 
	UpdateData(); 
 
	CWnd * pBtnOK = GetDlgItem(IDOK); 
	CWnd * pCtrl = GetDlgItem(IDC_BUTTON_ADDTO_FAVORITES); 
 
	if(m_szHostName.IsEmpty()) 
	{ 
		pCtrl->EnableWindow(FALSE); 
		pBtnOK->EnableWindow(FALSE); 
	} 
	else 
	{ 
		pCtrl->EnableWindow(); 
		pBtnOK->EnableWindow(); 
	} 
} 
 
BOOL CConnectDialog::OnInitDialog()  
{ 
	CDialogEx::OnInitDialog(); 
	 
	// TODO: Add extra initialization here 
	CWinApp * theApp = AfxGetApp(); 
 
	//加载历史连接数据 
	UINT nCount = theApp->GetProfileInt(_T("QuickConnect"), _T("Count"), 0); 
	for(UINT i=0; iGetProfileString(_T("QuickConnect"), (LPCTSTR)szText, _T("")); 
		if(!szHost.IsEmpty()) 
			m_wndHostBox.AddString(szHost); 
	} 
 
	//设置控件 
	CSpinButtonCtrl * pCtrl = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_FTPPORT); 
	if(pCtrl) 
	{ 
		pCtrl->SetBuddy(GetDlgItem(IDC_EDIT_FTPPORT)); 
		pCtrl->SetRange32(1, 65535); 
		pCtrl->SetPos(m_nPort); 
	} 
 
	PostMessage(WM_COMMAND, IDC_CHECK_ANONYMOUS); 
	OnEditchangeComboHost(); 
 
	UpdateData(FALSE); 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CConnectDialog::OnCheckAnonymous()  
{ 
	// TODO: Add your control notification handler code here 
	UpdateData(); 
 
	CWinApp * theApp = AfxGetApp(); 
 
	CWnd * pCtrl1 = GetDlgItem(IDC_EDIT_USERNAME); 
	CWnd * pCtrl2 = GetDlgItem(IDC_EDIT_PASSWORD); 
	if(m_bAnonymous) 
	{ 
		m_szUserName = _T("anonymous"); 
		m_szPassWord = theApp->GetProfileString(_T("General"), _T("AnommousEmail"), _T("anonymous@newmoonsoft.com")); 
 
		pCtrl1->EnableWindow(FALSE); 
		pCtrl2->EnableWindow(FALSE); 
	} 
	else 
	{ 
		m_szUserName = _T(""); 
		m_szPassWord = _T(""); 
 
		pCtrl1->EnableWindow(TRUE); 
		pCtrl2->EnableWindow(TRUE); 
		pCtrl1->SetFocus(); 
	} 
 
	UpdateData(FALSE); 
} 
 
void CConnectDialog::OnOK()  
{ 
	// TODO: Add extra validation here 
	CDialogEx::OnOK(); 
 
	CWinApp * theApp = AfxGetApp(); 
 
	//主机地址 
	CString szText = m_szHostName.Left(6); 
	if(szText.CompareNoCase(_T("ftp://"))==0) 
		m_szHostName.Delete(0, 6); 
 
	//用户名与帐号 
	if(m_szUserName.IsEmpty()) 
	{ 
		m_szUserName = _T("anonymous"); 
		m_szPassWord = theApp->GetProfileString(_T("General"), _T("AnommousEmail"), _T("anonymous@newmoonsoft.com")); 
	} 
 
	CStringList szHostList; 
	//加载历史连接数据 
	for(int i=0; iWriteProfileInt(_T("QuickConnect"), _T("Count"), nCount); 
 
	int nIndex = 0; 
	while(!szHostList.IsEmpty()) 
	{ 
		CString szText; 
		szText.Format("Host%d", nIndex++); 
 
		CString szHost = szHostList.RemoveHead(); 
		theApp->WriteProfileString(_T("QuickConnect"), (LPCTSTR)szText, szHost); 
	} 
} 
void CConnectDialog::OnButtonAddtoFavorites()  
{ 
	// TODO: Add your control notification handler code here 
	CProfilePage page; 
 
	page.m_szHostName	=	m_szHostName; 
	page.m_szPassWord	=	m_szPassWord; 
	page.m_szProfilePath=	_T("/"); 
	page.m_szRemotePath	=	m_szRemotePath; 
	page.m_nPort		=	m_nPort; 
 
	CPropertySheetExt sheet("Save"); 
	sheet.AddPage(&page); 
 
	if(sheet.DoModal()==IDOK) 
		PostMessage(WM_COMMAND, IDOK); 
} 
 
void CConnectDialog::OnSelchangeComboHost()  
{ 
	// TODO: Add your control notification handler code here 
	CWnd * pBtnOK = GetDlgItem(IDOK); 
	CWnd * pCtrl = GetDlgItem(IDC_BUTTON_ADDTO_FAVORITES); 
 
	//取连接主机名 
	pBtnOK->GetWindowText(m_szHostName); 
	if(m_szHostName.IsEmpty()) 
	{ 
		pCtrl->EnableWindow(FALSE); 
		pBtnOK->EnableWindow(FALSE); 
	} 
	else 
	{ 
		pCtrl->EnableWindow(); 
		pBtnOK->EnableWindow(); 
	} 
}