Introduced some declarations and resources needed for a more complete

implementation of SHFileOperation.
This commit is contained in:
Rolf Kalbermatter 2002-12-19 04:11:22 +00:00 committed by Alexandre Julliard
parent 31a7cad486
commit 7df7cdb6e2
5 changed files with 41 additions and 37 deletions

View File

@ -160,13 +160,15 @@ void InitChangeNotifications(void);
void FreeChangeNotifications(void);
/* file operation */
#define ASK_DELETE_FILE 1
#define ASK_DELETE_FOLDER 2
#define ASK_DELETE_MULTIPLE_ITEM 3
#define ASK_DELETE_FILE 1
#define ASK_DELETE_FOLDER 2
#define ASK_DELETE_MULTIPLE_ITEM 3
#define ASK_CREATE_FOLDER 4
#define ASK_OVERWRITE_FILE 5
BOOL SHELL_DeleteDirectoryA(LPCSTR pszDir, BOOL bShowUI);
BOOL SHELL_DeleteFileA(LPCSTR pszFile, BOOL bShowUI);
BOOL SHELL_WarnItemDelete(int nKindOfDialog, LPCSTR szDir);
BOOL SHELL_ConfirmDialog(int nKindOfDialog, LPCSTR szDir);
/* 16-bit functions */
void WINAPI DragAcceptFiles16(HWND16 hWnd, BOOL16 b);

View File

@ -978,7 +978,7 @@ static HRESULT WINAPI ISFHelper_fnDeleteItems (ISFHelper * iface, UINT cidl, LPC
char tmp[8];
snprintf (tmp, sizeof (tmp), "%d", cidl);
if (!SHELL_WarnItemDelete (ASK_DELETE_MULTIPLE_ITEM, tmp))
if (!SHELL_ConfirmDialog(ASK_DELETE_MULTIPLE_ITEM, tmp))
return E_FAIL;
bConfirm = FALSE;
}

View File

@ -35,41 +35,39 @@
WINE_DEFAULT_DEBUG_CHANNEL(shell);
BOOL SHELL_WarnItemDelete (int nKindOfDialog, LPCSTR szDir)
BOOL SHELL_ConfirmDialog (int nKindOfDialog, LPCSTR szDir)
{
char szCaption[255], szText[255], szBuffer[MAX_PATH + 256];
UINT caption_resource_id, text_resource_id;
if(nKindOfDialog == ASK_DELETE_FILE)
{
LoadStringA(shell32_hInstance, IDS_DELETEITEM_TEXT, szText,
sizeof(szText));
LoadStringA(shell32_hInstance, IDS_DELETEITEM_CAPTION,
szCaption, sizeof(szCaption));
}
else if(nKindOfDialog == ASK_DELETE_FOLDER)
{
LoadStringA(shell32_hInstance, IDS_DELETEITEM_TEXT, szText,
sizeof(szText));
LoadStringA(shell32_hInstance, IDS_DELETEFOLDER_CAPTION,
szCaption, sizeof(szCaption));
}
else if(nKindOfDialog == ASK_DELETE_MULTIPLE_ITEM)
{
LoadStringA(shell32_hInstance, IDS_DELETEMULTIPLE_TEXT, szText,
sizeof(szText));
LoadStringA(shell32_hInstance, IDS_DELETEITEM_CAPTION,
szCaption, sizeof(szCaption));
}
else {
FIXME("Called without a valid nKindOfDialog specified!\n");
LoadStringA(shell32_hInstance, IDS_DELETEITEM_TEXT, szText,
sizeof(szText));
LoadStringA(shell32_hInstance, IDS_DELETEITEM_CAPTION,
szCaption, sizeof(szCaption));
switch(nKindOfDialog) {
case ASK_DELETE_FILE:
caption_resource_id = IDS_DELETEITEM_CAPTION;
text_resource_id = IDS_DELETEITEM_TEXT;
break;
case ASK_DELETE_FOLDER:
caption_resource_id = IDS_DELETEFOLDER_CAPTION;
text_resource_id = IDS_DELETEITEM_TEXT;
break;
case ASK_DELETE_MULTIPLE_ITEM:
caption_resource_id = IDS_DELETEITEM_CAPTION;
text_resource_id = IDS_DELETEMULTIPLE_TEXT;
break;
case ASK_OVERWRITE_FILE:
caption_resource_id = IDS_OVERWRITEFILE_CAPTION;
text_resource_id = IDS_OVERWRITEFILE_TEXT;
break;
default:
FIXME(" Unhandled nKindOfDialog %d stub\n", nKindOfDialog);
return FALSE;
}
FormatMessageA(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ARGUMENT_ARRAY,
szText, 0, 0, szBuffer, sizeof(szBuffer), (va_list*)&szDir);
LoadStringA(shell32_hInstance, caption_resource_id, szCaption, sizeof(szCaption));
LoadStringA(shell32_hInstance, text_resource_id, szText, sizeof(szText));
FormatMessageA(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ARGUMENT_ARRAY,
szText, 0, 0, szBuffer, sizeof(szBuffer), (va_list*)&szDir);
return (IDOK == MessageBoxA(GetActiveWindow(), szBuffer, szCaption, MB_OKCANCEL | MB_ICONEXCLAMATION));
}
@ -91,7 +89,7 @@ BOOL SHELL_DeleteDirectoryA(LPCSTR pszDir, BOOL bShowUI)
PathAddBackslashA(szTemp);
strcat(szTemp, "*.*");
if (bShowUI && !SHELL_WarnItemDelete(ASK_DELETE_FOLDER, pszDir))
if (bShowUI && !SHELL_ConfirmDialog(ASK_DELETE_FOLDER, pszDir))
return FALSE;
if(INVALID_HANDLE_VALUE != (hFind = FindFirstFileA(szTemp, &wfd)))
@ -124,7 +122,7 @@ BOOL SHELL_DeleteDirectoryA(LPCSTR pszDir, BOOL bShowUI)
BOOL SHELL_DeleteFileA(LPCSTR pszFile, BOOL bShowUI)
{
if (bShowUI && !SHELL_WarnItemDelete(ASK_DELETE_FILE, pszFile))
if (bShowUI && !SHELL_ConfirmDialog(ASK_DELETE_FILE, pszFile))
return FALSE;
return DeleteFileA(pszFile);

View File

@ -152,6 +152,8 @@ STRINGTABLE DISCARDABLE
IDS_DELETEFOLDER_CAPTION "Confirm folder delete"
IDS_DELETEITEM_TEXT "Are you sure you want to delete '%1'?"
IDS_DELETEMULTIPLE_TEXT "Are you sure you want to delete these %1 items?"
IDS_OVERWRITEFILE_TEXT "OverWrite File %1?"
IDS_OVERWRITEFILE_CAPTION "Confirm File OverWrite"
}
shv_accel ACCELERATORS

View File

@ -46,6 +46,8 @@
#define IDS_DELETEFOLDER_CAPTION 33
#define IDS_DELETEITEM_TEXT 34
#define IDS_DELETEMULTIPLE_TEXT 35
#define IDS_OVERWRITEFILE_CAPTION 36
#define IDS_OVERWRITEFILE_TEXT 37
/* browse for folder dialog box */
#define IDD_STATUS 0x3743