📄 downloadui.cpp
字号:
SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
break;
}
case 1:
{
displayString = string("Album :");
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
rcClip.left = dis->rcItem.left + dataOffset;
displayString = string("");
if(dli)
displayString = dli->GetMetaData().Album();
SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
break;
}
case 2:
{
displayString = string("Title :");
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
rcClip.left = dis->rcItem.left + dataOffset;
displayString = string("");
if(dli)
displayString = dli->GetMetaData().Title();
SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
break;
}
case 3:
{
displayString = string("Genre :");
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
rcClip.left = dis->rcItem.left + dataOffset;
displayString = string("");
if(dli)
displayString = dli->GetMetaData().Genre();
SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
break;
}
case 4:
{
displayString = string("Playlist :");
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
rcClip.left = dis->rcItem.left + dataOffset;
displayString = string("");
if(dli)
displayString = dli->PlaylistName();
SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
break;
}
case 5:
{
displayString = string("File Name :");
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
rcClip.left = dis->rcItem.left + dataOffset;
displayString = string("");
if(dli)
displayString = dli->DestinationFile();
SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
break;
}
case 6:
{
displayString = string("File Size :");
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
rcClip.left = dis->rcItem.left + dataOffset;
ostringstream ost;
float total;
ost.precision(2);
ost.flags(ios_base::fixed);
displayString = string("");
if(dli)
{
total = dli->GetTotalBytes();
if(total >= 1048576)
{
total /= 1048576;
ost << total << " MB";
}
else if(total >= 1024)
{
total /= 1024;
ost << total << " KB";
}
else
{
ost << dli->GetTotalBytes() << " Bytes";
}
displayString = ost.str();
}
SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));
ExtTextOut( dis->hDC,
rcClip.left, rcClip.top + 1,
ETO_CLIPPED | ETO_OPAQUE,
&rcClip,
displayString.c_str(),
displayString.size(),
NULL);
break;
}
}
SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));
SetBkColor(dis->hDC, GetSysColor(COLOR_WINDOW));
break;
}
}
return result;
}
BOOL DownloadUI::Destroy()
{
return TRUE;
}
BOOL DownloadUI::Command(int32 command, HWND src)
{
switch(command)
{
case IDC_SHOWHELP:
{
ShowHelp();
break;
}
case IDC_RESUME:
case IDC_PAUSE:
case IDC_CANCEL:
{
uint32 itemCount = ListView_GetItemCount(m_hwndList);
if(itemCount)
{
uint32 selected = ListView_GetSelectedCount(m_hwndList);
if(selected)
{
DownloadItem* dli = NULL;
LV_ITEM item;
for(uint32 i = 0; i < itemCount; i++)
{
if(ListView_GetItemState(m_hwndList, i, LVIS_SELECTED) & LVIS_SELECTED)
{
item.mask = LVIF_PARAM;
item.iItem = i;
item.lParam = 0;
if(ListView_GetItem(m_hwndList, &item))
{
dli = (DownloadItem*)item.lParam;
break;
}
}
}
if(dli)
{
switch(command)
{
case IDC_PAUSE:
{
m_dlm->PauseDownloads();
m_dlm->CancelDownload(dli, true);
break;
}
case IDC_CANCEL:
{
m_dlm->CancelDownload(dli, false);
break;
}
case IDC_RESUME:
{
char szText[100];
GetWindowText(m_hwndResume, szText, 100);
if (strcmp(szText, "Start") == 0)
m_dlm->ResumeDownloads();
else
m_dlm->QueueDownload(dli, true);
break;
}
}
SetButtonStates(dli);
}
}
}
break;
}
case IDC_ADDURL:
{
HWND hwndURL = GetDlgItem(m_hwnd, IDC_URL);
uint32 length = GetWindowTextLength(hwndURL) + 1; // + 0x00
if(length)
{
char* sp = NULL;
char* url = new char[length + 7]; // http://
GetWindowText(hwndURL, url + 7, length);
if(sp = strstr(url + 7, "://"))
{
if(strncasecmp(url + 7, "http://", 7))
{
MessageBox(m_hwnd,
"Only HTTP downloads are supported at this time.",
"Invalid protocol",
MB_OK|MB_ICONINFORMATION);
break;
}
sp = url + 7;
}
else
{
memcpy(url, "http://", 7);
sp = url;
}
m_dlm->AddItem(sp);
delete [] url;
SetWindowText(hwndURL, "");
}
break;
}
case IDC_CLOSE:
{
if (GetAsyncKeyState(VK_SHIFT) < 0)
{
ShowWindow(GetDlgItem(m_hwnd, IDC_DLMTEXT), SW_HIDE);
ShowWindow(GetDlgItem(m_hwnd, IDC_FREETRACKS), SW_HIDE);
ShowWindow(GetDlgItem(m_hwnd, IDC_URL), SW_SHOW);
ShowWindow(GetDlgItem(m_hwnd, IDC_ADDURL), SW_SHOW);
break;
}
SendMessage(m_hwnd, WM_CLOSE, 0, 0);
break;
}
case IDC_CHECK1:
{
bool checkSet = false;
if (Button_GetCheck(m_hwndCheck) == BST_CHECKED)
checkSet = true;
m_prefs->SetPrefBoolean(kCloseDLMOnCompletePref, checkSet);
break;
}
}
return TRUE;
}
BOOL DownloadUI::Notify(int32 controlId, NMHDR* nmh)
{
BOOL result = TRUE;
switch(controlId)
{
case IDC_LIST:
{
NM_LISTVIEW* nmlv = (NM_LISTVIEW*)nmh;
if(nmh->code == LVN_ITEMCHANGED)
{
ListView_RedrawItems(m_hwndInfo, 0, ListView_GetItemCount(m_hwndInfo) - 1);
SetButtonStates((DownloadItem*)nmlv->lParam);
}
break;
}
}
return result;
}
void DownloadUI::SetButtonStates(DownloadItem *dli)
{
switch(dli->GetState())
{
case kDownloadItemState_Queued:
EnableWindow(m_hwndPause, FALSE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -