ReactOS 0.4.17-dev-573-g8315b8c
CFolderItem Class Reference

#include <CFolderItems.h>

Inheritance diagram for CFolderItem:
Collaboration diagram for CFolderItem:

Public Member Functions

 CFolderItem ()
 
 ~CFolderItem ()
 
HRESULT Initialize (Folder *folder, LPCITEMIDLIST idlist)
 
LPCITEMIDLIST GetAbsoluteIDList ()
 
HWND GetHwnd ()
 
IUnknownGetSite ()
 
HRESULT GetFindDataFromIDList (WIN32_FIND_DATA &wfd)
 
HRESULT HasAttribute (DWORD sfgaof, VARIANT_BOOL *pB)
 
HRESULT GetExtendedProperty (REFPROPERTYKEY pkey, VARIANT *pv)
 
STDMETHOD() get_Application (IDispatch **ppid) override
 
STDMETHOD() get_Parent (IDispatch **ppid) override
 
STDMETHOD() get_Name (BSTR *pbs) override
 
STDMETHOD() put_Name (BSTR bs) override
 
STDMETHOD() get_Path (BSTR *pbs) override
 
STDMETHOD() get_GetLink (IDispatch **ppid) override
 
STDMETHOD() get_GetFolder (IDispatch **ppid) override
 
STDMETHOD() get_IsLink (VARIANT_BOOL *pb) override
 
STDMETHOD() get_IsFolder (VARIANT_BOOL *pb) override
 
STDMETHOD() get_IsFileSystem (VARIANT_BOOL *pb) override
 
STDMETHOD() get_IsBrowsable (VARIANT_BOOL *pb) override
 
STDMETHOD() get_ModifyDate (DATE *pdt) override
 
STDMETHOD() put_ModifyDate (DATE dt) override
 
STDMETHOD() get_Size (LONG *pul) override
 
STDMETHOD() get_Type (BSTR *pbs) override
 
STDMETHOD() Verbs (FolderItemVerbs **ppfic) override
 
STDMETHOD() InvokeVerb (VARIANT vVerb) override
 
STDMETHOD() InvokeVerbEx (VARIANT vVerb, VARIANT vArgs) override
 
STDMETHOD() ExtendedProperty (BSTR bsPropName, VARIANT *pv) override
 
STDMETHOD() SetParentAndItem (PCIDLIST_ABSOLUTE, IShellFolder *, PCUITEMID_CHILD) override
 
STDMETHOD() GetParentAndItem (PIDLIST_ABSOLUTE *ppidlParent, IShellFolder **ppsf, PITEMID_CHILD *ppidlChild) override
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
HRESULT SetParentAndItem ([in] PCIDLIST_ABSOLUTE pidlParent, [in] IShellFolder *psf, [in] PCUITEMID_CHILD pidlChild)
 
HRESULT GetParentAndItem ([out, optional] PIDLIST_ABSOLUTE *ppidlParent, [out, optional] IShellFolder **ppsf, [out, optional] PITEMID_CHILD *ppidlChild)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 

Static Public Member Functions

static HRESULT GetParentAndItem (const VARIANT *pV, IParentAndItem **ppPAI)
 
static PITEMID_CHILD CloneLeafPidl (const VARIANT *pV)
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRYGetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 

Private Member Functions

HRESULT GetParentShellFolderAndItem (REFIID riid, void **ppv, PCUITEMID_CHILD &pidlLast)
 

Private Attributes

CComHeapPtr< ITEMIDLISTm_idlist
 
CComPtr< Folder > m_Folder
 

Additional Inherited Members

- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 12 of file CFolderItems.h.

Constructor & Destructor Documentation

◆ CFolderItem()

CFolderItem::CFolderItem ( )

Definition at line 80 of file CFolderItems.cpp.

81{
82}

◆ ~CFolderItem()

CFolderItem::~CFolderItem ( )

Definition at line 84 of file CFolderItems.cpp.

85{
86}

Member Function Documentation

◆ CloneLeafPidl()

PITEMID_CHILD CFolderItem::CloneLeafPidl ( const VARIANT pV)
static

Definition at line 118 of file CFolderItems.cpp.

119{
121 PITEMID_CHILD pidl;
122 if (SUCCEEDED(GetParentAndItem(pV, &pPAI)) && SUCCEEDED(pPAI->GetParentAndItem(NULL, NULL, &pidl)))
123 return pidl;
124 return NULL;
125}
static HRESULT GetParentAndItem(const VARIANT *pV, IParentAndItem **ppPAI)
#define NULL
Definition: types.h:112
#define SUCCEEDED(hr)
Definition: intsafe.h:50

Referenced by CFolder::GetDetailsOf().

◆ ExtendedProperty()

HRESULT STDMETHODCALLTYPE CFolderItem::ExtendedProperty ( BSTR  bsPropName,
VARIANT pv 
)
override

Definition at line 358 of file CFolderItems.cpp.

359{
360 if (!pv)
361 return E_INVALIDARG;
362
363 if (!lstrcmpiW(bsPropName, L"InfoTip"))
364 {
365 VARIANT v;
366 V_VT(&v) = VT_DISPATCH;
367 V_DISPATCH(&v) = static_cast<IDispatch*>(this);
368 if (SUCCEEDED(m_Folder->GetDetailsOf(v, CFolder::INFOTIPCOLUMN, &V_BSTR(pv))))
369 {
370 V_VT(pv) = VT_BSTR;
371 return S_OK;
372 }
373 }
374
375 PROPERTYKEY pkeybuf;
376 const PROPERTYKEY *pPK = SHELL_GetPropertyKeyFromString(bsPropName, &pkeybuf);
377 if (pPK && GetExtendedProperty(*pPK, pv) == S_OK)
378 return S_OK;
379
380 V_VT(pv) = VT_EMPTY;
381 return S_FALSE;
382}
HRESULT GetExtendedProperty(REFPROPERTYKEY pkey, VARIANT *pv)
CComPtr< Folder > m_Folder
Definition: CFolderItems.h:20
@ INFOTIPCOLUMN
Definition: CFolder.h:28
#define E_INVALIDARG
Definition: ddrawi.h:101
@ VT_BSTR
Definition: compat.h:2303
@ VT_EMPTY
Definition: compat.h:2295
@ VT_DISPATCH
Definition: compat.h:2304
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4171
#define L(x)
Definition: resources.c:13
const GLdouble * v
Definition: gl.h:2040
#define S_OK
Definition: intsafe.h:52
#define V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
#define V_DISPATCH(A)
Definition: oleauto.h:239
const PROPERTYKEY * SHELL_GetPropertyKeyFromString(_In_ PCWSTR pszString, _Out_ PROPERTYKEY *pkey)
Definition: prop.cpp:60
#define S_FALSE
Definition: winerror.h:3451

◆ get_Application()

HRESULT STDMETHODCALLTYPE CFolderItem::get_Application ( IDispatch **  ppid)
override

Definition at line 138 of file CFolderItems.cpp.

139{
140 TRACE("(%p, %p)\n", this, ppid);
141 return m_Folder->get_Application(ppid);
142}
#define TRACE(s)
Definition: solgame.cpp:4

◆ get_GetFolder()

HRESULT STDMETHODCALLTYPE CFolderItem::get_GetFolder ( IDispatch **  ppid)
override

Definition at line 219 of file CFolderItems.cpp.

220{
221 return CFolder::CreateInstance(GetAbsoluteIDList(), *static_cast<Folder*>(m_Folder), IID_PPV_ARG(IDispatch, ppid));
222}
LPCITEMIDLIST GetAbsoluteIDList()
Definition: CFolderItems.h:29
static HRESULT CreateInstance(LPCITEMIDLIST pidl, IDispatch *pDispatch, REFIID riid, void **ppv)
Definition: CFolder.h:55
#define IID_PPV_ARG(Itype, ppType)

◆ get_GetLink()

HRESULT STDMETHODCALLTYPE CFolderItem::get_GetLink ( IDispatch **  ppid)
override

Definition at line 213 of file CFolderItems.cpp.

214{
215 TRACE("(%p, %p)\n", this, ppid);
216 return E_NOTIMPL;
217}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ get_IsBrowsable()

HRESULT STDMETHODCALLTYPE CFolderItem::get_IsBrowsable ( VARIANT_BOOL pb)
override

Definition at line 248 of file CFolderItems.cpp.

249{
250 TRACE("(%p, %p)\n", this, pb);
251 return HasAttribute(SFGAO_BROWSABLE, pb);
252}
HRESULT HasAttribute(DWORD sfgaof, VARIANT_BOOL *pB)

◆ get_IsFileSystem()

HRESULT STDMETHODCALLTYPE CFolderItem::get_IsFileSystem ( VARIANT_BOOL pb)
override

Definition at line 242 of file CFolderItems.cpp.

243{
244 TRACE("(%p, %p)\n", this, pb);
245 return HasAttribute(SFGAO_FILESYSTEM, pb);
246}

◆ get_IsFolder()

HRESULT STDMETHODCALLTYPE CFolderItem::get_IsFolder ( VARIANT_BOOL pb)
override

Definition at line 236 of file CFolderItems.cpp.

237{
238 TRACE("(%p, %p)\n", this, pb);
239 return HasAttribute(SFGAO_FOLDER, pb);
240}

◆ get_IsLink()

HRESULT STDMETHODCALLTYPE CFolderItem::get_IsLink ( VARIANT_BOOL pb)
override

Definition at line 230 of file CFolderItems.cpp.

231{
232 TRACE("(%p, %p)\n", this, pb);
233 return HasAttribute(SFGAO_LINK, pb);
234}

◆ get_ModifyDate()

HRESULT STDMETHODCALLTYPE CFolderItem::get_ModifyDate ( DATE pdt)
override

Definition at line 254 of file CFolderItems.cpp.

255{
256 TRACE("(%p, %p)\n", this, pdt);
257
258 WIN32_FIND_DATA wfd;
260 {
261 FILETIME ft;
262 FileTimeToLocalFileTime(&wfd.ftLastWriteTime, &ft);
263 WORD dd, dt;
264 if (FileTimeToDosDateTime(&ft, &dd, &dt) && DosDateTimeToVariantTime(dd, dt, pdt))
265 return S_OK;
266 }
267 *pdt = 0;
268 return S_FALSE;
269}
HRESULT GetFindDataFromIDList(WIN32_FIND_DATA &wfd)
BOOL WINAPI FileTimeToLocalFileTime(IN CONST FILETIME *lpFileTime, OUT LPFILETIME lpLocalFileTime)
Definition: time.c:216
BOOL WINAPI FileTimeToDosDateTime(IN CONST FILETIME *lpFileTime, OUT LPWORD lpFatDate, OUT LPWORD lpFatTime)
Definition: time.c:37
unsigned short WORD
Definition: ntddk_ex.h:93
INT WINAPI DosDateTimeToVariantTime(USHORT wDosDate, USHORT wDosTime, double *pDateOut)
Definition: variant.c:1188

◆ get_Name()

HRESULT STDMETHODCALLTYPE CFolderItem::get_Name ( BSTR pbs)
override

Definition at line 153 of file CFolderItems.cpp.

154{
155 TRACE("(%p, %p)\n", this, pbs);
156
157 *pbs = NULL;
158
160 PCUITEMID_CHILD last_part;
163 return hr;
164
165 STRRET strret;
166 hr = Parent->GetDisplayNameOf(last_part, SHGDN_INFOLDER, &strret);
168 hr = StrRetToBSTR(&strret, last_part, pbs);
169
170 return hr;
171}
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
Definition: acpixf.h:732
HRESULT GetParentShellFolderAndItem(REFIID riid, void **ppv, PCUITEMID_CHILD &pidlLast)
HRESULT hr
Definition: delayimp.cpp:582
HRESULT WINAPI StrRetToBSTR(STRRET *lpStrRet, LPCITEMIDLIST pidl, BSTR *pBstrOut)
Definition: string.c:418
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:33
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
Definition: shtypes.idl:70

◆ get_Parent()

HRESULT STDMETHODCALLTYPE CFolderItem::get_Parent ( IDispatch **  ppid)
override

Definition at line 144 of file CFolderItems.cpp.

145{
146 TRACE("(%p, %p)\n", this, ppid);
147
148 if (!ppid)
149 return E_INVALIDARG;
150 return m_Folder->QueryInterface(IID_PPV_ARG(IDispatch, ppid));
151}

◆ get_Path()

HRESULT STDMETHODCALLTYPE CFolderItem::get_Path ( BSTR pbs)
override

Definition at line 197 of file CFolderItems.cpp.

198{
199 CComPtr<IShellFolder> psfDesktop;
200
201 HRESULT hr = SHGetDesktopFolder(&psfDesktop);
202 if (!SUCCEEDED(hr))
203 return hr;
204
205 STRRET strret;
206 hr = psfDesktop->GetDisplayNameOf(m_idlist, SHGDN_FORPARSING, &strret);
208 return hr;
209
210 return StrRetToBSTR(&strret, NULL, pbs);
211}
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
CComHeapPtr< ITEMIDLIST > m_idlist
Definition: CFolderItems.h:19

◆ get_Size()

HRESULT STDMETHODCALLTYPE CFolderItem::get_Size ( LONG pul)
override

Definition at line 277 of file CFolderItems.cpp.

278{
279 TRACE("(%p, %p)\n", this, pul);
280
281 WIN32_FIND_DATA wfd;
283 {
284 *pul = wfd.nFileSizeLow;
285 return S_OK;
286 }
287 *pul = 0;
288 return S_FALSE;
289}

◆ get_Type()

HRESULT STDMETHODCALLTYPE CFolderItem::get_Type ( BSTR pbs)
override

Definition at line 291 of file CFolderItems.cpp.

292{
293 TRACE("(%p, %p)\n", this, pbs);
294
295 VARIANT v;
296 V_VT(&v) = VT_EMPTY;
297 if (SUCCEEDED(GetExtendedProperty(PKEY_ItemTypeText, &v)))
298 {
300 {
301 *pbs = V_BSTR(&v);
302 return S_OK;
303 }
304 VariantClear(&v);
305 }
307 return hr == S_OK ? S_FALSE : hr;
308}
static HRESULT SHELL_SysAllocString(PCWSTR in, BSTR *out)
Definition: shell32_main.h:262
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, const VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
Definition: variant.c:939
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:626

◆ GetAbsoluteIDList()

LPCITEMIDLIST CFolderItem::GetAbsoluteIDList ( )
inline

Definition at line 29 of file CFolderItems.h.

29{ return m_idlist; }

Referenced by get_GetFolder(), GetParentAndItem(), GetParentShellFolderAndItem(), HasAttribute(), and Verbs().

◆ GetExtendedProperty()

HRESULT CFolderItem::GetExtendedProperty ( REFPROPERTYKEY  pkey,
VARIANT pv 
)

Definition at line 350 of file CFolderItems.cpp.

351{
353 PCUITEMID_CHILD pidlLeaf;
355 return FAILED(hr) ? hr : psf->GetDetailsEx(pidlLeaf, reinterpret_cast<const SHCOLUMNID*>(&pkey), pv);
356}
#define FAILED(hr)
Definition: intsafe.h:51

Referenced by ExtendedProperty(), and get_Type().

◆ GetFindDataFromIDList()

HRESULT CFolderItem::GetFindDataFromIDList ( WIN32_FIND_DATA wfd)

Definition at line 127 of file CFolderItems.cpp.

128{
130 PCUITEMID_CHILD pidlLeaf;
133 return hr;
134 return SHGetDataFromIDListW(psf, pidlLeaf, SHGDFIL_FINDDATA, &wfd, sizeof(wfd));
135}
HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID dest, int len)
Definition: pidl.c:1358
#define SHGDFIL_FINDDATA
Definition: shlobj.h:1468

Referenced by get_ModifyDate(), and get_Size().

◆ GetHwnd()

HWND CFolderItem::GetHwnd ( )
inline

Definition at line 30 of file CFolderItems.h.

30{ return NULL; }

Referenced by InvokeVerbEx(), and put_Name().

◆ GetParentAndItem() [1/2]

HRESULT CFolderItem::GetParentAndItem ( const VARIANT pV,
IParentAndItem **  ppPAI 
)
static

Definition at line 99 of file CFolderItems.cpp.

100{
101 if (!pV)
102 return E_POINTER;
103 pV = VariantDerefVariant(pV);
104
105 IUnknown *pUnk = NULL;
106 switch (V_VT(pV))
107 {
108 case VT_DISPATCH | VT_BYREF:
109 pUnk = V_DISPATCHREF(pV) ? *V_DISPATCHREF(pV) : NULL;
110 break;
111 case VT_DISPATCH:
112 pUnk = V_DISPATCH(pV);
113 break;
114 }
116}
@ VT_BYREF
Definition: compat.h:2342
static VARIANT * VariantDerefVariant(_In_ const VARIANT *pV)
Definition: prop.h:36
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
nsresult QueryInterface(nsIIDRef riid, void **result)
#define V_DISPATCHREF(A)
Definition: oleauto.h:240
#define E_POINTER
Definition: winerror.h:3480

Referenced by CloneLeafPidl().

◆ GetParentAndItem() [2/2]

HRESULT STDMETHODCALLTYPE CFolderItem::GetParentAndItem ( PIDLIST_ABSOLUTE ppidlParent,
IShellFolder **  ppsf,
PITEMID_CHILD ppidlChild 
)
override

Implements IParentAndItem.

Definition at line 384 of file CFolderItems.cpp.

385{
386 if (ppidlParent)
387 *ppidlParent = NULL;
388 if (ppsf)
389 *ppsf = NULL;
390 if (ppidlChild)
391 *ppidlChild = NULL;
392
395 PCUITEMID_CHILD pidlChild;
396 if (ppsf || ppidlChild)
397 {
399 return hr;
400 }
401
402 if (ppidlParent && FAILED(hr = SHILCloneParent(GetAbsoluteIDList(), ppidlParent)))
403 return hr;
404 if (ppidlChild && FAILED(hr = SHILClone(pidlChild, ppidlChild)))
405 {
406 if (ppidlParent)
407 {
408 ILFree(*ppidlParent);
409 *ppidlParent = NULL;
410 }
411 return hr;
412 }
413 if (ppsf)
414 *ppsf = psf.Detach();
415 return hr;
416}
T * Detach()
Definition: atlcomcli.h:186
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:1051

◆ GetParentShellFolderAndItem()

HRESULT CFolderItem::GetParentShellFolderAndItem ( REFIID  riid,
void **  ppv,
PCUITEMID_CHILD pidlLast 
)
inlineprivate

Definition at line 94 of file CFolderItems.cpp.

95{
96 return SHBindToParent(GetAbsoluteIDList(), riid, ppv, &pidlLast);
97}
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
Definition: pidl.c:1504

Referenced by get_Name(), GetExtendedProperty(), GetFindDataFromIDList(), GetParentAndItem(), InvokeVerbEx(), and put_Name().

◆ GetSite()

IUnknown * CFolderItem::GetSite ( )
inline

Definition at line 31 of file CFolderItems.h.

31{ return NULL; }

Referenced by InvokeVerbEx().

◆ HasAttribute()

HRESULT CFolderItem::HasAttribute ( DWORD  sfgaof,
VARIANT_BOOL pB 
)

Definition at line 224 of file CFolderItems.cpp.

225{
226 *pB = SHGetAttributes(NULL, GetAbsoluteIDList(), sfgaof) ? VARIANT_TRUE : VARIANT_FALSE;
227 return S_OK;
228}
DWORD SHGetAttributes(_In_ IShellFolder *psf, _In_ LPCITEMIDLIST pidl, _In_ DWORD dwAttributes)
Definition: utils.cpp:496

Referenced by get_IsBrowsable(), get_IsFileSystem(), get_IsFolder(), and get_IsLink().

◆ Initialize()

HRESULT CFolderItem::Initialize ( Folder *  folder,
LPCITEMIDLIST  idlist 
)

Definition at line 88 of file CFolderItems.cpp.

89{
91 return SHILClone(idlist, &m_idlist);
92}
Definition: fci.c:116

◆ InvokeVerb()

HRESULT STDMETHODCALLTYPE CFolderItem::InvokeVerb ( VARIANT  vVerb)
override

Definition at line 326 of file CFolderItems.cpp.

327{
329 V_VT(&empty) = VT_EMPTY;
330 return InvokeVerbEx(vVerb, empty);
331}
STDMETHOD() InvokeVerbEx(VARIANT vVerb, VARIANT vArgs) override
static const WCHAR empty[1]
Definition: string.c:47

◆ InvokeVerbEx()

HRESULT STDMETHODCALLTYPE CFolderItem::InvokeVerbEx ( VARIANT  vVerb,
VARIANT  vArgs 
)
override

Definition at line 333 of file CFolderItems.cpp.

334{
335 TRACE("(%p, %s)\n", this, wine_dbgstr_variant(&vVerb));
336
337 HWND hWnd = GetHwnd();
339 PCUITEMID_CHILD pidlItem;
342 return hr;
343
345 if (SUCCEEDED(hr = psf->GetUIObjectOf(hWnd, 1, &pidlItem, IID_NULL_PPV_ARG(IContextMenu, &pCM))))
346 hr = CFolderItems::InvokeVerbHelper(hWnd, *pCM, vVerb, vArgs, GetSite());
347 return hr;
348}
HWND hWnd
Definition: settings.c:17
IUnknown * GetSite()
Definition: CFolderItems.h:31
HWND GetHwnd()
Definition: CFolderItems.h:30
static HRESULT InvokeVerbHelper(HWND hWnd, IContextMenu &cm, VARIANT &vVerb, VARIANT &vArgs, IUnknown *pSite)
#define IID_NULL_PPV_ARG(Itype, ppType)

Referenced by InvokeVerb().

◆ put_ModifyDate()

HRESULT STDMETHODCALLTYPE CFolderItem::put_ModifyDate ( DATE  dt)
override

Definition at line 271 of file CFolderItems.cpp.

272{
273 TRACE("(%p, %f)\n", this, dt);
274 return E_NOTIMPL;
275}

◆ put_Name()

HRESULT STDMETHODCALLTYPE CFolderItem::put_Name ( BSTR  bs)
override

Definition at line 173 of file CFolderItems.cpp.

174{
175 TRACE("(%p, %s)\n", this, wine_dbgstr_w(bs));
176
178 PCUITEMID_CHILD pidlLeaf;
181 return hr;
182
183 LPITEMIDLIST pidlNew;
184 if (SUCCEEDED(hr = psf->SetNameOf(GetHwnd(), pidlLeaf, bs, SHGDN_INFOLDER, &pidlNew)) && pidlNew)
185 {
186 LPITEMIDLIST pidlClone = ILClone(m_idlist);
187 ILRemoveLastID(pidlClone);
188 if (pidlClone && SUCCEEDED(SHILAppend(pidlNew, &pidlClone)))
189 {
190 m_idlist.Free();
191 m_idlist.Attach(pidlClone);
192 }
193 }
194 return hr;
195}
HRESULT SHILAppend(_Inout_ LPITEMIDLIST pidl, _Inout_ LPITEMIDLIST *ppidl)
Definition: utils.cpp:261
#define wine_dbgstr_w
Definition: kernel32.h:34
static struct msdos_boot_sector bs
Definition: mkdosfs.c:539
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:238
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
Definition: pidl.c:222
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41

◆ SetParentAndItem()

STDMETHOD() CFolderItem::SetParentAndItem ( PCIDLIST_ABSOLUTE  ,
IShellFolder ,
PCUITEMID_CHILD   
)
inlineoverride

Implements IParentAndItem.

Definition at line 63 of file CFolderItems.h.

63{ return E_NOTIMPL; }

◆ Verbs()

HRESULT STDMETHODCALLTYPE CFolderItem::Verbs ( FolderItemVerbs **  ppfic)
override

Definition at line 310 of file CFolderItems.cpp.

311{
312 if (!ppfic)
313 return E_POINTER;
314
317 if (SUCCEEDED(hr))
318 hr = pVerbs->Init(GetAbsoluteIDList());
320 return hr;
321
322 *ppfic = pVerbs.Detach();
323 return S_OK;
324}
static HRESULT CreateInstance(CComPtr< CFolderItemVerbs > &objref)

Member Data Documentation

◆ m_Folder

CComPtr<Folder> CFolderItem::m_Folder
private

◆ m_idlist

CComHeapPtr<ITEMIDLIST> CFolderItem::m_idlist
private

Definition at line 19 of file CFolderItems.h.

Referenced by get_Path(), GetAbsoluteIDList(), Initialize(), and put_Name().


The documentation for this class was generated from the following files: