📄 emuledlg.cpp
字号:
}
void CemuleDlg::OnPaint() {
if (!startUpMinimized) {
startUpMinimized=true;
if (theApp.glob_prefs->GetStartMinimized()) OnCancel();
}
if (IsIconic()){
CPaintDC dc(this);
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else{
CTrayDialog::OnPaint();
}
}
HCURSOR CemuleDlg::OnQueryDragIcon(){
return static_cast<HCURSOR>(m_hIcon);
}
void CemuleDlg::OnBnClickedButton2(){
if (!theApp.serverconnect->IsConnected())
//connect if not currently connected
if (!theApp.serverconnect->IsConnecting() ) StartConnection(); else {
theApp.serverconnect->StopConnectionTry();
ShowConnectionState(false);
}
else
//disconnect if currently connected
CloseConnection();
}
void CemuleDlg::ResetLog(){
logtext="";
serverwnd.logbox.SetWindowText(logtext);
}
void CemuleDlg::ResetDebugLog(){
debuglog="";
serverwnd.debuglog.SetWindowText(debuglog);
}
void CemuleDlg::AddLogLine(bool addtostatusbar,CString line,...){
char osDate[30],osTime[30]; //<<--9/21/02
char temp[1060]; //<<--9/21/02
char bufferline[1000];
va_list argptr;
va_start(argptr, line);
_vsnprintf(bufferline, 1000, line, argptr);
va_end(argptr);
if (addtostatusbar)
if (statusbar.m_hWnd)
statusbar.SetText(bufferline,0,0);
else
AfxMessageBox(bufferline);
_strtime( osTime ); //<<--9/21/02
_strdate( osDate ); //<<--9/21/02
sprintf(temp,"%s %s: %s",osDate,osTime,bufferline);//<<--9/21/02
logtext += temp; //<<--9/21/02
logtext += "\r\n";
if (ready){
serverwnd.logbox.SetWindowText(logtext);
serverwnd.logbox.LineScroll(serverwnd.logbox.GetLineCount());
ShowNotifier(bufferline, TBN_LOG, false);
}
if (theApp.glob_prefs->Log2Disk()) {
CString logfile = theApp.glob_prefs->GetAppDir() + CString("eMule.log");
FILE* file = fopen(logfile , "a");
fprintf(file, temp);
fprintf(file, "\n");
fclose(file);
}
}
void CemuleDlg::AddDebugLogLine(bool addtostatusbar,CString line,...){
if( !theApp.glob_prefs->GetVerbose() && !theApp.glob_prefs->Debug2Disk() )
return;
char osDate[30],osTime[30]; //<<--9/21/02
char temp[1060]; //<<--9/21/02
char bufferline[1000];
va_list argptr;
va_start(argptr, line);
_vsnprintf(bufferline, 1000, line, argptr);
va_end(argptr);
if (theApp.glob_prefs->GetVerbose() && addtostatusbar)
if (statusbar.m_hWnd)
statusbar.SetText(bufferline,0,0);
else
AfxMessageBox(bufferline);
_strtime( osTime ); //<<--9/21/02
_strdate( osDate ); //<<--9/21/02
sprintf(temp,"%s %s: %s",osDate,osTime,bufferline);//<<--9/21/02
debuglog += temp; //<<--9/21/02
debuglog += "\r\n";
if (ready && theApp.glob_prefs->GetVerbose()){
serverwnd.debuglog.SetWindowText(debuglog);
serverwnd.debuglog.LineScroll(serverwnd.debuglog.GetLineCount());
}
if (theApp.glob_prefs->Debug2Disk()) {
CString msg=temp;
// msg.MakeLower();
if (msg.Find("Send:Source Request")==-1 &&
msg.Find("RCV:")==-1) {
CString logfile = theApp.glob_prefs->GetAppDir() + CString("eMule_Verbose.log");
FILE* file = fopen(logfile , "a");
fprintf(file, temp);
fprintf(file, "\n");
fclose(file);
}
}
}
void CemuleDlg::AddServerMessageLine(char* line,...){
CString content;
va_list argptr;
char bufferline[500];
va_start(argptr, line);
_vsnprintf(bufferline, 500, line, argptr);
va_end(argptr);
serverwnd.servermsgbox.AppendText(CString(bufferline)+CString("\n"));
}
void CemuleDlg::ShowConnectionState(){ShowConnectionState( theApp.serverconnect->IsConnected() ,"");}
void CemuleDlg::ShowConnectionState(bool connected){ShowConnectionState(connected,"");}
void CemuleDlg::ShowConnectionState(bool connected, CString server,bool iconOnly){
theApp.emuledlg->serverwnd.UpdateMyInfo();
if (connected)
{
char szBuf[200];
sprintf(szBuf, "%s", GetResString(IDS_MAIN_BTN_DISCONNECT));
LPSTR pszBuf;
TBBUTTONINFO tbi;
LPTBBUTTONINFO lptbbi;
pszBuf = szBuf;
lptbbi = &tbi;
tbi.dwMask = TBIF_IMAGE | TBIF_TEXT;
tbi.cbSize = sizeof (TBBUTTONINFO);
tbi.iImage = 9;
tbi.pszText = pszBuf;
tbi.cchText = sizeof (szBuf);
toolbar.SetButtonInfo(IDC_TOOLBARBUTTON+0, lptbbi);
//TOOLTIP: GetResString(IDS_MAIN_BTN_DISCONNECT_TOOLTIP)
if (theApp.serverconnect->IsLowID())
statusbar.SetIcon(3,connicons[1]);
else
statusbar.SetIcon(3,connicons[2]);
if (!iconOnly) {
statusbar.SetText(GetResString(IDS_MAIN_CONNECTEDTO) +CString(server),0,0);
statusbar.SetTipText(3,server);
statusbar.SetText(server,3,0);
}
}
else
{
if (theApp.serverconnect->IsConnecting())
{
char szBuf[200];
sprintf(szBuf, "%s", GetResString(IDS_MAIN_BTN_CANCEL));
LPSTR pszBuf;
TBBUTTONINFO tbi;
LPTBBUTTONINFO lptbbi;
pszBuf = szBuf;
lptbbi = &tbi;
tbi.dwMask = TBIF_IMAGE | TBIF_TEXT;
tbi.cbSize = sizeof (TBBUTTONINFO);
tbi.iImage = 10;
tbi.pszText = pszBuf;
tbi.cchText = sizeof (szBuf);
toolbar.SetButtonInfo(IDC_TOOLBARBUTTON+0, lptbbi);
//TOOLTIP: GetResString(IDS_MAIN_BTN_CONNECT_TOOLTIP)
statusbar.SetIcon(3,connicons[0]);
if (!iconOnly) {
statusbar.SetText(GetResString(IDS_CONNECTING),3,0);
statusbar.SetTipText(3,"");
}
ShowUserCount(0,0);
}
else
{
char szBuf[200];
sprintf(szBuf, "%s", GetResString(IDS_MAIN_BTN_CONNECT));
LPSTR pszBuf;
TBBUTTONINFO tbi;
LPTBBUTTONINFO lptbbi;
pszBuf = szBuf;
lptbbi = &tbi;
tbi.dwMask = TBIF_IMAGE | TBIF_TEXT;
tbi.cbSize = sizeof (TBBUTTONINFO);
tbi.iImage = 0;
tbi.pszText = pszBuf;
tbi.cchText = sizeof (szBuf);
toolbar.SetButtonInfo(IDC_TOOLBARBUTTON+0, lptbbi);
//TOOLTIP: GetResString(IDS_CONNECTTOANYSERVER)
//toolbar.AutoSize();
statusbar.SetIcon(3,connicons[0]);
if (!iconOnly) {
statusbar.SetText(GetResString(IDS_NOTCONNECTED),3,0);
theApp.emuledlg->AddLogLine(true,GetResString(IDS_DISCONNECTED));
statusbar.SetTipText(3,"");
}
ShowUserCount(0,0);
}
}
}
void CemuleDlg::ShowUserCount(uint32 user_toshow, uint32 file_toshow){
uint32 totaluser, totalfile;
totaluser = totalfile = 0;
if( user_toshow || file_toshow )
theApp.serverlist->GetUserFileStatus( totaluser, totalfile );
char buffer[100];
sprintf(buffer, "%s: %s(%s) | %s: %s(%s)", GetResString(IDS_UUSERS), CastItoIShort(user_toshow), CastItoIShort(totaluser), GetResString(IDS_FILES), CastItoIShort(file_toshow), CastItoIShort(totalfile));
statusbar.SetText(buffer,1,0);
}
void CemuleDlg::ShowMessageState(uint8 iconnr){
statusbar.SetIcon(4,imicons[iconnr]);
statusbar.SetDlgItemText(4,"!");
}
void CemuleDlg::ShowTransferRate(bool forceAll){
char buffer[50];
lastuprate = theApp.uploadqueue->GetDatarate();
lastdownrate= theApp.downloadqueue->GetDatarate();
int lastuprateoverhead = theApp.uploadqueue->GetUpDatarateOverhead();
int lastdownrateoverhead = theApp.downloadqueue->GetDownDatarateOverhead();
if( theApp.glob_prefs->ShowOverhead() )
sprintf(buffer,GetResString(IDS_UPDOWN),(float)lastuprate/1024, (float)lastuprateoverhead/1024, (float)lastdownrate/1024, (float)lastdownrateoverhead/1024);
else
sprintf(buffer,GetResString(IDS_UPDOWNSMALL),(float)lastuprate/1024, (float)lastdownrate/1024);
if (TrayIsVisible() || forceAll){
char buffer2[100];
// set trayicon-icon
int DownRateProcent=(int)ceil ( (lastdownrate/10.24)/ theApp.glob_prefs->GetMaxGraphDownloadRate());
if (DownRateProcent>100) DownRateProcent=100;
UpdateTrayIcon(DownRateProcent);
if (theApp.serverconnect->IsConnected())
sprintf(buffer2,"eMule v%s (%s)\n%s",CURRENT_VERSION_LONG,GetResString(IDS_CONNECTED),buffer);
else
sprintf(buffer2,"eMule v%s (%s)\n%s",CURRENT_VERSION_LONG,GetResString(IDS_DISCONNECTED),buffer);
buffer2[63]=0;
TraySetToolTip(buffer2);
}
if (IsWindowVisible() || forceAll) {
statusbar.SetText(buffer,2,0);
if (lastuprate && lastdownrate)
statusbar.SetIcon(2,transicons[3]);
else if (lastuprate)
statusbar.SetIcon(2,transicons[2]);
else if (lastdownrate)
statusbar.SetIcon(2,transicons[1]);
else
statusbar.SetIcon(2,transicons[0]);
}
if (!TrayIsVisible() && theApp.glob_prefs->ShowRatesOnTitle()) {
sprintf(buffer,"(U:%.1f D:%.1f) eMule v%s",(float)lastuprate/1024, (float)lastdownrate/1024,CURRENT_VERSION_LONG);
SetWindowText(buffer);
}
}
void CemuleDlg::OnCancel(){
if (*theApp.glob_prefs->GetMinTrayPTR()) {
TrayShow();
ShowWindow(SW_HIDE);
} else {
ShowWindow(SW_MINIMIZE);
}
ShowTransferRate();
}
void CemuleDlg::SetActiveDialog(CDialog* dlg){
if(dlg == activewnd)
return;
activewnd->ShowWindow(SW_HIDE);
dlg->ShowWindow(SW_SHOW);
activewnd = dlg;
if (dlg==&transferwnd) theApp.emuledlg->toolbar.CheckButton(IDC_TOOLBARBUTTON+2);
else if (dlg==&serverwnd) theApp.emuledlg->toolbar.CheckButton(IDC_TOOLBARBUTTON+1);
else if (dlg==&chatwnd) {theApp.emuledlg->toolbar.CheckButton(IDC_TOOLBARBUTTON+5);theApp.emuledlg->chatwnd.chatselector.ShowChat();}
else if (dlg==&ircwnd) theApp.emuledlg->toolbar.CheckButton(IDC_TOOLBARBUTTON+6);
else if (dlg==&sharedfileswnd) theApp.emuledlg->toolbar.CheckButton(IDC_TOOLBARBUTTON+4);
else if (dlg==&searchwnd) theApp.emuledlg->toolbar.CheckButton(IDC_TOOLBARBUTTON+3);
else if (dlg==&statisticswnd) {theApp.emuledlg->toolbar.CheckButton(IDC_TOOLBARBUTTON+7); statisticswnd.ShowStatistics();}
}
void CemuleDlg::OnSize(UINT nType,int cx,int cy){
CTrayDialog::OnSize(nType,cx,cy);
CRect rect;
statusbar.GetClientRect(&rect);
int widths[5] = { rect.right-650, rect.right-410, rect.right-220,rect.right-25, -1 };
statusbar.SetParts(5, widths);
}
extern void URLDecode(CString& result, const char* buff);
LRESULT CemuleDlg::OnWMData(WPARAM wParam,LPARAM lParam){
tagCOPYDATASTRUCT* data = (tagCOPYDATASTRUCT*)lParam;
if (data->dwData == OP_ED2KLINK){
FlashWindow(true);
if( theApp.glob_prefs->IsBringToFront() ){
if (IsIconic())
ShowWindow(SW_SHOWNORMAL);
else if (TrayHide()){
ShowWindow(SW_SHOW);
}
else
SetForegroundWindow();
}
try {
CString link2;
CString link;
link2 = (char*)data->lpData;
link2.Replace("%7c","|");
URLDecode(link,(const char*)link2.GetBuffer());
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);
}
break;
case CED2KLink::kServerList:
{
CED2KServerListLink* pListLink = pLink->GetServerListLink();
_ASSERT( pListLink !=0 );
CString strAddress = pListLink->GetAddress();
if(strAddress.GetLength() != 0)
theApp.emuledlg->serverwnd.UpdateServerMetFromURL(strAddress);
}
break;
case CED2KLink::kServer:
{
CString defName;
CED2KServerLink* pSrvLink = pLink->GetServerLink();
_ASSERT( pSrvLink !=0 );
in_addr host;
host.S_un.S_addr = pSrvLink->GetIP();
CServer* pSrv = new CServer(pSrvLink->GetPort(),inet_ntoa(host));
_ASSERT( pSrv !=0 );
pSrvLink->GetDefaultName(defName);
pSrv->SetListName(defName.GetBuffer());
// Barry - Default all new servers to high priority
pSrv->SetPreference(PR_HIGH);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -