switch to SHFileOperation() for file copy and move operations
Modified: trunk/reactos/subsys/system/winefile/winefile.c
Modified: trunk/reactos/subsys/system/winefile/winefile.dsp
_____
Modified: trunk/reactos/subsys/system/winefile/winefile.c
--- trunk/reactos/subsys/system/winefile/winefile.c 2005-05-29
09:39:31 UTC (rev 15653)
+++ trunk/reactos/subsys/system/winefile/winefile.c 2005-05-29
09:58:47 UTC (rev 15654)
@@ -3811,7 +3811,6 @@
}
-
static BOOL is_directory(LPCTSTR target)
{
/*TODO correctly handle UNIX paths */
@@ -3844,7 +3843,8 @@
target[len++] = '/';
lstrcpy(target+len, path);
- }
+ } else
+ lstrcpy(target, path);
/* If the target already exists as directory, create a new
target below this. */
if (is_directory(path)) {
@@ -3854,8 +3854,7 @@
_tsplitpath(source, NULL, NULL, fname, ext);
wsprintf(target, sAppend, path, fname, ext);
- } else
- lstrcpy(target, path);
+ }
return TRUE;
}
@@ -3960,22 +3959,6 @@
}
-static DWORD CALLBACK CopyProgressRoutine(
- LARGE_INTEGER TotalFileSize,
- LARGE_INTEGER TotalBytesTransferred,
- LARGE_INTEGER StreamSize,
- LARGE_INTEGER StreamBytesTransferred,
- DWORD dwStreamNumber,
- DWORD dwCallbackReason,
- HANDLE hSourceFile,
- HANDLE hDestinationFile,
- LPVOID lpData
-)
-{
- return PROGRESS_CONTINUE;
-}
-
-
LRESULT CALLBACK ChildWndProc(HWND hwnd, UINT nmsg, WPARAM wparam,
LPARAM lparam)
{
ChildWnd* child = (ChildWnd*) GetWindowLong(hwnd, GWL_USERDATA);
@@ -4168,14 +4151,13 @@
TCHAR source[BUFFER_LEN],
target[BUFFER_LEN];
if (prompt_target(pane, source,
target)) {
- /*TODO handle moving of
directory trees
- if (is_directory(source)
&& drive_from_path(source)!=drive_from_path(target))
- ...
- */
- if
(MoveFileWithProgress(source, target, CopyProgressRoutine, NULL,
MOVEFILE_COPY_ALLOWED))
+ SHFILEOPSTRUCT shfo =
{hwnd, FO_MOVE, source, target};
+
+
source[lstrlen(source)+1] = '\0';
+
target[lstrlen(target)+1] = '\0';
+
+ if
(!SHFileOperation(&shfo))
refresh_child(child);
- else
-
display_error(hwnd, GetLastError());
}
break;}
@@ -4183,14 +4165,13 @@
TCHAR source[BUFFER_LEN],
target[BUFFER_LEN];
if (prompt_target(pane, source,
target)) {
- /*TODO handle copying of
directory trees
- if
(is_directory(source))
- ...
- */
- if (CopyFileEx(source,
target, CopyProgressRoutine, NULL, NULL,
COPY_FILE_RESTARTABLE|COPY_FILE_ALLOW_DECRYPTED_DESTINATION))
+ SHFILEOPSTRUCT shfo =
{hwnd, FO_COPY, source, target};
+
+
source[lstrlen(source)+1] = '\0';
+
target[lstrlen(target)+1] = '\0';
+
+ if
(!SHFileOperation(&shfo))
refresh_child(child);
- else
-
display_error(hwnd, GetLastError());
}
break;}
_____
Modified: trunk/reactos/subsys/system/winefile/winefile.dsp
--- trunk/reactos/subsys/system/winefile/winefile.dsp 2005-05-29
09:39:31 UTC (rev 15653)
+++ trunk/reactos/subsys/system/winefile/winefile.dsp 2005-05-29
09:58:47 UTC (rev 15654)
@@ -45,7 +45,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D WINE_UNUSED= /FR
/YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D
_WIN32_WINNT=0x0501 /D WINE_UNUSED= /FR /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x407 /d "_DEBUG"
@@ -71,7 +71,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /D "_MBCS" /FR /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "UNICODE" /D
WINE_UNUSED= /FR /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "UNICODE" /D
_WIN32_WINNT=0x0501 /D WINE_UNUSED= /FR /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x407 /d "_DEBUG"
@@ -98,7 +98,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D
"_WINDOWS"
/YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "UNICODE" /D
WINE_UNUSED=
/YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "UNICODE" /D
_WIN32_WINNT=0x0501 /D WINE_UNUSED= /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x407 /d "NDEBUG"
@@ -125,7 +125,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "UNICODE" /D
WINE_UNUSED= /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D WINE_UNUSED= /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D _WIN32_WINNT=0x0501 /D
WINE_UNUSED= /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x407 /d "NDEBUG"