void CServerListCtrl::DeleteSelectedServers() { //SetRedraw(FALSE); while (GetFirstSelectedItemPosition() != NULL) { POSITION pos = GetFirstSelectedItemPosition(); int iItem = GetNextSelectedItem(pos); theApp.serverlist->RemoveServer((CServer*)GetItemData(iItem)); DeleteItem(iItem); } ShowServerCount(); //SetRedraw(TRUE); SetFocus(); AutoSelectItem(); }
BOOL CServerListCtrl::OnCommand(WPARAM wParam, LPARAM /*lParam*/) { wParam = LOWORD(wParam); switch (wParam) { case MP_CONNECTTO: case IDA_ENTER: if (GetSelectedCount() > 1) { theApp.serverconnect->Disconnect(); POSITION pos = GetFirstSelectedItemPosition(); while (pos != NULL) { int iItem = GetNextSelectedItem(pos); if (iItem > -1) { const CServer* pServer = (CServer*)GetItemData(iItem); theApp.serverlist->MoveServerDown(pServer); } } theApp.serverconnect->ConnectToAnyServer(theApp.serverlist->GetServerCount() - GetSelectedCount(), false, false); } else { int iItem = GetNextItem(-1, LVIS_SELECTED | LVIS_FOCUSED); if (iItem > -1) theApp.serverconnect->ConnectToServer((CServer*)GetItemData(iItem)); } theApp.emuledlg->ShowConnectionState(); return TRUE; case MP_CUT: { CString strURLs = CreateSelectedServersURLs(); if (!strURLs.IsEmpty()) theApp.CopyTextToClipboard(strURLs); DeleteSelectedServers(); return TRUE; } case MP_COPYSELECTED: case MP_GETED2KLINK: case Irc_SetSendLink: { CString strURLs = CreateSelectedServersURLs(); if (!strURLs.IsEmpty()) { if (wParam == Irc_SetSendLink) theApp.emuledlg->ircwnd->SetSendFileString(strURLs); else theApp.CopyTextToClipboard(strURLs); } return TRUE; } case MP_PASTE: if (theApp.IsEd2kServerLinkInClipboard()) theApp.emuledlg->serverwnd->PasteServerFromClipboard(); return TRUE; case MP_REMOVE: case MPG_DELETE: { SetRedraw(FALSE); while (GetFirstSelectedItemPosition() != NULL) { POSITION pos = GetFirstSelectedItemPosition(); int iItem = GetNextSelectedItem(pos); theApp.serverlist->RemoveServer((CServer*)GetItemData(iItem)); DeleteItem(iItem); } ShowServerCount(); SetRedraw(TRUE); SetFocus(); AutoSelectItem(); return TRUE; } case MP_REMOVEALL: if (AfxMessageBox(GetResString(IDS_REMOVEALLSERVERS), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2) != IDYES) return TRUE; if (theApp.serverconnect->IsConnecting()) { theApp.downloadqueue->StopUDPRequests(); theApp.serverconnect->StopConnectionTry(); theApp.serverconnect->Disconnect(); theApp.emuledlg->ShowConnectionState(); } ShowWindow(SW_HIDE); theApp.serverlist->RemoveAllServers(); DeleteAllItems(); ShowWindow(SW_SHOW); ShowServerCount(); return TRUE; case MP_FIND: OnFindStart(); return TRUE; case MP_ADDTOSTATIC: { POSITION pos = GetFirstSelectedItemPosition(); while (pos != NULL) { CServer* pServer = (CServer*)GetItemData(GetNextSelectedItem(pos)); if (!StaticServerFileAppend(pServer)) return FALSE; theApp.emuledlg->serverwnd->serverlistctrl.RefreshServer(pServer); } return TRUE; } case MP_REMOVEFROMSTATIC: { POSITION pos = GetFirstSelectedItemPosition(); while (pos != NULL) { CServer* pServer = (CServer*)GetItemData(GetNextSelectedItem(pos)); if (!StaticServerFileRemove(pServer)) return FALSE; theApp.emuledlg->serverwnd->serverlistctrl.RefreshServer(pServer); } return TRUE; } case MP_PRIOLOW: SetSelectedServersPriority(SRV_PR_LOW); return TRUE; case MP_PRIONORMAL: SetSelectedServersPriority(SRV_PR_NORMAL); return TRUE; case MP_PRIOHIGH: SetSelectedServersPriority(SRV_PR_HIGH); return TRUE; } return FALSE; }
BOOL CServerListCtrl::OnCommand(WPARAM wParam, LPARAM lParam) { if (wParam == MP_REMOVEALL) { if (AfxMessageBox(_T("Do you really want to remove all servers?"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2) != IDYES) return TRUE; if( theApp.serverconnect->IsConnecting() ){ theApp.downloadqueue->StopUDPRequests(); theApp.serverconnect->StopConnectionTry(); theApp.serverconnect->Disconnect(); theApp.emuledlg->ShowConnectionState(); } ShowWindow(SW_HIDE); server_list->RemoveAllServers(); DeleteAllItems(); ShowWindow(SW_SHOW); ShowServerCount(); return TRUE; } else if (wParam == MP_FIND) { OnFindStart(); return TRUE; } else if (wParam == MP_PASTE) { if (theApp.IsEd2kServerLinkInClipboard()) theApp.emuledlg->serverwnd->PasteServerFromClipboard(); return TRUE; } int item = GetNextItem(-1, LVIS_SELECTED | LVIS_FOCUSED); if (item != -1) { if (((CServer*)GetItemData(item)) != NULL) { switch (wParam){ case MP_CONNECTTO: { if (GetSelectedCount() > 1) { CServer* aServer; theApp.serverconnect->Disconnect(); POSITION pos=GetFirstSelectedItemPosition(); while (pos != NULL) { item = GetNextSelectedItem(pos); if (item > -1) { aServer=(CServer*)GetItemData(item); theApp.serverlist->MoveServerDown(aServer); } } theApp.serverconnect->ConnectToAnyServer(theApp.serverlist->GetServerCount() - this->GetSelectedCount(), false, false); } else{ theApp.serverconnect->ConnectToServer((CServer*)GetItemData(item)); } theApp.emuledlg->ShowConnectionState(); return TRUE; } case MPG_DELETE: case MP_REMOVE: { SetRedraw(FALSE); POSITION pos; while (GetFirstSelectedItemPosition() != NULL) { pos = GetFirstSelectedItemPosition(); item = GetNextSelectedItem(pos); server_list->RemoveServer((CServer*)GetItemData(item)); DeleteItem(item); } ShowServerCount(); SetRedraw(TRUE); SetFocus(); AutoSelectItem(); return TRUE; } case MP_ADDTOSTATIC: { POSITION pos = GetFirstSelectedItemPosition(); while (pos != NULL){ CServer* change = (CServer*)GetItemData(GetNextSelectedItem(pos)); if (!StaticServerFileAppend(change)) return FALSE; theApp.emuledlg->serverwnd->serverlistctrl.RefreshServer(change); } return TRUE; } case MP_REMOVEFROMSTATIC: { POSITION pos = GetFirstSelectedItemPosition(); while (pos != NULL){ CServer* change = (CServer*)GetItemData(GetNextSelectedItem(pos)); if (!StaticServerFileRemove(change)) return FALSE; theApp.emuledlg->serverwnd->serverlistctrl.RefreshServer(change); } return TRUE; } case MP_PRIOLOW: { POSITION pos = GetFirstSelectedItemPosition(); while (pos != NULL){ CServer* change = (CServer*)GetItemData(GetNextSelectedItem(pos)); change->SetPreference(SRV_PR_LOW); theApp.emuledlg->serverwnd->serverlistctrl.RefreshServer(change); } return TRUE; } case MP_PRIONORMAL: { POSITION pos = GetFirstSelectedItemPosition(); while (pos != NULL){ CServer* change = (CServer*)GetItemData(GetNextSelectedItem(pos)); change->SetPreference(SRV_PR_NORMAL); theApp.emuledlg->serverwnd->serverlistctrl.RefreshServer(change); } return TRUE; } case MP_PRIOHIGH: { POSITION pos = GetFirstSelectedItemPosition(); while (pos != NULL){ CServer* change = (CServer*)GetItemData(GetNextSelectedItem(pos)); change->SetPreference(SRV_PR_HIGH); theApp.emuledlg->serverwnd->serverlistctrl.RefreshServer(change); } return TRUE; } case MP_COPYSELECTED: case MP_GETED2KLINK: { POSITION pos = GetFirstSelectedItemPosition(); CString buffer, link; while (pos != NULL){ const CServer* change = (CServer*)GetItemData(GetNextSelectedItem(pos)); buffer.Format(_T("ed2k://|server|%s|%d|/"), change->GetFullIP(), change->GetPort()); if (link.GetLength() > 0) buffer = _T("\r\n") + buffer; link += buffer; } theApp.CopyTextToClipboard(link); return TRUE; } } } } return FALSE; }