Commit d2018283 authored by Alexandre Julliard's avatar Alexandre Julliard

Authors: Michael Lin <mlin@corvu.com.au>, Michael Jung <mjung@iss.tu-darmstadt.de>

ISFHelper interface support for UnixFolder (currently only stubs).
parent a195890b
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
#include "wine/debug.h" #include "wine/debug.h"
#include "shell32_main.h" #include "shell32_main.h"
#include "shellfolder.h"
#include "shfldr.h" #include "shfldr.h"
#include "shresdef.h" #include "shresdef.h"
#include "pidl.h" #include "pidl.h"
...@@ -98,6 +99,7 @@ typedef struct tagStatStruct { ...@@ -98,6 +99,7 @@ typedef struct tagStatStruct {
typedef struct _UnixFolder { typedef struct _UnixFolder {
const IShellFolder2Vtbl *lpIShellFolder2Vtbl; const IShellFolder2Vtbl *lpIShellFolder2Vtbl;
const IPersistFolder2Vtbl *lpIPersistFolder2Vtbl; const IPersistFolder2Vtbl *lpIPersistFolder2Vtbl;
const ISFHelperVtbl *lpISFHelperVtbl;
LONG m_cRef; LONG m_cRef;
CHAR *m_pszPath; CHAR *m_pszPath;
LPITEMIDLIST m_pidlLocation; LPITEMIDLIST m_pidlLocation;
...@@ -729,6 +731,8 @@ static HRESULT WINAPI UnixFolder_IShellFolder2_QueryInterface(IShellFolder2 *ifa ...@@ -729,6 +731,8 @@ static HRESULT WINAPI UnixFolder_IShellFolder2_QueryInterface(IShellFolder2 *ifa
IsEqualIID(&IID_IPersist, riid)) IsEqualIID(&IID_IPersist, riid))
{ {
*ppv = &This->lpIPersistFolder2Vtbl; *ppv = &This->lpIPersistFolder2Vtbl;
} else if (IsEqualIID(&IID_ISFHelper, riid)) {
*ppv = &This->lpISFHelperVtbl;
} else { } else {
*ppv = NULL; *ppv = NULL;
return E_NOINTERFACE; return E_NOINTERFACE;
...@@ -1302,6 +1306,64 @@ static const IPersistFolder2Vtbl UnixFolder_IPersistFolder2_Vtbl = { ...@@ -1302,6 +1306,64 @@ static const IPersistFolder2Vtbl UnixFolder_IPersistFolder2_Vtbl = {
UnixFolder_IPersistFolder2_GetCurFolder UnixFolder_IPersistFolder2_GetCurFolder
}; };
static HRESULT WINAPI UnixFolder_ISFHelper_QueryInterface(ISFHelper* iface, REFIID riid,
void** ppvObject)
{
return UnixFolder_IShellFolder2_QueryInterface(
(IShellFolder2*)ADJUST_THIS(UnixFolder, ISFHelper, iface), riid, ppvObject);
}
static ULONG WINAPI UnixFolder_ISFHelper_AddRef(ISFHelper* iface)
{
return UnixFolder_IShellFolder2_AddRef(
(IShellFolder2*)ADJUST_THIS(UnixFolder, ISFHelper, iface));
}
static ULONG WINAPI UnixFolder_ISFHelper_Release(ISFHelper* iface)
{
return UnixFolder_IShellFolder2_Release(
(IShellFolder2*)ADJUST_THIS(UnixFolder, ISFHelper, iface));
}
static HRESULT WINAPI UnixFolder_ISFHelper_GetUniqueName(ISFHelper* iface, LPSTR lpName, UINT uLen)
{
FIXME("stub\n");
return E_NOTIMPL;
}
static HRESULT WINAPI UnixFolder_ISFHelper_AddFolder(ISFHelper* iface, HWND hwnd, LPCSTR lpName,
LPITEMIDLIST* ppidlOut)
{
FIXME("stub\n");
return E_NOTIMPL;
}
static HRESULT WINAPI UnixFolder_ISFHelper_DeleteItems(ISFHelper* iface, UINT cidl,
LPCITEMIDLIST* apidl)
{
FIXME("stub\n");
return E_NOTIMPL;
}
static HRESULT WINAPI UnixFolder_ISFHelper_CopyItems(ISFHelper* iface, IShellFolder *psfFrom,
UINT cidl, LPCITEMIDLIST *apidl)
{
FIXME("stub\n");
return E_NOTIMPL;
}
/* VTable for UnixFolder's ISFHelper interface
*/
static const ISFHelperVtbl UnixFolder_ISFHelper_Vtbl = {
UnixFolder_ISFHelper_QueryInterface,
UnixFolder_ISFHelper_AddRef,
UnixFolder_ISFHelper_Release,
UnixFolder_ISFHelper_GetUniqueName,
UnixFolder_ISFHelper_AddFolder,
UnixFolder_ISFHelper_DeleteItems,
UnixFolder_ISFHelper_CopyItems
};
/****************************************************************************** /******************************************************************************
* Unix[Dos]Folder_Constructor [Internal] * Unix[Dos]Folder_Constructor [Internal]
* *
...@@ -1325,6 +1387,7 @@ static HRESULT CreateUnixFolder(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppv, D ...@@ -1325,6 +1387,7 @@ static HRESULT CreateUnixFolder(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppv, D
if(pUnixFolder) { if(pUnixFolder) {
pUnixFolder->lpIShellFolder2Vtbl = &UnixFolder_IShellFolder2_Vtbl; pUnixFolder->lpIShellFolder2Vtbl = &UnixFolder_IShellFolder2_Vtbl;
pUnixFolder->lpIPersistFolder2Vtbl = &UnixFolder_IPersistFolder2_Vtbl; pUnixFolder->lpIPersistFolder2Vtbl = &UnixFolder_IPersistFolder2_Vtbl;
pUnixFolder->lpISFHelperVtbl = &UnixFolder_ISFHelper_Vtbl;
pUnixFolder->m_cRef = 0; pUnixFolder->m_cRef = 0;
pUnixFolder->m_pszPath = NULL; pUnixFolder->m_pszPath = NULL;
pUnixFolder->m_apidlSubDirs = NULL; pUnixFolder->m_apidlSubDirs = NULL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment