bool CServerListCtrl::StaticServerFileAppend(CServer *server) { try { // Remove any entry before writing to avoid duplicates StaticServerFileRemove(server); FILE* staticservers = _tfsopen(thePrefs.GetConfigDir() + _T("staticservers.dat"), _T("a"), _SH_DENYWR); if (staticservers==NULL) { LogError(LOG_STATUSBAR, GetResString(IDS_ERROR_SSF)); return false; } if (_ftprintf(staticservers, _T("%s:%i,%i,%s\n"), server->GetAddress(), server->GetPort(), server->GetPreferences(), server->GetListName()) != EOF) { AddLogLine(false, _T("'%s:%i,%s' %s"), server->GetAddress(), server->GetPort(), server->GetListName(), GetResString(IDS_ADDED2SSF)); server->SetIsStaticMember(true); theApp.emuledlg->serverwnd->serverlistctrl.RefreshServer(server); } fclose(staticservers); } catch (...) { ASSERT(0); return false; } return true; }
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: { ShowWindow(SW_HIDE); POSITION pos; while (GetFirstSelectedItemPosition() != NULL) { pos = GetFirstSelectedItemPosition(); item = GetNextSelectedItem(pos); server_list->RemoveServer((CServer*)GetItemData(item)); DeleteItem(item); } ShowServerCount(); ShowWindow(SW_SHOW); SetFocus(); return TRUE; } case MP_ADDTOSTATIC: { POSITION pos = GetFirstSelectedItemPosition(); while (pos != NULL){ CServer* change = (CServer*)GetItemData(GetNextSelectedItem(pos)); if (!StaticServerFileAppend(change)) return FALSE; change->SetIsStaticMember(true); 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; change->SetIsStaticMember(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; } //==> remove IRC [shadow2004] #if defined(IRC) case Irc_SetSendLink: { 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.emuledlg->ircwnd->SetSendFileString(link); return TRUE; } #endif //IRC //<== remove IRC [shadow2004] } } } return FALSE; }
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; }