Revert r66580 and r66579.
[reactos.git] / reactos / dll / shellext / ntobjshex / regfolder.h
1 /*
2 * PROJECT: ReactOS system libraries
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll\win32\stobject\stobject.cpp
5 * PURPOSE: Systray shell service object
6 * PROGRAMMERS: Robert Naumann
7 David Quintana <gigaherz@gmail.com>
8 */
9 #pragma once
10
11 extern const GUID CLSID_RegistryFolder;
12
13 class CRegistryPidlManager;
14
15 class CRegistryFolder :
16 public CComCoClass<CRegistryFolder, &CLSID_RegistryFolder>,
17 public CComObjectRootEx<CComMultiThreadModelNoCS>,
18 public IShellFolder2,
19 public IPersistFolder2
20 {
21 CRegistryPidlManager * m_PidlManager;
22
23 WCHAR m_NtPath[MAX_PATH];
24
25 LPITEMIDLIST m_shellPidl;
26
27 public:
28
29 CRegistryFolder();
30 virtual ~CRegistryFolder();
31
32 CRegistryPidlManager& GetManager() { return *m_PidlManager; }
33
34 // IShellFolder
35 virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
36 HWND hwndOwner,
37 LPBC pbcReserved,
38 LPOLESTR lpszDisplayName,
39 ULONG *pchEaten,
40 LPITEMIDLIST *ppidl,
41 ULONG *pdwAttributes);
42
43 virtual HRESULT STDMETHODCALLTYPE EnumObjects(
44 HWND hwndOwner,
45 SHCONTF grfFlags,
46 IEnumIDList **ppenumIDList);
47
48 virtual HRESULT STDMETHODCALLTYPE BindToObject(
49 LPCITEMIDLIST pidl,
50 LPBC pbcReserved,
51 REFIID riid,
52 void **ppvOut);
53
54 virtual HRESULT STDMETHODCALLTYPE BindToStorage(
55 LPCITEMIDLIST pidl,
56 LPBC pbcReserved,
57 REFIID riid,
58 void **ppvObj);
59
60 virtual HRESULT STDMETHODCALLTYPE CompareIDs(
61 LPARAM lParam,
62 LPCITEMIDLIST pidl1,
63 LPCITEMIDLIST pidl2);
64
65 virtual HRESULT STDMETHODCALLTYPE CreateViewObject(
66 HWND hwndOwner,
67 REFIID riid,
68 void **ppvOut);
69
70 virtual HRESULT STDMETHODCALLTYPE GetAttributesOf(
71 UINT cidl,
72 PCUITEMID_CHILD_ARRAY apidl,
73 SFGAOF *rgfInOut);
74
75 virtual HRESULT STDMETHODCALLTYPE GetUIObjectOf(
76 HWND hwndOwner,
77 UINT cidl,
78 PCUITEMID_CHILD_ARRAY apidl,
79 REFIID riid,
80 UINT *prgfInOut,
81 void **ppvOut);
82
83 virtual HRESULT STDMETHODCALLTYPE GetDisplayNameOf(
84 LPCITEMIDLIST pidl,
85 SHGDNF uFlags,
86 STRRET *lpName);
87
88 virtual HRESULT STDMETHODCALLTYPE SetNameOf(
89 HWND hwnd,
90 LPCITEMIDLIST pidl,
91 LPCOLESTR lpszName,
92 SHGDNF uFlags,
93 LPITEMIDLIST *ppidlOut);
94
95 // IShellFolder2
96 virtual HRESULT STDMETHODCALLTYPE GetDefaultSearchGUID(
97 GUID *lpguid);
98
99 virtual HRESULT STDMETHODCALLTYPE EnumSearches(
100 IEnumExtraSearch **ppenum);
101
102 virtual HRESULT STDMETHODCALLTYPE GetDefaultColumn(
103 DWORD dwReserved,
104 ULONG *pSort,
105 ULONG *pDisplay);
106
107 virtual HRESULT STDMETHODCALLTYPE GetDefaultColumnState(
108 UINT iColumn,
109 SHCOLSTATEF *pcsFlags);
110
111 virtual HRESULT STDMETHODCALLTYPE GetDetailsEx(
112 LPCITEMIDLIST pidl,
113 const SHCOLUMNID *pscid,
114 VARIANT *pv);
115
116 virtual HRESULT STDMETHODCALLTYPE GetDetailsOf(
117 LPCITEMIDLIST pidl,
118 UINT iColumn,
119 SHELLDETAILS *psd);
120
121 virtual HRESULT STDMETHODCALLTYPE MapColumnToSCID(
122 UINT iColumn,
123 SHCOLUMNID *pscid);
124
125 // IPersist
126 virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *lpClassId);
127
128 // IPersistFolder
129 virtual HRESULT STDMETHODCALLTYPE Initialize(LPCITEMIDLIST pidl);
130
131 // IPersistFolder2
132 virtual HRESULT STDMETHODCALLTYPE GetCurFolder(LPITEMIDLIST * pidl);
133
134 // Internal
135 HRESULT STDMETHODCALLTYPE Initialize(LPCITEMIDLIST pidl, PCWSTR ntPath);
136
137 DECLARE_REGISTRY_RESOURCEID(IDR_NTOBJECTFOLDER)
138 DECLARE_NOT_AGGREGATABLE(CRegistryFolder)
139 DECLARE_PROTECT_FINAL_CONSTRUCT()
140
141 BEGIN_COM_MAP(CRegistryFolder)
142 COM_INTERFACE_ENTRY_IID(IID_IShellFolder, IShellFolder)
143 COM_INTERFACE_ENTRY_IID(IID_IShellFolder2, IShellFolder2)
144 COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
145 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder, IPersistFolder)
146 COM_INTERFACE_ENTRY_IID(IID_IPersistFolder2, IPersistFolder2)
147 END_COM_MAP()
148
149 };