📄 transferwnd.cpp
字号:
return sel;
}
return LB_ERR;
}
void CTransferWnd::UpdateListCount(uint8 listindex, int iCount /*=-1*/)
{
if (m_uWnd2 != listindex)
return;
CString buffer;
switch (m_uWnd2){
case 1:
buffer.Format(_T(" (%i)"), iCount == -1 ? uploadlistctrl.GetItemCount() : iCount);
GetDlgItem(IDC_UPLOAD_ICO)->SetWindowText(GetResString(IDS_TW_UPLOADS)+buffer);
break;
case 2:
buffer.Format(_T(" (%i)"), iCount == -1 ? queuelistctrl.GetItemCount() : iCount);
GetDlgItem(IDC_UPLOAD_ICO)->SetWindowText(GetResString(IDS_ONQUEUE)+buffer);
break;
default:
buffer.Format(_T(" (%i)"), iCount == -1 ? clientlistctrl.GetItemCount() : iCount);
GetDlgItem(IDC_UPLOAD_ICO)->SetWindowText(GetResString(IDS_CLIENTLIST)+buffer);
}
}
void CTransferWnd::SwitchUploadList()
{
if( m_uWnd2 == 1){
SetWnd2(2);
if( thePrefs.IsQueueListDisabled()){
SwitchUploadList();
return;
}
uploadlistctrl.Hide();
clientlistctrl.Hide();
GetDlgItem(IDC_QUEUE_REFRESH_BUTTON)->ShowWindow(SW_SHOW);
queuelistctrl.Visable();
GetDlgItem(IDC_UPLOAD_ICO)->SetWindowText(GetResString(IDS_ONQUEUE));
}
else if( m_uWnd2 == 2){
SetWnd2(0);
if( thePrefs.IsKnownClientListDisabled()){
SwitchUploadList();
return;
}
uploadlistctrl.Hide();
queuelistctrl.Hide();
clientlistctrl.Visable();
GetDlgItem(IDC_QUEUE_REFRESH_BUTTON)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_UPLOAD_ICO)->SetWindowText(GetResString(IDS_CLIENTLIST));
}
else{
queuelistctrl.Hide();
clientlistctrl.Hide();
uploadlistctrl.Visable();
GetDlgItem(IDC_QUEUE_REFRESH_BUTTON)->ShowWindow(SW_HIDE);
SetWnd2(1);
GetDlgItem(IDC_UPLOAD_ICO)->SetWindowText(GetResString(IDS_TW_UPLOADS));
}
UpdateListCount(m_uWnd2);
SetWnd2Icon();
}
void CTransferWnd::ShowWnd2(uint8 uWnd2)
{
if (uWnd2 == 2 && !thePrefs.IsQueueListDisabled())
{
uploadlistctrl.Hide();
clientlistctrl.Hide();
queuelistctrl.Visable();
GetDlgItem(IDC_QUEUE_REFRESH_BUTTON)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_UPLOAD_ICO)->SetWindowText(GetResString(IDS_ONQUEUE));
SetWnd2(uWnd2);
}
else if (uWnd2 == 0 && !thePrefs.IsKnownClientListDisabled())
{
uploadlistctrl.Hide();
queuelistctrl.Hide();
clientlistctrl.Visable();
GetDlgItem(IDC_QUEUE_REFRESH_BUTTON)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_UPLOAD_ICO)->SetWindowText(GetResString(IDS_CLIENTLIST));
SetWnd2(uWnd2);
}
else
{
queuelistctrl.Hide();
clientlistctrl.Hide();
uploadlistctrl.Visable();
GetDlgItem(IDC_QUEUE_REFRESH_BUTTON)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_UPLOAD_ICO)->SetWindowText(GetResString(IDS_TW_UPLOADS));
SetWnd2(1);
}
SetWnd2Icon();
}
void CTransferWnd::SetWnd2(uint8 uWnd2)
{
m_uWnd2 = uWnd2;
thePrefs.SetTransferWnd2(m_uWnd2);
}
void CTransferWnd::OnSysColorChange()
{
CResizableDialog::OnSysColorChange();
SetAllIcons();
}
void CTransferWnd::SetAllIcons()
{
if (icon_download)
VERIFY( DestroyIcon(icon_download) );
icon_download = theApp.LoadIcon(_T("Download"), 16, 16);
((CStatic*)GetDlgItem(IDC_DOWNLOAD_ICO))->SetIcon(icon_download);
SetWnd2Icon();
}
void CTransferWnd::SetWnd2Icon()
{
if (m_uWnd2 == 2)
m_uplBtn.SetIcon(_T("ClientsOnQueue"));
else if (m_uWnd2 == 1)
m_uplBtn.SetIcon(_T("Upload"));
else
m_uplBtn.SetIcon(_T("ClientsKnown"));
}
void CTransferWnd::Localize()
{
GetDlgItem(IDC_DOWNLOAD_TEXT)->SetWindowText(GetResString(IDS_TW_DOWNLOADS));
GetDlgItem(IDC_UPLOAD_ICO)->SetWindowText(GetResString(IDS_TW_UPLOADS));
GetDlgItem(IDC_TSTATIC1)->SetWindowText(GetResString(IDS_TW_QUEUE));
GetDlgItem(IDC_QUEUE_REFRESH_BUTTON)->SetWindowText(GetResString(IDS_SV_UPDATE));
uploadlistctrl.Localize();
queuelistctrl.Localize();
downloadlistctrl.Localize();
clientlistctrl.Localize();
UpdateListCount(m_uWnd2);
}
void CTransferWnd::OnBnClickedQueueRefreshButton()
{
CUpDownClient* update = theApp.uploadqueue->GetNextClient(NULL);
while( update ){
theApp.emuledlg->transferwnd->queuelistctrl.RefreshClient( update);
update = theApp.uploadqueue->GetNextClient(update);
}
}
void CTransferWnd::OnHoverUploadList(NMHDR *pNMHDR, LRESULT *pResult)
{
downloadlistactive=false;
*pResult = 0;
}
void CTransferWnd::OnHoverDownloadList(NMHDR *pNMHDR, LRESULT *pResult)
{
downloadlistactive=true;
*pResult = 0;
}
void CTransferWnd::OnTcnSelchangeDltab(NMHDR *pNMHDR, LRESULT *pResult)
{
downloadlistctrl.ChangeCategory(m_dlTab.GetCurSel());
*pResult = 0;
}
// Ornis' download categories
void CTransferWnd::OnNMRclickDltab(NMHDR *pNMHDR, LRESULT *pResult)
{
// Menu for category
CTitleMenu menu;
POINT point;
::GetCursorPos(&point);
CPoint pt(point);
rightclickindex=GetTabUnderMouse(&pt);
UINT flag;
flag=(rightclickindex==0) ? MF_GRAYED:MF_STRING;
CMenu m_CatMenu;
m_CatMenu.CreateMenu();
CMenu m_PrioMenu;
m_PrioMenu.CreateMenu();
// ZZ:DownloadManager -->
Category_Struct* category_Struct = thePrefs.GetCategory(rightclickindex);
m_PrioMenu.AppendMenu(MF_STRING,MP_PRIOLOW,GetResString(IDS_PRIOLOW));
m_PrioMenu.CheckMenuItem(MP_PRIOLOW, category_Struct && category_Struct->prio == PR_LOW ? MF_CHECKED : MF_UNCHECKED);
m_PrioMenu.AppendMenu(MF_STRING,MP_PRIONORMAL,GetResString(IDS_PRIONORMAL));
m_PrioMenu.CheckMenuItem(MP_PRIONORMAL, category_Struct && category_Struct->prio != PR_LOW && category_Struct->prio != PR_HIGH ? MF_CHECKED : MF_UNCHECKED);
m_PrioMenu.AppendMenu(MF_STRING,MP_PRIOHIGH, GetResString(IDS_PRIOHIGH));
m_PrioMenu.CheckMenuItem(MP_PRIOHIGH, category_Struct && category_Struct->prio == PR_HIGH ? MF_CHECKED : MF_UNCHECKED);
//m_PrioMenu.AppendMenu(MF_STRING,MP_PRIOAUTO, GetResString(IDS_PRIOAUTO));
// <-- ZZ:DownloadManager
menu.CreatePopupMenu();
menu.AddMenuTitle(GetResString(IDS_CAT));
if (rightclickindex==0 ){
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0,GetResString(IDS_ALL) );
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+1,GetResString(IDS_ALLOTHERS) );
m_CatMenu.AppendMenu(MF_SEPARATOR);
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+2,GetResString(IDS_STATUS_NOTCOMPLETED) );
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+3,GetResString(IDS_DL_TRANSFCOMPL) );
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+4,GetResString(IDS_WAITING) );
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+5,GetResString(IDS_DOWNLOADING) );
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+6,GetResString(IDS_ERRORLIKE) );
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+7,GetResString(IDS_PAUSED) );
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+8,GetResString(IDS_STOPPED) );
m_CatMenu.AppendMenu(MF_SEPARATOR);
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+10,GetResString(IDS_VIDEO) );
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+11,GetResString(IDS_AUDIO) );
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+12,GetResString(IDS_SEARCH_ARC) );
m_CatMenu.AppendMenu(MF_STRING,MP_CAT_SET0+13,GetResString(IDS_SEARCH_CDIMG) );
m_CatMenu.CheckMenuItem( MP_CAT_SET0+thePrefs.GetAllcatType() ,MF_CHECKED | MF_BYCOMMAND);
menu.AppendMenu(MF_STRING|MF_POPUP,(UINT_PTR)m_CatMenu.m_hMenu, GetResString(IDS_CHANGECATVIEW) );
menu.AppendMenu(MF_SEPARATOR);
}
menu.AppendMenu(MF_STRING,MP_CAT_ADD,GetResString(IDS_CAT_ADD));
menu.AppendMenu(flag,MP_CAT_EDIT,GetResString(IDS_CAT_EDIT));
menu.AppendMenu(flag,MP_CAT_REMOVE, GetResString(IDS_CAT_REMOVE));
menu.AppendMenu(MF_SEPARATOR);
menu.AppendMenu(MF_STRING|MF_POPUP,(UINT_PTR)m_PrioMenu.m_hMenu, GetResString(IDS_PRIORITY) );
menu.AppendMenu(MF_STRING,MP_CANCEL,GetResString(IDS_MAIN_BTN_CANCEL) );
menu.AppendMenu(MF_STRING,MP_STOP, GetResString(IDS_DL_STOP));
menu.AppendMenu(MF_STRING,MP_PAUSE, GetResString(IDS_DL_PAUSE));
menu.AppendMenu(MF_STRING,MP_RESUME, GetResString(IDS_DL_RESUME));
menu.AppendMenu(MF_STRING,MP_RESUMENEXT, GetResString(IDS_DL_RESUMENEXT));
// ZZ:DownloadManager -->
if(rightclickindex != 0 && thePrefs.IsExtControlsEnabled()) {
menu.AppendMenu(MF_STRING,MP_DOWNLOAD_ALPHABETICAL, GetResString(IDS_DOWNLOAD_ALPHABETICAL));
menu.CheckMenuItem(MP_DOWNLOAD_ALPHABETICAL, category_Struct && category_Struct->downloadInAlphabeticalOrder ? MF_CHECKED : MF_UNCHECKED);
}
// <-- ZZ:DownloadManager
menu.TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x, point.y, this);
VERIFY( m_PrioMenu.DestroyMenu() );
VERIFY( m_CatMenu.DestroyMenu() );
VERIFY( menu.DestroyMenu() );
*pResult = 0;
}
void CTransferWnd::OnLvnBegindrag(NMHDR *pNMHDR, LRESULT *pResult)
{
int iSel = downloadlistctrl.GetSelectionMark();
if (iSel==-1) return;
if (((CtrlItem_Struct*)downloadlistctrl.GetItemData(iSel))->type != FILE_TYPE) return;
m_bIsDragging = true;
POINT pt;
::GetCursorPos(&pt);
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
m_nDragIndex = pNMLV->iItem;
m_pDragImage = downloadlistctrl.CreateDragImage( downloadlistctrl.GetSelectionMark() ,&pt);
m_pDragImage->BeginDrag( 0, CPoint(0,0) );
m_pDragImage->DragEnter( GetDesktopWindow(), pNMLV->ptAction );
SetCapture();
m_nDropIndex = -1;
*pResult = 0;
}
void CTransferWnd::OnMouseMove(UINT nFlags, CPoint point)
{
if( !(nFlags & MK_LBUTTON) ) m_bIsDragging = false;
if (m_bIsDragging){
CPoint pt(point); //get our current mouse coordinates
ClientToScreen(&pt); //convert to screen coordinates
m_nDropIndex=GetTabUnderMouse(&pt);
m_dlTab.SetCurSel(m_nDropIndex);
m_dlTab.Invalidate();
::GetCursorPos(&pt);
pt.y-=10;
m_pDragImage->DragMove(pt); //move the drag image to those coordinates
}
}
void CTransferWnd::OnLButtonUp(UINT nFlags, CPoint point)
{
if (m_bIsDragging)
{
ReleaseCapture ();
m_bIsDragging = false;
m_pDragImage->DragLeave (GetDesktopWindow ());
m_pDragImage->EndDrag ();
delete m_pDragImage;
if (m_nDropIndex>-1 && (downloadlistctrl.curTab==0 ||
(downloadlistctrl.curTab>0 && m_nDropIndex!=downloadlistctrl.curTab) )) {
CPartFile* file;
// for multiselections
CTypedPtrList <CPtrList,CPartFile*> selectedList;
POSITION pos = downloadlistctrl.GetFirstSelectedItemPosition();
while(pos != NULL)
{
int index = downloadlistctrl.GetNextSelectedItem(pos);
if(index > -1 && (((CtrlItem_Struct*)downloadlistctrl.GetItemData(index))->type == FILE_TYPE))
selectedList.AddTail( (CPartFile*)((CtrlItem_Struct*)downloadlistctrl.GetItemData(index))->value );
}
while (!selectedList.IsEmpty())
{
file = selectedList.GetHead();
selectedList.RemoveHead();
file->SetCategory(m_nDropIndex);
}
m_dlTab.SetCurSel(downloadlistctrl.curTab);
if (m_dlTab.GetCurSel()>0 || (thePrefs.GetAllcatType()==1 && m_dlTab.GetCurSel()==0) )
downloadlistctrl.ChangeCategory(m_dlTab.GetCurSel());
UpdateCatTabTitles();
} else m_dlTab.SetCurSel(downloadlistctrl.curTab);
downloadlistctrl.Invalidate();
}
}
BOOL CTransferWnd::OnCommand(WPARAM wParam,LPARAM lParam ){
if (wParam>=MP_CAT_SET0 && wParam<=MP_CAT_SET0+20) {
thePrefs.SetAllcatType(wParam-MP_CAT_SET0);
m_nLastCatTT=-1;
m_dlTab.SetCurSel(0);
downloadlistctrl.ChangeCategory(0);
EditCatTabLabel(0,GetCatTitle( thePrefs.GetAllcatType()));
}
switch (wParam){
case MP_CAT_ADD: {
m_nLastCatTT=-1;
int newindex=AddCategorie(_T("?"),thePrefs.GetIncomingDir(),_T(""),_T(""),false);
CCatDialog dialog(newindex);
dialog.DoModal();
if (dialog.WasCancelled())
thePrefs.RemoveCat(newindex);
else {
theApp.emuledlg->searchwnd->UpdateCatTabs();
m_dlTab.InsertItem(newindex,thePrefs.GetCategory(newindex)->title);
EditCatTabLabel(newindex,thePrefs.GetCategory(newindex)->title);
thePrefs.SaveCats();
VerifyCatTabSize();
}
break;
}
case MP_CAT_EDIT: {
m_nLastCatTT=-1;
CCatDialog dialog(rightclickindex);
dialog.DoModal();
CString csName;
csName.Format(_T("%s"), thePrefs.GetCategory(rightclickindex)->title );
EditCatTabLabel(rightclickindex,csName);
theApp.emuledlg->searchwnd->UpdateCatTabs();
thePrefs.SaveCats();
break;
}
case MP_CAT_REMOVE: {
m_nLastCatTT=-1;
theApp.downloadqueue->ResetCatParts(rightclickindex);
thePrefs.RemoveCat(rightclickindex);
m_dlTab.DeleteItem(rightclickindex);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -