ReactOS  0.4.15-dev-3302-ga37d9a4
aclistisf.h
Go to the documentation of this file.
1 /*
2  * Shell AutoComplete list
3  *
4  * Copyright 2015 Thomas Faber
5  * Copyright 2020 Katayama Hirofumi MZ
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20  */
21 
22 #pragma once
23 
24 class CACListISF :
25  public CComCoClass<CACListISF, &CLSID_ACListISF>,
26  public CComObjectRootEx<CComMultiThreadModelNoCS>,
27  public IEnumString,
28  public IACList2,
29  public ICurrentWorkingDirectory,
30  public IShellService,
31  public IPersistFolder
32 {
33 private:
35  {
41  };
42 
48  CComHeapPtr<ITEMIDLIST> m_pidlLocation;
49  CComHeapPtr<ITEMIDLIST> m_pidlCurDir;
50  CComPtr<IEnumIDList> m_pEnumIDList;
51  CComPtr<IShellFolder> m_pShellFolder;
52  CComPtr<IBrowserService> m_pBrowserService;
53 
54 public:
55  CACListISF();
56  ~CACListISF();
57 
60  HRESULT GetDisplayName(LPCITEMIDLIST pidlChild, CComHeapPtr<WCHAR>& pszChild);
61  HRESULT GetPaths(LPCITEMIDLIST pidlChild, CComHeapPtr<WCHAR>& pszRaw,
62  CComHeapPtr<WCHAR>& pszExpanded);
63 
64  // *** IEnumString methods ***
65  STDMETHODIMP Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched) override;
66  STDMETHODIMP Skip(ULONG celt) override;
67  STDMETHODIMP Reset() override;
68  STDMETHODIMP Clone(IEnumString **ppenum) override;
69 
70  // *** IACList methods ***
71  STDMETHODIMP Expand(LPCOLESTR pszExpand) override;
72 
73  // *** IACList2 methods ***
74  STDMETHODIMP SetOptions(DWORD dwFlag) override;
75  STDMETHODIMP GetOptions(DWORD* pdwFlag) override;
76 
77  // FIXME: These virtual keywords below should be removed.
78 
79  // *** IShellService methods ***
80  virtual STDMETHODIMP SetOwner(IUnknown *punkOwner) override;
81 
82  // *** IPersist methods ***
83  virtual STDMETHODIMP GetClassID(CLSID *pClassID) override;
84 
85  // *** IPersistFolder methods ***
86  virtual STDMETHODIMP Initialize(PCIDLIST_ABSOLUTE pidl) override;
87 
88  // *** ICurrentWorkingDirectory methods ***
89  STDMETHODIMP GetDirectory(LPWSTR pwzPath, DWORD cchSize) override;
90  STDMETHODIMP SetDirectory(LPCWSTR pwzPath) override;
91 
92 public:
95 
97 
100  COM_INTERFACE_ENTRY_IID(IID_IACList, IACList)
101  COM_INTERFACE_ENTRY_IID(IID_IACList2, IACList2)
102  COM_INTERFACE_ENTRY_IID(IID_IShellService, IShellService)
103  // Windows doesn't return this
104  //COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersist)
105  COM_INTERFACE_ENTRY_IID(IID_IPersistFolder, IPersistFolder)
106  COM_INTERFACE_ENTRY_IID(IID_ICurrentWorkingDirectory, ICurrentWorkingDirectory)
107  END_COM_MAP()
108 };
STDMETHODIMP Expand(LPCOLESTR pszExpand) override
Definition: aclistisf.cpp:315
#define IDR_ACLISTISF
Definition: resource.h:104
CStringW m_szExpanded
Definition: aclistisf.h:47
const GUID IID_IEnumString
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
CComPtr< IEnumIDList > m_pEnumIDList
Definition: aclistisf.h:50
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
#define DECLARE_NOT_AGGREGATABLE(x)
Definition: atlcom.h:612
virtual STDMETHODIMP Initialize(PCIDLIST_ABSOLUTE pidl) override
Definition: aclistisf.cpp:404
CComHeapPtr< ITEMIDLIST > m_pidlLocation
Definition: aclistisf.h:48
virtual STDMETHODIMP GetClassID(CLSID *pClassID) override
Definition: aclistisf.cpp:394
CComPtr< IShellFolder > m_pShellFolder
Definition: aclistisf.h:51
static LPOLESTR
Definition: stg_prop.c:27
STDMETHODIMP Reset() override
Definition: aclistisf.cpp:274
unsigned int BOOL
Definition: ntddk_ex.h:94
HRESULT GetDisplayName(LPCITEMIDLIST pidlChild, CComHeapPtr< WCHAR > &pszChild)
Definition: aclistisf.cpp:153
#define STDMETHODIMP
Definition: basetyps.h:43
STDMETHODIMP Clone(IEnumString **ppenum) override
Definition: aclistisf.cpp:307
BOOL m_fShowHidden
Definition: aclistisf.h:45
HRESULT GetPaths(LPCITEMIDLIST pidlChild, CComHeapPtr< WCHAR > &pszRaw, CComHeapPtr< WCHAR > &pszExpanded)
Definition: aclistisf.cpp:178
#define BEGIN_COM_MAP(x)
Definition: atlcom.h:542
LOCATION_TYPE m_iNextLocation
Definition: aclistisf.h:44
DWORD m_dwOptions
Definition: aclistisf.h:43
HRESULT NextLocation()
Definition: aclistisf.cpp:35
LONG HRESULT
Definition: typedefs.h:79
virtual STDMETHODIMP SetOwner(IUnknown *punkOwner) override
Definition: aclistisf.cpp:385
CStringW m_szRawPath
Definition: aclistisf.h:46
unsigned long DWORD
Definition: ntddk_ex.h:95
CComHeapPtr< ITEMIDLIST > m_pidlCurDir
Definition: aclistisf.h:49
STDMETHODIMP Skip(ULONG celt) override
Definition: aclistisf.cpp:301
HRESULT SetLocation(LPITEMIDLIST pidl)
Definition: aclistisf.cpp:109
#define DECLARE_REGISTRY_RESOURCEID(x)
Definition: atlcom.h:606
STDMETHODIMP GetDirectory(LPWSTR pwzPath, DWORD cchSize) override
Definition: aclistisf.cpp:422
STDMETHODIMP GetOptions(DWORD *pdwFlag) override
Definition: aclistisf.cpp:373
STDMETHODIMP SetOptions(DWORD dwFlag) override
Definition: aclistisf.cpp:366
#define COM_INTERFACE_ENTRY_IID(iid, x)
Definition: atlcom.h:562
STDMETHODIMP Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched) override
Definition: aclistisf.cpp:210
#define DECLARE_PROTECT_FINAL_CONSTRUCT()
Definition: atlcom.h:640
unsigned int ULONG
Definition: retypes.h:1
CAtlStringW CStringW
Definition: atlstr.h:130
STDMETHODIMP SetDirectory(LPCWSTR pwzPath) override
Definition: aclistisf.cpp:428
#define END_COM_MAP()
Definition: atlcom.h:553
WCHAR * LPWSTR
Definition: xmlstorage.h:184
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
CComPtr< IBrowserService > m_pBrowserService
Definition: aclistisf.h:52