ReactOS 0.4.15-dev-7924-g5949c20
CMergedFolder Class Reference

#include <CMergedFolder.h>

Inheritance diagram for CMergedFolder:
Collaboration diagram for CMergedFolder:

Public Member Functions

 CMergedFolder ()
 
virtual ~CMergedFolder ()
 
HRESULT _SetSources (IShellFolder *userLocal, IShellFolder *allUSers)
 
STDMETHOD() ParseDisplayName (HWND hwndOwner, LPBC pbcReserved, LPOLESTR lpszDisplayName, ULONG *pchEaten, LPITEMIDLIST *ppidl, ULONG *pdwAttributes) override
 
STDMETHOD() EnumObjects (HWND hwndOwner, SHCONTF grfFlags, IEnumIDList **ppenumIDList) override
 
STDMETHOD() BindToObject (LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, void **ppvOut) override
 
STDMETHOD() BindToStorage (LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, void **ppvObj) override
 
STDMETHOD() CompareIDs (LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) override
 
STDMETHOD() CreateViewObject (HWND hwndOwner, REFIID riid, void **ppvOut) override
 
STDMETHOD() GetAttributesOf (UINT cidl, PCUITEMID_CHILD_ARRAY apidl, SFGAOF *rgfInOut) override
 
STDMETHOD() GetUIObjectOf (HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, void **ppvOut) override
 
STDMETHOD() GetDisplayNameOf (LPCITEMIDLIST pidl, SHGDNF uFlags, STRRET *lpName) override
 
STDMETHOD() SetNameOf (HWND hwnd, LPCITEMIDLIST pidl, LPCOLESTR lpszName, SHGDNF uFlags, LPITEMIDLIST *ppidlOut) override
 
STDMETHOD() GetDefaultSearchGUID (GUID *lpguid) override
 
STDMETHOD() EnumSearches (IEnumExtraSearch **ppenum) override
 
STDMETHOD() GetDefaultColumn (DWORD dwReserved, ULONG *pSort, ULONG *pDisplay) override
 
STDMETHOD() GetDefaultColumnState (UINT iColumn, SHCOLSTATEF *pcsFlags) override
 
STDMETHOD() GetDetailsEx (LPCITEMIDLIST pidl, const SHCOLUMNID *pscid, VARIANT *pv) override
 
STDMETHOD() GetDetailsOf (LPCITEMIDLIST pidl, UINT iColumn, SHELLDETAILS *psd) override
 
STDMETHOD() MapColumnToSCID (UINT iColumn, SHCOLUMNID *pscid) override
 
STDMETHOD() GetClassID (CLSID *lpClassId) override
 
STDMETHOD() Initialize (PCIDLIST_ABSOLUTE pidl) override
 
STDMETHOD() GetCurFolder (PIDLIST_ABSOLUTE *pidl) override
 
STDMETHODIMP GetMaxLength (LPCWSTR pszName, int *piMaxNameLen) override
 
STDMETHODIMP GetValidCharacters (LPWSTR *ppwszValidChars, LPWSTR *ppwszInvalidChars) override
 
STDMETHOD() AddNameSpace (LPGUID lpGuid, IShellFolder *psf, LPCITEMIDLIST pcidl, ULONG dwUnknown) override
 
STDMETHOD() GetNameSpaceID (LPCITEMIDLIST pcidl, LPGUID lpGuid) override
 
STDMETHOD() QueryNameSpace (ULONG dwUnknown, LPGUID lpGuid, IShellFolder **ppsf) override
 
STDMETHOD() EnumNameSpace (ULONG dwUnknown, PULONG lpUnknown) override
 
STDMETHOD() UnWrapIDList (LPCITEMIDLIST pcidl, LONG lUnknown, IShellFolder **ppsf, LPITEMIDLIST *ppidl1, LPITEMIDLIST *ppidl2, LONG *lpUnknown) override
 
STDMETHOD() QueryNameSpace2 (ULONG, QUERYNAMESPACEINFO *) 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 ()
 
- Public Member Functions inherited from IShellFolder2
HRESULT GetDefaultSearchGUID ([out] GUID *lpguid)
 
HRESULT EnumSearches ([out] IEnumExtraSearch **ppenum)
 
HRESULT GetDefaultColumn ([in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay)
 
HRESULT GetDefaultColumnState ([in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags)
 
HRESULT GetDetailsEx ([in] PCUITEMID_CHILD pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv)
 
HRESULT GetDetailsOf ([in] PCUITEMID_CHILD pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd)
 
HRESULT MapColumnToSCID ([in] UINT iColumn, [in] SHCOLUMNID *pscid)
 
- Public Member Functions inherited from IShellFolder
HRESULT ParseDisplayName ([in] HWND hwndOwner, [in] LPBC pbcReserved, [in, string] LPOLESTR lpszDisplayName, [out] ULONG *pchEaten, [out] PIDLIST_RELATIVE *ppidl, [in, out, unique] ULONG *pdwAttributes)
 
HRESULT EnumObjects ([in] HWND hwndOwner, [in] SHCONTF grfFlags, [out] IEnumIDList **ppenumIDList)
 
HRESULT BindToObject ([in] PCUIDLIST_RELATIVE pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut)
 
HRESULT BindToStorage ([in] PCUIDLIST_RELATIVE pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvObj)
 
HRESULT CompareIDs ([in] LPARAM lParam, [in] PCUIDLIST_RELATIVE pidl1, [in] PCUIDLIST_RELATIVE pidl2)
 
HRESULT CreateViewObject ([in] HWND hwndOwner, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut)
 
HRESULT GetAttributesOf ([in] UINT cidl, [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, [in, out] SFGAOF *rgfInOut)
 
HRESULT GetUIObjectOf ([in] HWND hwndOwner, [in] UINT cidl, [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, [in] REFIID riid, [in, out, unique] UINT *prgfInOut, [out, iid_is(riid)] void **ppvOut)
 
HRESULT GetDisplayNameOf ([in] PCUITEMID_CHILD pidl, [in] SHGDNF uFlags, [out] STRRET *lpName)
 
HRESULT SetNameOf ([in] HWND hwnd, [in] PCUITEMID_CHILD pidl, [in, string] LPCOLESTR lpszName, [in] SHGDNF uFlags, [out] PITEMID_CHILD *ppidlOut)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
HRESULT GetCurFolder ([out] PIDLIST_ABSOLUTE *ppidl)
 
HRESULT Initialize ([in] PCIDLIST_ABSOLUTE pidl)
 
HRESULT GetClassID ([out] CLSID *pClassID)
 

Private Attributes

CComPtr< IShellFolderm_UserLocal
 
CComPtr< IShellFolderm_AllUsers
 
CComPtr< CEnumMergedFolderm_EnumSource
 
LPITEMIDLIST m_UserLocalPidl
 
LPITEMIDLIST m_AllUsersPidl
 
LPITEMIDLIST m_shellPidl
 

Additional Inherited Members

- Public Types inherited from IShellFolder2
typedef struct IShellFolder2::SHCOLUMNIDLPSHCOLUMNID
 
typedef const SHCOLUMNIDLPCSHCOLUMNID
 
- Public Types inherited from IShellFolder
enum  tagSHGDN {
  SHGDN_NORMAL = 0 , SHGDN_INFOLDER = 1 , SHGDN_FOREDITING = 0x1000 , SHGDN_INCLUDE_NONFILESYS = 0x2000 ,
  SHGDN_FORADDRESSBAR = 0x4000 , SHGDN_FORPARSING = 0x8000
}
 
enum  tagSHCONTF {
  SHCONTF_FOLDERS = 32 , SHCONTF_NONFOLDERS = 64 , SHCONTF_INCLUDEHIDDEN = 128 , SHCONTF_INIT_ON_FIRST_NEXT = 256 ,
  SHCONTF_NETPRINTERSRCH = 512 , SHCONTF_SHAREABLE = 1024 , SHCONTF_STORAGE = 2048 , SHCONTF_NAVIGATION_ENUM = 0x01000 ,
  SHCONTF_FASTITEMS = 0x02000 , SHCONTF_FLATLIST = 0x04000 , SHCONTF_ENABLE_ASYNC = 0x08000 , SHCONTF_INCLUDESUPERHIDDEN = 0x10000
}
 
typedef IShellFolderLPSHELLFOLDER
 
typedef enum IShellFolder::tagSHGDN SHGNO
 
typedef DWORD SHGDNF
 
typedef DWORD SHCONTF
 
typedef ULONG SFGAOF
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Types inherited from IPersistFolder2
typedef IPersistFolder2LPPERSISTFOLDER2
 
- Public Types inherited from IPersistFolder
typedef IPersistFolderLPPERSISTFOLDER
 
- Public Types inherited from IPersist
typedef IPersistLPPERSIST
 
- 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 48 of file CMergedFolder.h.

Constructor & Destructor Documentation

◆ CMergedFolder()

CMergedFolder::CMergedFolder ( )

Definition at line 386 of file CMergedFolder.cpp.

386 :
393{
394}
LPITEMIDLIST m_shellPidl
Definition: CMergedFolder.h:70
CComPtr< IShellFolder > m_UserLocal
Definition: CMergedFolder.h:64
CComPtr< IShellFolder > m_AllUsers
Definition: CMergedFolder.h:65
LPITEMIDLIST m_AllUsersPidl
Definition: CMergedFolder.h:69
CComPtr< CEnumMergedFolder > m_EnumSource
Definition: CMergedFolder.h:66
LPITEMIDLIST m_UserLocalPidl
Definition: CMergedFolder.h:68
#define NULL
Definition: types.h:112

◆ ~CMergedFolder()

CMergedFolder::~CMergedFolder ( )
virtual

Definition at line 396 of file CMergedFolder.cpp.

397{
400}
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:938

Member Function Documentation

◆ _SetSources()

HRESULT CMergedFolder::_SetSources ( IShellFolder userLocal,
IShellFolder allUSers 
)

◆ AddNameSpace()

HRESULT STDMETHODCALLTYPE CMergedFolder::AddNameSpace ( LPGUID  lpGuid,
IShellFolder psf,
LPCITEMIDLIST  pcidl,
ULONG  dwUnknown 
)
override

Definition at line 403 of file CMergedFolder.cpp.

404{
405 if (lpGuid)
406 {
407 TRACE("FIXME: No idea how to handle the GUID\n");
408 return E_NOTIMPL;
409 }
410
411 TRACE("AddNameSpace %p %p\n", m_UserLocal.p, m_AllUsers.p);
412
413 // FIXME: Use a DSA to store the list of merged namespaces, together with their related info (psf, pidl, ...)
414 // For now, assume only 2 will ever be used, and ignore all the other data.
415 if (!m_UserLocal)
416 {
417 m_UserLocal = psf;
418 m_UserLocalPidl = ILClone(pcidl);
419 return S_OK;
420 }
421
422 if (m_AllUsers)
423 return E_FAIL;
424
425 m_AllUsers = psf;
426 m_AllUsersPidl = ILClone(pcidl);
427
428 m_EnumSource = new CComObject<CEnumMergedFolder>();
429 return m_EnumSource->SetSources(m_UserLocal, m_AllUsers);
430}
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
#define S_OK
Definition: intsafe.h:52
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:237
#define TRACE(s)
Definition: solgame.cpp:4

◆ BindToObject()

HRESULT STDMETHODCALLTYPE CMergedFolder::BindToObject ( LPCITEMIDLIST  pidl,
LPBC  pbcReserved,
REFIID  riid,
void **  ppvOut 
)
override

Definition at line 508 of file CMergedFolder.cpp.

513{
515 HRESULT hr;
516
517 hr = m_EnumSource->FindPidlInList(NULL, pidl, &info);
519 return hr;
520
521 TRACE("BindToObject shared = %d\n", info.shared);
522
523 if (!info.shared)
524 return info.parent->BindToObject(info.pidl, pbcReserved, riid, ppvOut);
525
526 if (riid != IID_IShellFolder)
527 return E_FAIL;
528
529 // Construct a child MergedFolder and return it
530 CComPtr<IShellFolder> fld1;
531 CComPtr<IShellFolder> fld2;
532
533 // In shared folders, the user one takes precedence over the common one, so it will always be on pidl1
534 hr = m_UserLocal->BindToObject(info.pidl, pbcReserved, IID_PPV_ARG(IShellFolder, &fld1));
536 return hr;
537
538 hr = m_AllUsers->BindToObject(info.pidl2, pbcReserved, IID_PPV_ARG(IShellFolder, &fld2));
540 return hr;
541
542 CComPtr<IAugmentedShellFolder> pasf;
543 hr = CMergedFolder_CreateInstance(IID_PPV_ARG(IAugmentedShellFolder, &pasf));
545 return hr;
546
547 hr = pasf->QueryInterface(riid, ppvOut);
549 return hr;
550
551 hr = pasf->AddNameSpace(NULL, fld1, info.pidl, 0xFF00);
553 return hr;
554
555 hr = pasf->AddNameSpace(NULL, fld2, info.pidl2, 0x0000);
557 return hr;
558
559 return hr;
560}
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:121
REFIID riid
Definition: atlbase.h:39
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define CMergedFolder_CreateInstance
Definition: shellmenu.h:93
HRESULT hr
Definition: shlfolder.c:183
#define IID_PPV_ARG(Itype, ppType)

◆ BindToStorage()

HRESULT STDMETHODCALLTYPE CMergedFolder::BindToStorage ( LPCITEMIDLIST  pidl,
LPBC  pbcReserved,
REFIID  riid,
void **  ppvObj 
)
override

Definition at line 562 of file CMergedFolder.cpp.

567{
569 return E_NOTIMPL;
570}
#define UNIMPLEMENTED
Definition: debug.h:115

◆ CompareIDs()

HRESULT STDMETHODCALLTYPE CMergedFolder::CompareIDs ( LPARAM  lParam,
LPCITEMIDLIST  pidl1,
LPCITEMIDLIST  pidl2 
)
override

Definition at line 572 of file CMergedFolder.cpp.

576{
577 TRACE("CompareIDs\n");
578 return m_UserLocal->CompareIDs(lParam, pidl1, pidl2);
579}
LPARAM lParam
Definition: combotst.c:139

◆ CreateViewObject()

HRESULT STDMETHODCALLTYPE CMergedFolder::CreateViewObject ( HWND  hwndOwner,
REFIID  riid,
void **  ppvOut 
)
override

Implements IShellFolder.

Definition at line 581 of file CMergedFolder.cpp.

585{
587 return E_NOTIMPL;
588}

◆ EnumNameSpace()

HRESULT STDMETHODCALLTYPE CMergedFolder::EnumNameSpace ( ULONG  dwUnknown,
PULONG  lpUnknown 
)
override

Definition at line 444 of file CMergedFolder.cpp.

445{
447 return E_NOTIMPL;
448}

◆ EnumObjects()

HRESULT STDMETHODCALLTYPE CMergedFolder::EnumObjects ( HWND  hwndOwner,
SHCONTF  grfFlags,
IEnumIDList **  ppenumIDList 
)
override

Implements IShellFolder.

Definition at line 496 of file CMergedFolder.cpp.

500{
501 TRACE("EnumObjects\n");
502 HRESULT hr = m_EnumSource->QueryInterface(IID_PPV_ARG(IEnumIDList, ppenumIDList));
504 return hr;
505 return m_EnumSource->Begin(hwndOwner, grfFlags);
506}

◆ EnumSearches()

HRESULT STDMETHODCALLTYPE CMergedFolder::EnumSearches ( IEnumExtraSearch **  ppenum)
override

Implements IShellFolder2.

Definition at line 722 of file CMergedFolder.cpp.

724{
726 return E_NOTIMPL;
727}

◆ GetAttributesOf()

HRESULT STDMETHODCALLTYPE CMergedFolder::GetAttributesOf ( UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
SFGAOF rgfInOut 
)
override

Implements IShellFolder.

Definition at line 590 of file CMergedFolder.cpp.

594{
596 HRESULT hr;
597
598 TRACE("GetAttributesOf\n");
599
600 for (int i = 0; i < (int)cidl; i++)
601 {
602 LPCITEMIDLIST pidl = apidl[i];
603
604 hr = m_EnumSource->FindPidlInList(NULL, pidl, &info);
606 return hr;
607
608 pidl = info.pidl;
609
610 SFGAOF * pinOut1 = rgfInOut ? rgfInOut + i : NULL;
611
612 hr = info.parent->GetAttributesOf(1, &pidl, pinOut1);
613
615 return hr;
616 }
617
618 return S_OK;
619}
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
ULONG SFGAOF
Definition: shobjidl.idl:228
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42

◆ GetClassID()

HRESULT STDMETHODCALLTYPE CMergedFolder::GetClassID ( CLSID lpClassId)
override

Implements IPersist.

Definition at line 693 of file CMergedFolder.cpp.

694{
696 return E_NOTIMPL;
697}

◆ GetCurFolder()

HRESULT STDMETHODCALLTYPE CMergedFolder::GetCurFolder ( PIDLIST_ABSOLUTE pidl)
override

Implements IPersistFolder2.

Definition at line 707 of file CMergedFolder.cpp.

708{
709 if (pidl)
710 *pidl = m_shellPidl;
711 return S_OK;
712}

◆ GetDefaultColumn()

HRESULT STDMETHODCALLTYPE CMergedFolder::GetDefaultColumn ( DWORD  dwReserved,
ULONG pSort,
ULONG pDisplay 
)
override

Implements IShellFolder2.

Definition at line 729 of file CMergedFolder.cpp.

733{
735 return E_NOTIMPL;
736}

◆ GetDefaultColumnState()

HRESULT STDMETHODCALLTYPE CMergedFolder::GetDefaultColumnState ( UINT  iColumn,
SHCOLSTATEF pcsFlags 
)
override

Implements IShellFolder2.

Definition at line 738 of file CMergedFolder.cpp.

741{
743 return E_NOTIMPL;
744}

◆ GetDefaultSearchGUID()

HRESULT STDMETHODCALLTYPE CMergedFolder::GetDefaultSearchGUID ( GUID lpguid)
override

Implements IShellFolder2.

Definition at line 715 of file CMergedFolder.cpp.

717{
719 return E_NOTIMPL;
720}

◆ GetDetailsEx()

HRESULT STDMETHODCALLTYPE CMergedFolder::GetDetailsEx ( LPCITEMIDLIST  pidl,
const SHCOLUMNID pscid,
VARIANT pv 
)
override

Definition at line 746 of file CMergedFolder.cpp.

750{
752 HRESULT hr;
753
754 TRACE("GetDetailsEx\n");
755
756 hr = m_EnumSource->FindPidlInList(NULL, pidl, &info);
758 return hr;
759
760 CComPtr<IShellFolder2> parent2;
761 hr = info.parent->QueryInterface(IID_PPV_ARG(IShellFolder2, &parent2));
763 return hr;
764
765 hr = parent2->GetDetailsEx(info.pidl, pscid, pv);
767 return hr;
768 return S_OK;
769}

◆ GetDetailsOf()

HRESULT STDMETHODCALLTYPE CMergedFolder::GetDetailsOf ( LPCITEMIDLIST  pidl,
UINT  iColumn,
SHELLDETAILS psd 
)
override

Definition at line 771 of file CMergedFolder.cpp.

775{
777 HRESULT hr;
778
779 TRACE("GetDetailsOf\n");
780
781 hr = m_EnumSource->FindPidlInList(NULL, pidl, &info);
783 return hr;
784
785 CComPtr<IShellFolder2> parent2;
786 hr = info.parent->QueryInterface(IID_PPV_ARG(IShellFolder2, &parent2));
788 return hr;
789
790 hr = parent2->GetDetailsOf(info.pidl, iColumn, psd);
791
793 return hr;
794 return S_OK;
795}

◆ GetDisplayNameOf()

HRESULT STDMETHODCALLTYPE CMergedFolder::GetDisplayNameOf ( LPCITEMIDLIST  pidl,
SHGDNF  uFlags,
STRRET lpName 
)
override

Definition at line 660 of file CMergedFolder.cpp.

664{
666 HRESULT hr;
667
668 TRACE("GetDisplayNameOf\n");
669
670 hr = m_EnumSource->FindPidlInList(NULL, pidl, &info);
672 return hr;
673
674 hr = info.parent->GetDisplayNameOf(info.pidl, uFlags, lpName);
675
677 return hr;
678 return S_OK;
679}
UINT uFlags
Definition: api.c:59
_In_ LPCSTR lpName
Definition: winbase.h:2789

◆ GetMaxLength()

STDMETHODIMP CMergedFolder::GetMaxLength ( LPCWSTR  pszName,
int piMaxNameLen 
)
inlineoverride

Definition at line 203 of file CMergedFolder.h.

204 {
205 return E_NOTIMPL;
206 }

◆ GetNameSpaceID()

HRESULT STDMETHODCALLTYPE CMergedFolder::GetNameSpaceID ( LPCITEMIDLIST  pcidl,
LPGUID  lpGuid 
)
override

Definition at line 432 of file CMergedFolder.cpp.

433{
435 return E_NOTIMPL;
436}

◆ GetUIObjectOf()

HRESULT STDMETHODCALLTYPE CMergedFolder::GetUIObjectOf ( HWND  hwndOwner,
UINT  cidl,
PCUITEMID_CHILD_ARRAY  apidl,
REFIID  riid,
UINT prgfInOut,
void **  ppvOut 
)
override

Implements IShellFolder.

Definition at line 621 of file CMergedFolder.cpp.

628{
630 HRESULT hr;
631
632 TRACE("GetUIObjectOf\n");
633
634 for (int i = 0; i < (int)cidl; i++)
635 {
636 LPCITEMIDLIST pidl = apidl[i];
637
638 TRACE("Processing GetUIObjectOf item %d of %u...\n", i, cidl);
639
640 hr = m_EnumSource->FindPidlInList(hwndOwner, pidl, &info);
642 return hr;
643
644 pidl = info.pidl;
645
646 TRACE("FindPidlInList succeeded with parent %p and pidl { db=%d }\n", info.parent, info.pidl->mkid.cb);
647
648 UINT * pinOut1 = prgfInOut ? prgfInOut+i : NULL;
649 void** ppvOut1 = ppvOut ? ppvOut + i : NULL;
650
651 hr = info.parent->GetUIObjectOf(hwndOwner, 1, &pidl, riid, pinOut1, ppvOut1);
652
654 return hr;
655 }
656
657 return S_OK;
658}
unsigned int UINT
Definition: ndis.h:50

◆ GetValidCharacters()

STDMETHODIMP CMergedFolder::GetValidCharacters ( LPWSTR ppwszValidChars,
LPWSTR ppwszInvalidChars 
)
inlineoverride

Definition at line 209 of file CMergedFolder.h.

210 {
211 if (ppwszValidChars)
212 {
213 *ppwszValidChars = NULL;
214 }
215 if (ppwszInvalidChars)
216 {
217 SHStrDupW(INVALID_FILETITLE_CHARACTERSW, ppwszInvalidChars);
218 }
219 return S_OK;
220 }
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
Definition: string.c:2012
#define INVALID_FILETITLE_CHARACTERSW
Definition: undocshell.h:897

◆ Initialize()

HRESULT STDMETHODCALLTYPE CMergedFolder::Initialize ( PCIDLIST_ABSOLUTE  pidl)
override

Implements IPersistFolder.

Definition at line 700 of file CMergedFolder.cpp.

701{
702 m_shellPidl = ILClone(pidl);
703 return S_OK;
704}

◆ MapColumnToSCID()

HRESULT STDMETHODCALLTYPE CMergedFolder::MapColumnToSCID ( UINT  iColumn,
SHCOLUMNID pscid 
)
override

Implements IShellFolder2.

Definition at line 797 of file CMergedFolder.cpp.

800{
802 return E_NOTIMPL;
803}

◆ ParseDisplayName()

HRESULT STDMETHODCALLTYPE CMergedFolder::ParseDisplayName ( HWND  hwndOwner,
LPBC  pbcReserved,
LPOLESTR  lpszDisplayName,
ULONG pchEaten,
LPITEMIDLIST ppidl,
ULONG pdwAttributes 
)
override

Definition at line 457 of file CMergedFolder.cpp.

464{
465 HRESULT hr;
467
468 if (!ppidl)
469 return E_FAIL;
470
471 if (pchEaten)
472 *pchEaten = 0;
473
474 if (pdwAttributes)
475 *pdwAttributes = 0;
476
477 TRACE("ParseDisplayName name=%S\n", lpszDisplayName);
478
479 hr = m_EnumSource->FindByName(hwndOwner, lpszDisplayName, &info);
480 if (FAILED(hr))
481 {
483 }
484
485 *ppidl = ILClone(info.pidl);
486
487 if (pchEaten)
488 *pchEaten = lstrlenW(info.parseName);
489
490 if (pdwAttributes)
491 *pdwAttributes = info.parent->GetAttributesOf(1, (LPCITEMIDLIST*)ppidl, pdwAttributes);
492
493 return S_OK;
494}
#define lstrlenW
Definition: compat.h:750
#define FAILED(hr)
Definition: intsafe.h:51
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92

◆ QueryNameSpace()

HRESULT STDMETHODCALLTYPE CMergedFolder::QueryNameSpace ( ULONG  dwUnknown,
LPGUID  lpGuid,
IShellFolder **  ppsf 
)
override

Definition at line 438 of file CMergedFolder.cpp.

439{
441 return E_NOTIMPL;
442}

◆ QueryNameSpace2()

HRESULT STDMETHODCALLTYPE CMergedFolder::QueryNameSpace2 ( ULONG  ,
QUERYNAMESPACEINFO  
)
override

Definition at line 806 of file CMergedFolder.cpp.

807{
809 return E_NOTIMPL;
810}

◆ SetNameOf()

HRESULT STDMETHODCALLTYPE CMergedFolder::SetNameOf ( HWND  hwnd,
LPCITEMIDLIST  pidl,
LPCOLESTR  lpszName,
SHGDNF  uFlags,
LPITEMIDLIST ppidlOut 
)
override

Definition at line 681 of file CMergedFolder.cpp.

687{
689 return E_NOTIMPL;
690}

◆ UnWrapIDList()

HRESULT STDMETHODCALLTYPE CMergedFolder::UnWrapIDList ( LPCITEMIDLIST  pcidl,
LONG  lUnknown,
IShellFolder **  ppsf,
LPITEMIDLIST ppidl1,
LPITEMIDLIST ppidl2,
LONG lpUnknown 
)
override

Definition at line 450 of file CMergedFolder.cpp.

451{
453 return E_NOTIMPL;
454}

Member Data Documentation

◆ m_AllUsers

CComPtr<IShellFolder> CMergedFolder::m_AllUsers
private

Definition at line 65 of file CMergedFolder.h.

Referenced by AddNameSpace(), and BindToObject().

◆ m_AllUsersPidl

LPITEMIDLIST CMergedFolder::m_AllUsersPidl
private

Definition at line 69 of file CMergedFolder.h.

Referenced by AddNameSpace(), and ~CMergedFolder().

◆ m_EnumSource

◆ m_shellPidl

LPITEMIDLIST CMergedFolder::m_shellPidl
private

Definition at line 70 of file CMergedFolder.h.

Referenced by GetCurFolder(), and Initialize().

◆ m_UserLocal

CComPtr<IShellFolder> CMergedFolder::m_UserLocal
private

Definition at line 64 of file CMergedFolder.h.

Referenced by AddNameSpace(), BindToObject(), and CompareIDs().

◆ m_UserLocalPidl

LPITEMIDLIST CMergedFolder::m_UserLocalPidl
private

Definition at line 68 of file CMergedFolder.h.

Referenced by AddNameSpace(), and ~CMergedFolder().


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