options.cpp
来自「一个支持FTP,SFTP的客户端程序」· C++ 代码 · 共 1,863 行 · 第 1/5 页
CPP
1,863 行
val = _ttoi(str);
error = 0;
}
}
RegCloseKey(key);
}
if (error)
{
memset(buffer,0,100);
if (RegOpenKey(HKEY_LOCAL_MACHINE, _T("Software\\FileZilla") ,&key)==ERROR_SUCCESS)
{
DWORD type;
if (RegQueryValueEx(key, options[nOptionID-1].name, NULL, &type, buffer, &tmp)==ERROR_SUCCESS)
{
if (type == REG_DWORD)
{
if (tmp<=4)
{
memcpy(&val,buffer,tmp);
error=0;
}
}
else
{
int i;
LPTSTR str = (LPTSTR)buffer;
for (i = 0; i < 100; i++)
{
if (!str[i])
break;
}
if (i == 100)
str[99] = 0;
val = _ttoi(str);
error = 0;
}
}
RegCloseKey(key);
}
}
delete [] buffer;
}
switch (nOptionID)
{
case OPTION_PASV:
if (error)
val = 1;
break;
case OPTION_KEEPALIVE:
if (error)
val=1;
break;
case OPTION_INTERVALLOW:
if (val>500)
val=15;
else if (val<15)
val=15;
break;
case OPTION_INTERVALHIGH:
if (val>500)
val=30;
else if (val<15)
val=30;
break;
case OPTION_TIMEOUTLENGTH:
if (val<30)
val=30;
else if (val>999)
val=30;
break;
case OPTION_NUMRETRIES:
if (val<0 || error)
val=5;
else if (val>999)
val=5;
break;
case OPTION_RETRYDELAY:
if (val<0 || error)
val=5;
else if (val>999)
val=5;
break;
case OPTION_DEFAULTFOLDERTYPE:
if (val!=1)
val=0;
break;
case OPTION_TRANSFERMODE:
if (val<0 || val>2)
val=0;
break;
case OPTION_PORTRANGELOW:
if (val<1 || val>65535)
val=1;
break;
case OPTION_PORTRANGEHIGH:
if (val<1 || val>65535)
val=65535;
break;
case OPTION_MAXCACHETIME:
if (val<=0)
val=60*30;
break;
case OPTION_LOCALFILESIZEFORMAT:
if (error || val<0 || val >3)
val=0;
break;
case OPTION_REMOTEFILESIZEFORMAT:
if (error || val<0 || val >3)
val=1;
break;
case OPTION_USECACHE:
if (error)
val=1;
break;
case OPTION_TRANSFERPRIMARYMAXSIZE:
if (error || val < 0 || val > 999999)
val=1024;
break;
case OPTION_TRANSFERAPICOUNT:
if (error || val < 1 || val > 10)
val=2;
break;
case OPTION_TRANSFERUSEMULTIPLE:
if (error)
val=1;
break;
case OPTION_FILEEXISTSACTION:
if (val<0 || val>5)
val=0;
break;
case OPTION_SPEEDLIMIT_DOWNLOAD_VALUE:
case OPTION_SPEEDLIMIT_UPLOAD_VALUE:
if (error || val<=0)
val=10;
break;
case OPTION_SHOWLOCALSTATUSBAR:
case OPTION_SHOWREMOTESTATUSBAR:
if (error)
val = 1;
break;
case OPTION_HIDEREMOTECOLUMNS:
if (error)
val = 0x20;
break;
case OPTION_SSHUSECOMPRESSION:
case OPTION_SSHPROTOCOL:
if (val < 0 || val > 2)
val = 0;
break;
case OPTION_MINIMIZETOTRAY:
if (val < 0 || val > 2)
val = 0;
break;
case OPTION_LOCAL_DOUBLECLICK_ACTION:
case OPTION_REMOTE_DOUBLECLICK_ACTION:
if (val < 0 || val > 2)
val = 0;
break;
case OPTION_LOCALTREEVIEWLOCATION:
case OPTION_REMOTETREEVIEWLOCATION:
if (val < 0 || val > 1)
val = 0;
break;
case OPTION_USEREGISTRY:
if (error || val < 0 || val > 2)
val = -1;
break;
case OPTION_LASTSERVERTRANSFERMODE:
if (error || val < 0 || val > 2)
val = 0;
break;
case OPTION_MESSAGELOG_FONTSIZE:
if (error || val < 1 || val > 72)
val = 0;
break;
case OPTION_MODEZ_USE:
if (error || val < 0 || val > 2)
val = 2;
break;
case OPTION_MODEZ_LEVEL:
if (error || val < 1 || val > 9)
val = 8;
break;
}
if (!m_OptionsCache[nOptionID-1].bCached)
{
m_OptionsCache[nOptionID-1].bCached = TRUE;
m_OptionsCache[nOptionID-1].createtime = CTime::GetCurrentTime();
m_OptionsCache[nOptionID-1].value = val;
m_OptionsCache[nOptionID-1].nType = 1;
}
return val;
}
void COptions::OnOK()
{
if (!UpdateData(true))
return;
if (!GetCurPage()->UpdateData(TRUE))
return;
for (std::list<CSAPrefsSubDlg *>::iterator iter = m_PageList.begin(); iter != m_PageList.end(); iter++)
if (IsWindow((*iter)->GetSafeHwnd()))
if (!(*iter)->UpdateData(TRUE))
return;
if (m_OptionsPage2.m_UseKeepAlive)
{
int low=_ttoi(m_OptionsPage2.m_IntervalLow);
int high=_ttoi(m_OptionsPage2.m_IntervalHigh);
if ((low<15)||(low>500))
{
ShowPage(&m_OptionsPage2);
m_OptionsPage2.GetDlgItem(IDC_INTERVALLOW)->SetFocus();
CString str;
str.Format(IDS_OPTIONS_KEEPALIVEBORDERLOW,15,500);
AfxMessageBox(str,MB_ICONEXCLAMATION);
return;
}
if ((high<15)||(high>500))
{
ShowPage(&m_OptionsPage2);
m_OptionsPage2.GetDlgItem(IDC_INTERVALHIGH)->SetFocus();
CString str;
str.Format(IDS_OPTIONS_KEEPALIVEBORDERHIGH,15,500);
AfxMessageBox(str,MB_ICONEXCLAMATION);
return;
}
if (low>high)
{
ShowPage(&m_OptionsPage2);
m_OptionsPage2.GetDlgItem(IDC_INTERVALLOW)->SetFocus();
CString str;
str.Format(IDS_OPTIONS_KEEPALIVEBORDERDIFF);
AfxMessageBox(str,MB_ICONEXCLAMATION);
return;
}
}
if ((m_OptionsPage2.m_Timeout < 0) || (m_OptionsPage2.m_Timeout > 999))
{
ShowPage(&m_OptionsPage2);
m_OptionsPage2.GetDlgItem(IDC_NUMRETRY)->SetFocus();
CString str;
str.Format(IDS_OPTIONS_TIMEOUT, 0, 999);
AfxMessageBox(str, MB_ICONEXCLAMATION);
return;
}
int val=_ttoi(m_OptionsPage2.m_NumRetries);
if ((val<0)||(val>999))
{
ShowPage(&m_OptionsPage2);
m_OptionsPage2.GetDlgItem(IDC_NUMRETRY)->SetFocus();
CString str;
str.Format(IDS_OPTIONS_NUMRETRIES,0,999);
AfxMessageBox(str,MB_ICONEXCLAMATION);
return;
}
val=_ttoi(m_OptionsPage2.m_Delay);
if ((val<0)||(val>999))
{
ShowPage(&m_OptionsPage2);
m_OptionsPage2.GetDlgItem(IDC_DELAY)->SetFocus();
CString str;
str.Format(IDS_OPTIONS_RETRYDELAY,0,999);
AfxMessageBox(str,MB_ICONEXCLAMATION);
return;
}
if (m_OptionsProxyPage.m_Type)
{
if (m_OptionsProxyPage.m_Host=="")
{
ShowPage(&m_OptionsProxyPage);
m_OptionsProxyPage.m_HostCtrl.SetFocus();
AfxMessageBox(IDS_OPTIONS_PROXYHOST,MB_ICONEXCLAMATION);
return;
}
val=_ttoi(m_OptionsProxyPage.m_Port);
if (val<=0 || val>=65535)
{
ShowPage(&m_OptionsProxyPage);
m_OptionsProxyPage.m_PortCtrl.SetFocus();
AfxMessageBox(IDS_OPTIONS_PROXYPORT,MB_ICONEXCLAMATION);
return;
}
}
if (m_OptionsTypePage.m_AsciiFiles=="")
{
m_OptionsTypePage.m_AsciiFiles="";
for (int i=0;i<m_OptionsTypePage.m_cTypeList.GetCount();i++)
{
CString tmp;
m_OptionsTypePage.m_cTypeList.GetText(i,tmp);
m_OptionsTypePage.m_AsciiFiles+=tmp+";";
}
m_OptionsTypePage.m_AsciiFiles.TrimRight( _T(";") );
m_OptionsTypePage.m_AsciiFiles+=";";
}
if (m_OptionsGssPage.m_GssServers=="")
{
m_OptionsGssPage.m_GssServers="";
for (int i=0;i<m_OptionsGssPage.m_cServerList.GetCount();i++)
{
CString tmp;
m_OptionsGssPage.m_cServerList.GetText(i,tmp);
m_OptionsGssPage.m_GssServers+=tmp+";";
}
m_OptionsGssPage.m_GssServers.TrimRight( _T(";") );
m_OptionsGssPage.m_GssServers+=";";
}
if (m_OptionsFirewallPage.m_bLimitPortRange)
{
int low=_ttoi(m_OptionsFirewallPage.m_PortRangeLow);
int high=_ttoi(m_OptionsFirewallPage.m_PortRangeHigh);
if ((low<1)||(low>65534))
{
ShowPage(&m_OptionsFirewallPage);
m_OptionsFirewallPage.m_cPortRangeLow.SetFocus();
CString str;
str.Format(IDS_OPTIONS_LIMITPORTRANGELOW,1,65534);
AfxMessageBox(str,MB_ICONEXCLAMATION);
return;
}
if ((high<2)||(high>65535))
{
ShowPage(&m_OptionsFirewallPage);
m_OptionsFirewallPage.m_cPortRangeLow.SetFocus();
CString str;
str.Format(IDS_OPTIONS_LIMITPORTRANGEHIGH,2,65535);
AfxMessageBox(str,MB_ICONEXCLAMATION);
return;
}
if (low>=high)
{
ShowPage(&m_OptionsFirewallPage);
m_OptionsFirewallPage.m_cPortRangeLow.SetFocus();
CString str;
str.Format(IDS_OPTIONS_LIMITPORTRANGEDIFF);
AfxMessageBox(str,MB_ICONEXCLAMATION);
return;
}
}
CString str=m_OptionsViewEditPage.m_Custom;
m_OptionsViewEditPage.m_Custom2="";
CString line;
for (int i=0;i<=str.GetLength();i++)
{
if (i==str.GetLength() || str[i]=='\r' || str[i]=='\n')
{
if (i!=str.GetLength())
{
line=str.Left(i);
str=str.Mid(i+1);
i=-1;
}
else
line=str;
line.TrimLeft( _T(" ") );
line.TrimRight( _T(" ") );
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?