ReactOS 0.4.17-dev-470-gf9e3448
CFolderItems Class Reference

#include <CFolderItems.h>

Inheritance diagram for CFolderItems:
Collaboration diagram for CFolderItems:

Public Member Functions

 CFolderItems ()
 
 ~CFolderItems ()
 
HRESULT Initialize (LPCITEMIDLIST idlist, Folder *parent)
 
STDMETHOD() get_Count (long *plCount) override
 
STDMETHOD() get_Application (IDispatch **ppid) override
 
STDMETHOD() get_Parent (IDispatch **ppid) override
 
STDMETHOD() Item (VARIANT index, FolderItem **ppid) override
 
STDMETHOD() _NewEnum (IUnknown **ppunk) 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 ()
 

Private Attributes

CComHeapPtr< ITEMIDLISTm_idlist
 
CComPtr< IEnumIDListm_EnumIDList
 
CComPtr< Folder > m_Folder
 
long m_Count
 

Additional Inherited Members

- 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)
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 72 of file CFolderItems.h.

Constructor & Destructor Documentation

◆ CFolderItems()

CFolderItems::CFolderItems ( )

Definition at line 320 of file CFolderItems.cpp.

321 :m_Count(-1)
322{
323}

◆ ~CFolderItems()

CFolderItems::~CFolderItems ( )

Definition at line 325 of file CFolderItems.cpp.

326{
327}

Member Function Documentation

◆ _NewEnum()

HRESULT STDMETHODCALLTYPE CFolderItems::_NewEnum ( IUnknown **  ppunk)
override

Definition at line 452 of file CFolderItems.cpp.

453{
454 return ShellObjectCreatorInit<CFolderItems>(static_cast<LPITEMIDLIST>(m_idlist), m_Folder, IID_FolderItems, reinterpret_cast<void**>(ppunk));
455}
CComHeapPtr< ITEMIDLIST > m_idlist
Definition: CFolderItems.h:78
CComPtr< Folder > m_Folder
Definition: CFolderItems.h:80
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41

◆ get_Application()

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

Definition at line 384 of file CFolderItems.cpp.

385{
386 TRACE("(%p, %p)\n", this, ppid);
387 return m_Folder->get_Application(ppid);
388}
#define TRACE(s)
Definition: solgame.cpp:4

◆ get_Count()

HRESULT STDMETHODCALLTYPE CFolderItems::get_Count ( long plCount)
override

Definition at line 355 of file CFolderItems.cpp.

356{
357 if (!m_EnumIDList)
358 return E_FAIL;
359
360 if (!plCount)
361 return E_POINTER;
362
363 if (m_Count == -1)
364 {
365 long count = 0;
366
367 HRESULT hr = m_EnumIDList->Reset();
369 return hr;
370
372 while ((hr = m_EnumIDList->Next(1, &Pidl, 0)) != S_FALSE)
373 {
374 count++;
375 Pidl.Free();
376 }
377 m_Count = count;
378 }
379 *plCount = m_Count;
380
381 return S_OK;
382}
CComPtr< IEnumIDList > m_EnumIDList
Definition: CFolderItems.h:79
void Free()
Definition: atlalloc.h:153
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:33
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define S_OK
Definition: intsafe.h:52
#define S_FALSE
Definition: winerror.h:3451
#define E_POINTER
Definition: winerror.h:3480

◆ get_Parent()

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

Definition at line 390 of file CFolderItems.cpp.

391{
392 TRACE("(%p, %p)\n", this, ppid);
393
394 if (ppid)
395 *ppid = NULL;
396
397 return E_NOTIMPL;
398}
#define E_NOTIMPL
Definition: ddrawi.h:99
#define NULL
Definition: types.h:112

◆ Initialize()

HRESULT CFolderItems::Initialize ( LPCITEMIDLIST  idlist,
Folder *  parent 
)

Definition at line 329 of file CFolderItems.cpp.

330{
331 CComPtr<IShellFolder> psfDesktop, psfTarget;
332
333 m_idlist.Attach(ILClone(idlist));
334 if (!m_idlist)
335 return E_OUTOFMEMORY;
336
337 HRESULT hr = SHGetDesktopFolder(&psfDesktop);
339 return hr;
340
341 hr = psfDesktop->BindToObject(m_idlist, NULL, IID_PPV_ARG(IShellFolder, &psfTarget));
343 return hr;
344
345 hr = psfTarget->EnumObjects(NULL, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, &m_EnumIDList);
346
348 return hr;
349
351 return S_OK;
352}
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
r parent
Definition: btrfs.c:3010
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:238
#define IID_PPV_ARG(Itype, ppType)

◆ Item()

HRESULT STDMETHODCALLTYPE CFolderItems::Item ( VARIANT  index,
FolderItem **  ppid 
)
override

Definition at line 400 of file CFolderItems.cpp.

401{
403 HRESULT hr;
404
405 if (!m_EnumIDList)
406 return E_FAIL;
407
409 if (FAILED(hr))
410 return hr;
411
412 if (V_VT(&index) == VT_I2)
414
415 if (V_VT(&index) == VT_I4)
416 {
418
419 hr = m_EnumIDList->Reset();
421 return hr;
422
423 hr = m_EnumIDList->Skip(count);
424
426 return hr;
427
429 hr = m_EnumIDList->Next(1, &spPidl, 0);
431 return hr;
432 hr = ShellObjectCreatorInit<CFolderItem>(m_Folder, static_cast<LPITEMIDLIST>(spPidl), IID_PPV_ARG(FolderItem, ppid));
434 return hr;
435 return hr;
436 }
437 else if (V_VT(&index) == VT_BSTR)
438 {
439 if (!V_BSTR(&index))
440 return S_FALSE;
441
442 hr = m_Folder->ParseName(V_BSTR(&index), ppid);
444 return hr;
445 return hr;
446 }
447
448 FIXME("Index type %d not handled.\n", V_VT(&index));
449 return E_NOTIMPL;
450}
#define index(s, c)
Definition: various.h:29
#define FIXME(fmt,...)
Definition: precomp.h:53
@ VT_BSTR
Definition: compat.h:2303
@ VT_I4
Definition: compat.h:2298
@ VT_I2
Definition: compat.h:2297
GLuint index
Definition: glext.h:6031
#define FAILED(hr)
Definition: intsafe.h:51
const char * var
Definition: shader.c:5666
#define V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
#define V_UI4(A)
Definition: oleauto.h:270
uint32_t ULONG
Definition: typedefs.h:59
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
Definition: variant.c:962
HRESULT WINAPI VariantCopyInd(VARIANT *pvargDest, VARIANTARG *pvargSrc)
Definition: variant.c:847

Member Data Documentation

◆ m_Count

long CFolderItems::m_Count
private

Definition at line 81 of file CFolderItems.h.

Referenced by get_Count().

◆ m_EnumIDList

CComPtr<IEnumIDList> CFolderItems::m_EnumIDList
private

Definition at line 79 of file CFolderItems.h.

Referenced by get_Count(), Initialize(), and Item().

◆ m_Folder

CComPtr<Folder> CFolderItems::m_Folder
private

Definition at line 80 of file CFolderItems.h.

Referenced by _NewEnum(), get_Application(), Initialize(), and Item().

◆ m_idlist

CComHeapPtr<ITEMIDLIST> CFolderItems::m_idlist
private

Definition at line 78 of file CFolderItems.h.

Referenced by _NewEnum(), and Initialize().


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