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();
}
}