📄 emuledlg.cpp
字号:
}
else
AfxMessageBox(pszText);
}
#if defined(_DEBUG) || defined(USE_DEBUG_DEVICE)
Debug(_T("%s\n"), pszText);
#endif
if ((uFlags & LOG_DEBUG) && !thePrefs.GetVerbose())
return;
TCHAR temp[1060];
int iLen = _sntprintf(temp, ARRSIZE(temp), _T("%s: %s\r\n"), CTime::GetCurrentTime().Format(thePrefs.GetDateTimeFormat4Log()), pszText);
if (iLen >= 0)
{
if (!(uFlags & LOG_DEBUG))
{
serverwnd->logbox->AddTyped(temp, iLen, uFlags);
if (IsWindow(serverwnd->StatusSelector) && serverwnd->StatusSelector.GetCurSel() != CServerWnd::PaneLog)
serverwnd->StatusSelector.HighlightItem(CServerWnd::PaneLog, TRUE);
if (ready)
ShowNotifier(pszText, TBN_LOG);
if (thePrefs.GetLog2Disk())
theLog.Log(temp, iLen);
}
if (thePrefs.GetVerbose() && ((uFlags & LOG_DEBUG) || thePrefs.GetFullVerbose()))
{
serverwnd->debuglog->AddTyped(temp, iLen, uFlags);
if (IsWindow(serverwnd->StatusSelector) && serverwnd->StatusSelector.GetCurSel() != CServerWnd::PaneVerboseLog)
serverwnd->StatusSelector.HighlightItem(CServerWnd::PaneVerboseLog, TRUE);
if (thePrefs.GetDebug2Disk())
theVerboseLog.Log(temp, iLen);
}
}
}
CString CemuleDlg::GetLastLogEntry()
{
return serverwnd->logbox->GetLastLogEntry();
}
CString CemuleDlg::GetAllLogEntries()
{
return serverwnd->logbox->GetAllLogEntries();
}
CString CemuleDlg::GetLastDebugLogEntry()
{
return serverwnd->debuglog->GetLastLogEntry();
}
CString CemuleDlg::GetAllDebugLogEntries()
{
return serverwnd->debuglog->GetAllLogEntries();
}
void CemuleDlg::AddServerMessageLine(LPCTSTR pszLine)
{
serverwnd->servermsgbox->AppendText(pszLine + CString(_T('\n')));
if (IsWindow(serverwnd->StatusSelector) && serverwnd->StatusSelector.GetCurSel() != CServerWnd::PaneServerInfo)
serverwnd->StatusSelector.HighlightItem(CServerWnd::PaneServerInfo, TRUE);
}
void CemuleDlg::ShowConnectionStateIcon()
{
if (theApp.serverconnect->IsConnected() && !Kademlia::CKademlia::isConnected())
{
if (theApp.serverconnect->IsLowID())
statusbar->SetIcon(SBarConnected, connicons[3]); // LowNot
else
statusbar->SetIcon(SBarConnected, connicons[6]); // HighNot
}
else if (!theApp.serverconnect->IsConnected() && Kademlia::CKademlia::isConnected())
{
if (Kademlia::CKademlia::isFirewalled())
statusbar->SetIcon(SBarConnected, connicons[1]); // NotLow
else
statusbar->SetIcon(SBarConnected, connicons[2]); // NotHigh
}
else if (theApp.serverconnect->IsConnected() && Kademlia::CKademlia::isConnected())
{
if (theApp.serverconnect->IsLowID() && Kademlia::CKademlia::isFirewalled())
statusbar->SetIcon(SBarConnected, connicons[4]); // LowLow
else if (theApp.serverconnect->IsLowID())
statusbar->SetIcon(SBarConnected, connicons[5]); // LowHigh
else if (Kademlia::CKademlia::isFirewalled())
statusbar->SetIcon(SBarConnected, connicons[7]); // HighLow
else
statusbar->SetIcon(SBarConnected, connicons[8]); // HighHigh
}
else
{
statusbar->SetIcon(SBarConnected, connicons[0]); // NotNot
}
}
CString CemuleDlg::GetConnectionStateString()
{
CString status;
if (theApp.serverconnect->IsConnected())
status = _T("eD2K:") + GetResString(IDS_CONNECTED);
else if (theApp.serverconnect->IsConnecting())
status = _T("eD2K:") + GetResString(IDS_CONNECTING);
else
status = _T("eD2K:") + GetResString(IDS_NOTCONNECTED);
if (Kademlia::CKademlia::isConnected())
status += _T("|Kad:") + GetResString(IDS_CONNECTED);
else if (Kademlia::CKademlia::isRunning())
status += _T("|Kad:") + GetResString(IDS_CONNECTING);
else
status += _T("|Kad:") + GetResString(IDS_NOTCONNECTED);
return status;
}
void CemuleDlg::ShowConnectionState()
{
theApp.downloadqueue->OnConnectionState(theApp.IsConnected());
serverwnd->UpdateMyInfo();
serverwnd->UpdateControlsState();
kademliawnd->UpdateControlsState();
ShowConnectionStateIcon();
statusbar->SetText(GetConnectionStateString(), SBarConnected, 0);
if (theApp.IsConnected())
{
CString strPane(GetResString(IDS_MAIN_BTN_DISCONNECT));
TBBUTTONINFO tbi;
tbi.cbSize = sizeof(TBBUTTONINFO);
tbi.dwMask = TBIF_IMAGE | TBIF_TEXT;
tbi.iImage = 1;
tbi.pszText = const_cast<LPTSTR>((LPCTSTR)strPane);
toolbar->SetButtonInfo(IDC_TOOLBARBUTTON+0, &tbi);
}
else
{
if (theApp.serverconnect->IsConnecting() || Kademlia::CKademlia::isRunning())
{
CString strPane(GetResString(IDS_MAIN_BTN_CANCEL));
TBBUTTONINFO tbi;
tbi.cbSize = sizeof(TBBUTTONINFO);
tbi.dwMask = TBIF_IMAGE | TBIF_TEXT;
tbi.iImage = 2;
tbi.pszText = const_cast<LPTSTR>((LPCTSTR)strPane);
toolbar->SetButtonInfo(IDC_TOOLBARBUTTON+0, &tbi);
ShowUserCount();
}
else
{
CString strPane(GetResString(IDS_MAIN_BTN_CONNECT));
TBBUTTONINFO tbi;
tbi.cbSize = sizeof(TBBUTTONINFO);
tbi.dwMask = TBIF_IMAGE | TBIF_TEXT;
tbi.iImage = 0;
tbi.pszText = const_cast<LPTSTR>((LPCTSTR)strPane);
toolbar->SetButtonInfo(IDC_TOOLBARBUTTON+0, &tbi);
ShowUserCount();
}
}
}
void CemuleDlg::ShowUserCount()
{
uint32 totaluser, totalfile;
totaluser = totalfile = 0;
theApp.serverlist->GetUserFileStatus( totaluser, totalfile );
CString buffer;
buffer.Format(_T("%s:%s(%s)|%s:%s(%s)"), GetResString(IDS_UUSERS), CastItoIShort(totaluser, false, 1), CastItoIShort(Kademlia::CKademlia::getKademliaUsers(), false, 1), GetResString(IDS_FILES), CastItoIShort(totalfile, false, 1), CastItoIShort(Kademlia::CKademlia::getKademliaFiles(), false, 1));
statusbar->SetText(buffer, SBarUsers, 0);
}
void CemuleDlg::ShowMessageState(uint8 iconnr)
{
m_iMsgIcon = iconnr;
statusbar->SetIcon(SBarChatMsg, imicons[m_iMsgIcon]);
}
void CemuleDlg::ShowTransferStateIcon()
{
if (m_uUpDatarate && m_uDownDatarate)
statusbar->SetIcon(SBarUpDown, transicons[3]);
else if (m_uUpDatarate)
statusbar->SetIcon(SBarUpDown, transicons[2]);
else if (m_uDownDatarate)
statusbar->SetIcon(SBarUpDown, transicons[1]);
else
statusbar->SetIcon(SBarUpDown, transicons[0]);
}
CString CemuleDlg::GetUpDatarateString(UINT uUpDatarate)
{
m_uUpDatarate = uUpDatarate != (UINT)-1 ? uUpDatarate : theApp.uploadqueue->GetDatarate();
TCHAR szBuff[128];
if (thePrefs.ShowOverhead())
_sntprintf(szBuff, ARRSIZE(szBuff), _T("%.1f (%.1f)"), (float)m_uUpDatarate/1024, (float)theStats.GetUpDatarateOverhead()/1024);
else
_sntprintf(szBuff, ARRSIZE(szBuff), _T("%.1f"), (float)m_uUpDatarate/1024);
return szBuff;
}
CString CemuleDlg::GetDownDatarateString(UINT uDownDatarate)
{
m_uDownDatarate = uDownDatarate != (UINT)-1 ? uDownDatarate : theApp.downloadqueue->GetDatarate();
TCHAR szBuff[128];
if (thePrefs.ShowOverhead())
_sntprintf(szBuff, ARRSIZE(szBuff), _T("%.1f (%.1f)"), (float)m_uDownDatarate/1024, (float)theStats.GetDownDatarateOverhead()/1024);
else
_sntprintf(szBuff, ARRSIZE(szBuff), _T("%.1f"), (float)m_uDownDatarate/1024);
return szBuff;
}
CString CemuleDlg::GetTransferRateString()
{
TCHAR szBuff[128];
if (thePrefs.ShowOverhead())
_sntprintf(szBuff, ARRSIZE(szBuff), GetResString(IDS_UPDOWN),
(float)m_uUpDatarate/1024, (float)theStats.GetUpDatarateOverhead()/1024,
(float)m_uDownDatarate/1024, (float)theStats.GetDownDatarateOverhead()/1024);
else
_sntprintf(szBuff, ARRSIZE(szBuff), GetResString(IDS_UPDOWNSMALL), (float)m_uUpDatarate/1024, (float)m_uDownDatarate/1024);
return szBuff;
}
void CemuleDlg::ShowTransferRate(bool bForceAll)
{
if (bForceAll)
m_uLastSysTrayIconCookie = SYS_TRAY_ICON_COOKIE_FORCE_UPDATE;
m_uDownDatarate = theApp.downloadqueue->GetDatarate();
m_uUpDatarate = theApp.uploadqueue->GetDatarate();
CString strTransferRate = GetTransferRateString();
if (TrayIsVisible() || bForceAll)
{
TCHAR buffer2[100];
// set trayicon-icon
int iDownRateProcent = (int)ceil((m_uDownDatarate/10.24) / thePrefs.GetMaxGraphDownloadRate());
if (iDownRateProcent > 100)
iDownRateProcent = 100;
UpdateTrayIcon(iDownRateProcent);
if (theApp.IsConnected())
_sntprintf(buffer2, ARRSIZE(buffer2), _T("eMule VeryCD (%s)\r\n%s"), GetResString(IDS_CONNECTED), strTransferRate);
else
_sntprintf(buffer2, ARRSIZE(buffer2), _T("eMule VeryCD (%s)\r\n%s"), GetResString(IDS_DISCONNECTED), strTransferRate);
buffer2[63] = _T('\0');
TraySetToolTip(buffer2);
}
if (IsWindowVisible() || bForceAll)
{
statusbar->SetText(strTransferRate, SBarUpDown, 0);
ShowTransferStateIcon();
}
if (IsWindowVisible() && thePrefs.ShowRatesOnTitle())
{
TCHAR szBuff[128];
_sntprintf(szBuff, ARRSIZE(szBuff), _T("(U:%.1f D:%.1f) eMule v%s"), (float)m_uUpDatarate/1024, (float)m_uDownDatarate/1024, theApp.m_strCurVersionLong);
SetWindowText(szBuff);
}
if (m_pMiniMule && m_pMiniMule->m_hWnd && m_pMiniMule->IsWindowVisible() && !m_pMiniMule->GetAutoClose())
{
m_pMiniMule->UpdateContent(m_uUpDatarate, m_uDownDatarate);
}
}
void CemuleDlg::ShowPing()
{
if (IsWindowVisible())
{
CString buffer;
if (thePrefs.IsDynUpEnabled())
{
CurrentPingStruct lastPing = theApp.lastCommonRouteFinder->GetCurrentPing();
if (lastPing.state.GetLength() == 0)
{
if (lastPing.lowest > 0 && !thePrefs.IsDynUpUseMillisecondPingTolerance())
buffer.Format(_T("%.1f | %ims | %i%%"),lastPing.currentLimit/1024.0f, lastPing.latency, lastPing.latency*100/lastPing.lowest);
else
buffer.Format(_T("%.1f | %ims"),lastPing.currentLimit/1024.0f, lastPing.latency);
}
else
buffer.SetString(lastPing.state);
}
statusbar->SetText(buffer, SBarChatMsg, 0);
}
}
void CemuleDlg::OnOK()
{
}
void CemuleDlg::OnCancel()
{
if (*thePrefs.GetMinTrayPTR())
{
TrayShow();
ShowWindow(SW_HIDE);
}
else
ShowWindow(SW_MINIMIZE);
ShowTransferRate();
ShowPing();
}
void CemuleDlg::SetActiveDialog(CWnd* dlg)
{
if (dlg == activewnd)
return;
if (activewnd)
activewnd->ShowWindow(SW_HIDE);
dlg->ShowWindow(SW_SHOW);
dlg->SetFocus();
activewnd = dlg;
if (dlg == transferwnd){
if (thePrefs.ShowCatTabInfos())
transferwnd->UpdateCatTabTitles();
toolbar->PressMuleButton(IDC_TOOLBARBUTTON+3);
}
else if (dlg == serverwnd){
toolbar->PressMuleButton(IDC_TOOLBARBUTTON+2);
}
else if (dlg == chatwnd){
toolbar->PressMuleButton(IDC_TOOLBARBUTTON+6);
chatwnd->chatselector.ShowChat();
}
else if (dlg == ircwnd){
toolbar->PressMuleButton(IDC_TOOLBARBUTTON+7);
}
else if (dlg == sharedfileswnd){
toolbar->PressMuleButton(IDC_TOOLBARBUTTON+5);
}
else if (dlg == searchwnd){
toolbar->PressMuleButton(IDC_TOOLBARBUTTON+4);
}
else if (dlg == statisticswnd){
toolbar->PressMuleButton(IDC_TOOLBARBUTTON+8);
statisticswnd->ShowStatistics();
}
else if (dlg == kademliawnd){
toolbar->PressMuleButton(IDC_TOOLBARBUTTON+1);
}
}
void CemuleDlg::SetStatusBarPartsSize()
{
CRect rect;
statusbar->GetClientRect(&rect);
int ussShift = 0;
if(thePrefs.IsDynUpEnabled())
{
if (thePrefs.IsDynUpUseMillisecondPingTolerance())
ussShift = 45;
else
ussShift = 90;
}
int aiWidths[5] =
{
rect.right - 675 - ussShift,
rect.right - 440 - ussShift,
rect.right - 250 - ussShift,
rect.right - 25 - ussShift,
-1
};
statusbar->SetParts(ARRSIZE(aiWidths), aiWidths);
}
void CemuleDlg::OnSize(UINT nType, int cx, int cy)
{
CTrayDialog::OnSize(nType, cx, cy);
SetStatusBarPartsSize();
transferwnd->VerifyCatTabSize();
}
void CemuleDlg::ProcessED2KLink(LPCTSTR pszData)
{
try {
CString link2;
CString link;
link2 = pszData;
link2.Replace(_T("%7c"),_T("|"));
link = OptUtf8ToStr(URLDecode(link2));
CED2KLink* pLink = CED2KLink::CreateLinkFromUrl(link);
_ASSERT( pLink !=0 );
switch (pLink->GetKind()) {
case CED2KLink::kFile:
{
CED2KFileLink* pFileLink = pLink->GetFileLink();
_ASSERT(pFileLink !=0);
theApp.downloadqueue->AddFileLinkToDownload(pFileLink,searchwnd->GetSelectedCat());
}
break;
case CED2KLink::kServerList:
{
CED2KServerListLink* pListLink = pLink->GetServerListLink();
_ASSERT( pListLink !=0 );
CString strAddress = pListLink->GetAddress();
if(strAddress.GetLength() != 0)
serverwnd->UpdateServerMetFromURL(strAddress);
}
break;
case CED2KLink::kServer:
{
CString defName;
CED2KServerLink* pSrvLink = pLink->GetServerLink();
_ASSERT( pSrvLink !=0 );
CServer* pSrv = new CServer(pSrvLink->GetPort(), ipstr(pSrvLink->GetIP()));
_ASSERT( pSrv !=0 );
pSrvLink->GetDefaultName(defName);
pSrv->SetListName(defName.GetBuffer());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -