void CServerWnd::OnBnClickedAddserver() { CString serveraddr; GetDlgItem(IDC_IPADDRESS)->GetWindowText(serveraddr); serveraddr.Trim(); if (serveraddr.IsEmpty()) { AfxMessageBox(GetResString(IDS_SRV_ADDR)); return; } uint16 uPort = 0; if (_tcsnicmp(serveraddr, _T("ed2k://"), 7) == 0){ CED2KLink* pLink = NULL; try{ pLink = CED2KLink::CreateLinkFromUrl(serveraddr); serveraddr.Empty(); if (pLink && pLink->GetKind() == CED2KLink::kServer){ CED2KServerLink* pServerLink = pLink->GetServerLink(); if (pServerLink){ serveraddr = pServerLink->GetAddress(); uPort = pServerLink->GetPort(); SetDlgItemText(IDC_IPADDRESS, serveraddr); SetDlgItemInt(IDC_SPORT, uPort, FALSE); } } } catch(CString strError){ AfxMessageBox(strError); serveraddr.Empty(); } delete pLink; } else{ if (!GetDlgItem(IDC_SPORT)->GetWindowTextLength()){ AfxMessageBox(GetResString(IDS_SRV_PORT)); return; } BOOL bTranslated = FALSE; uPort = (uint16)GetDlgItemInt(IDC_SPORT, &bTranslated, FALSE); if (!bTranslated){ AfxMessageBox(GetResString(IDS_SRV_PORT)); return; } } if (serveraddr.IsEmpty() || uPort == 0){ AfxMessageBox(GetResString(IDS_SRV_ADDR)); return; } CString strServerName; GetDlgItem(IDC_SNAME)->GetWindowText(strServerName); AddServer(uPort, serveraddr, strServerName); }
void CServerWnd::PasteServerFromClipboard() { CString strServer = theApp.CopyTextFromClipboard(); strServer.Trim(); if (strServer.IsEmpty()) return; int nPos = 0; CString strTok = strServer.Tokenize(_T(" \t\r\n"), nPos); while (!strTok.IsEmpty()) { CString strAddress; uint16 nPort = 0; CED2KLink* pLink = NULL; try{ pLink = CED2KLink::CreateLinkFromUrl(strTok); if (pLink && pLink->GetKind() == CED2KLink::kServer){ CED2KServerLink* pServerLink = pLink->GetServerLink(); if (pServerLink){ strAddress = pServerLink->GetAddress(); nPort = pServerLink->GetPort(); } } } catch(CString strError){ AfxMessageBox(strError); } delete pLink; if (strAddress.IsEmpty() || nPort == 0) break; (void)AddServer(nPort, strAddress, _T(""), false); strTok = strServer.Tokenize(_T(" \t\r\n"), nPos); } }