From 8fca00e0305f879ea7c5299862d6d3e18358843a Mon Sep 17 00:00:00 2001 From: Michael Jung Date: Thu, 27 Oct 2005 12:09:59 +0000 Subject: [PATCH] Implemented UnixFolder's IPersistPropertyBag::Load method. --- dlls/shell32/Makefile.in | 2 +- dlls/shell32/shfldr_unixfs.c | 28 ++++++++++++++++++++++++++-- dlls/shell32/tests/shlfolder.c | 2 +- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/dlls/shell32/Makefile.in b/dlls/shell32/Makefile.in index ae4ecb2f2f8..8afe5098b45 100644 --- a/dlls/shell32/Makefile.in +++ b/dlls/shell32/Makefile.in @@ -6,7 +6,7 @@ VPATH = @srcdir@ MODULE = shell32.dll IMPORTLIB = libshell32.$(IMPLIBEXT) IMPORTS = shlwapi comctl32 user32 gdi32 advapi32 kernel32 ntdll -DELAYIMPORTS = ole32 +DELAYIMPORTS = ole32 oleaut32 EXTRALIBS = -luuid $(LIBUNICODE) C_SRCS = \ diff --git a/dlls/shell32/shfldr_unixfs.c b/dlls/shell32/shfldr_unixfs.c index 7d8283675b0..71e2dfd7288 100644 --- a/dlls/shell32/shfldr_unixfs.c +++ b/dlls/shell32/shfldr_unixfs.c @@ -1307,8 +1307,32 @@ static HRESULT WINAPI UnixFolder_IPersistPropertyBag_InitNew(IPersistPropertyBag static HRESULT WINAPI UnixFolder_IPersistPropertyBag_Load(IPersistPropertyBag *iface, IPropertyBag *pPropertyBag, IErrorLog *pErrorLog) { - FIXME("() stub\n"); - return E_NOTIMPL; + UnixFolder *This = ADJUST_THIS(UnixFolder, IPersistPropertyBag, iface); + static const WCHAR wszTarget[] = { 'T','a','r','g','e','t', 0 }, wszNull[] = { 0 }; + PERSIST_FOLDER_TARGET_INFO pftiTarget; + VARIANT var; + HRESULT hr; + + TRACE("(iface=%p, pPropertyBag=%p, pErrorLog=%p)\n", iface, pPropertyBag, pErrorLog); + + if (!pPropertyBag) + return E_POINTER; + + /* Get 'Target' property from the property bag. */ + V_VT(&var) = VT_BSTR; + hr = IPropertyBag_Read(pPropertyBag, wszTarget, &var, NULL); + if (FAILED(hr)) + return E_FAIL; + lstrcpyW(pftiTarget.szTargetParsingName, V_BSTR(&var)); + SysFreeString(V_BSTR(&var)); + + pftiTarget.pidlTargetFolder = NULL; + lstrcpyW(pftiTarget.szNetworkProvider, wszNull); + pftiTarget.dwAttributes = -1; + pftiTarget.csidl = -1; + + return UnixFolder_IPersistFolder3_InitializeEx( + STATIC_CAST(IPersistFolder3, This), NULL, NULL, &pftiTarget); } static HRESULT WINAPI UnixFolder_IPersistPropertyBag_Save(IPersistPropertyBag *iface, diff --git a/dlls/shell32/tests/shlfolder.c b/dlls/shell32/tests/shlfolder.c index 087a52f32b2..ffdd150e8d9 100644 --- a/dlls/shell32/tests/shlfolder.c +++ b/dlls/shell32/tests/shlfolder.c @@ -872,7 +872,7 @@ void test_FolderShortcut(void) { if (FAILED(hr)) return; hr = IPersistPropertyBag_Load(pPersistPropertyBag, &InitPropertyBag, NULL); - todo_wine { ok(SUCCEEDED(hr), "IPersistPropertyBag_Load failed! hr = %08lx\n", hr); } + ok(SUCCEEDED(hr), "IPersistPropertyBag_Load failed! hr = %08lx\n", hr); if (FAILED(hr)) { IPersistPropertyBag_Release(pPersistPropertyBag); return; -- 2.11.4.GIT