[SHELL32][BROWSEUI] Implement SetAnimation so that AVIs from shell32 can be used when the progress dialog is in use. Brought to you by Robert Naumann. CORE-9327

svn path=/trunk/; revision=67375
This commit is contained in:
Amine Khaldi 2015-04-23 22:35:23 +00:00
parent 4cfa2fc11c
commit 551a6399a2
3 changed files with 23 additions and 9 deletions

View file

@ -343,6 +343,13 @@ HRESULT WINAPI CProgressDialog::SetTitle(LPCWSTR pwzTitle)
HRESULT WINAPI CProgressDialog::SetAnimation(HINSTANCE hInstance, UINT uiResourceId)
{
HWND hAnimation = GetDlgItem(this->hwnd, IDD_PROGRESS_DLG);
SetWindowLongW(hAnimation, GWL_STYLE,
GetWindowLongW(hAnimation, GWL_STYLE)|ACS_TRANSPARENT|ACS_CENTER|ACS_AUTOPLAY);
if(!Animate_OpenEx(hAnimation,hInstance,MAKEINTRESOURCEW(uiResourceId)))
return S_FALSE;
return S_OK;
}

View file

@ -479,20 +479,24 @@ static void _SetOperationTitle(FILE_OPERATION *op) {
if (op->progress == NULL)
return;
WCHAR szTitle[50], szPreflight[50];
UINT animation_id = NULL;
switch (op->req->wFunc)
{
case FO_COPY:
LoadStringW(shell32_hInstance, IDS_FILEOOP_COPYING, szTitle, sizeof(szTitle)/sizeof(WCHAR));
LoadStringW(shell32_hInstance, IDS_FILEOOP_FROM_TO, op->szBuilderString, sizeof( op->szBuilderString)/sizeof(WCHAR));
animation_id = IDA_SHELL_COPY;
break;
case FO_DELETE:
LoadStringW(shell32_hInstance, IDS_FILEOOP_DELETING, szTitle, sizeof(szTitle)/sizeof(WCHAR));
LoadStringW(shell32_hInstance, IDS_FILEOOP_FROM, op->szBuilderString, sizeof( op->szBuilderString)/sizeof(WCHAR));
animation_id = IDA_SHELL_DELETE;
break;
case FO_MOVE:
LoadStringW(shell32_hInstance, IDS_FILEOOP_MOVING, szTitle, sizeof(szTitle)/sizeof(WCHAR));
LoadStringW(shell32_hInstance, IDS_FILEOOP_FROM_TO, op->szBuilderString, sizeof( op->szBuilderString)/sizeof(WCHAR));
animation_id = IDA_SHELL_COPY;
break;
default:
return;
@ -501,6 +505,7 @@ static void _SetOperationTitle(FILE_OPERATION *op) {
op->progress->SetTitle(szTitle);
op->progress->SetLine(1, szPreflight, false, NULL);
op->progress->SetAnimation(shell32_hInstance, animation_id);
}
static void _SetOperationTexts(FILE_OPERATION *op, LPCWSTR src, LPCWSTR dest) {

View file

@ -488,16 +488,18 @@
* AVI resources
*
* windows shell32 has 14 of them: 150-152 and 160-170
* FIXME: Need to add them, but for now just let them use the same: searching.avi
* (also to limit shell32's size)
* FIXME: Add 150-152
*/
#define IDR_AVI_SEARCH 150
#define IDR_AVI_SEARCHING 151
#define IDR_AVI_FINDCOMPUTER 152
#define IDR_AVI_FILEMOVE 160
#define IDR_AVI_FILECOPY 161
#define IDR_AVI_FILENUKE 163
#define IDR_AVI_FILEDELETE 164
#define IDA_SHELL_COPY 160
#define IDA_SHELL_COPY1 161
#define IDA_SHELL_COPY2 167
#define IDA_SHELL_COPY3 168
#define IDA_SHELL_RECYCLE 162
#define IDA_SHELL_EMPTY_RECYCLE 163
#define IDA_SHELL_DELETE 164
#define IDA_SHELL_DELETE1 169
#define IDA_SHELL_DOWNLOAD 170
/* Desktop Browser commands */
#define FCIDM_DESKBROWSER_CLOSE 0xA004