First part of patch to extend functionality of SHFileOperation
Rolf Kalbermatter
rolf.kalbermatter at citeng.com
Tue Dec 17 16:06:40 CST 2002
Changelog
* dlls/shell32/shell32_main.h
* dlls/shell32/shres.rc
* dlls/shell32/shresdef.h
* dlls/shell32/shfldr_fs.c
* dlls/shell32/shlfileop.c
This introduces some declarations and resources needed for a more complete
implementation of SHFileOperation.
This should be in respect of functionality a no-op.
Rolf Kalbermatter
Index: dlls/shell32/shell32_main.h
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shell32_main.h,v
retrieving revision 1.61
diff -u -r1.61 shell32_main.h
--- dlls/shell32/shell32_main.h 15 Dec 2002 01:14:04 -0000 1.61
+++ dlls/shell32/shell32_main.h 17 Dec 2002 21:26:18 -0000
@@ -161,13 +161,15 @@
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_MULTIP LE_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);
Index: dlls/shell32/shres.rc
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shres.rc,v
retrieving revision 1.26
diff -u -r1.26 shres.rc
--- dlls/shell32/shres.rc 20 Nov 2002 19:47:44 -0000 1.26
+++ dlls/shell32/shres.rc 17 Dec 2002 21:50:15 -0000
@@ -152,6 +152,8 @@
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
Index: dlls/shell32/shresdef.h
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shresdef.h,v
retrieving revision 1.9
diff -u -r1.9 shresdef.h
--- dlls/shell32/shresdef.h 14 Aug 2002 21:03:55 -0000 1.9
+++ dlls/shell32/shresdef.h 17 Dec 2002 21:51:14 -0000
@@ -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
Index: dlls/shell32/shfldr_fs.c
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shfldr_fs.c,v
retrieving revision 1.5
diff -u -r1.5 shfldr_fs.c
--- dlls/shell32/shfldr_fs.c 15 Dec 2002 01:14:04 -0000 1.5
+++ dlls/shell32/shfldr_fs.c 17 Dec 2002 21:49:18 -0000
@@ -978,7 +978,7 @@
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;
}
Index: dlls/shell32/shlfileop.c
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shlfileop.c,v
retrieving revision 1.21
diff -u -r1.21 shlfileop.c
--- dlls/shell32/shlfileop.c 16 Dec 2002 22:40:34 -0000 1.21
+++ dlls/shell32/shlfileop.c 17 Dec 2002 21:56:56 -0000
@@ -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 @@
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_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);
More information about the wine-patches
mailing list