ReactOS 0.4.15-dev-5895-g2687c1b
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
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{
33private:
35 {
40 LT_MAX
41 };
42
46 CStringW m_szRawPath;
47 CStringW m_szExpanded;
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
54public:
55 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
92public:
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)
108};
#define STDMETHODIMP
Definition: basetyps.h:43
CStringW m_szExpanded
Definition: aclistisf.h:47
CComPtr< IEnumIDList > m_pEnumIDList
Definition: aclistisf.h:50
STDMETHODIMP Reset() override
Definition: aclistisf.cpp:274
STDMETHODIMP GetDirectory(LPWSTR pwzPath, DWORD cchSize) override
Definition: aclistisf.cpp:422
CComPtr< IShellFolder > m_pShellFolder
Definition: aclistisf.h:51
BOOL m_fShowHidden
Definition: aclistisf.h:45
@ LT_DIRECTORY
Definition: aclistisf.h:36
@ LT_FAVORITES
Definition: aclistisf.h:39
@ LT_MYCOMPUTER
Definition: aclistisf.h:38
@ LT_DESKTOP
Definition: aclistisf.h:37
HRESULT SetLocation(LPITEMIDLIST pidl)
Definition: aclistisf.cpp:109
STDMETHODIMP GetOptions(DWORD *pdwFlag) override
Definition: aclistisf.cpp:373
STDMETHODIMP Skip(ULONG celt) override
Definition: aclistisf.cpp:301
virtual STDMETHODIMP GetClassID(CLSID *pClassID) override
Definition: aclistisf.cpp:394
CComHeapPtr< ITEMIDLIST > m_pidlCurDir
Definition: aclistisf.h:49
STDMETHODIMP Expand(LPCOLESTR pszExpand) override
Definition: aclistisf.cpp:315
LOCATION_TYPE m_iNextLocation
Definition: aclistisf.h:44
CComPtr< IBrowserService > m_pBrowserService
Definition: aclistisf.h:52
STDMETHODIMP SetDirectory(LPCWSTR pwzPath) override
Definition: aclistisf.cpp:428
CStringW m_szRawPath
Definition: aclistisf.h:46
virtual STDMETHODIMP SetOwner(IUnknown *punkOwner) override
Definition: aclistisf.cpp:385
STDMETHODIMP Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched) override
Definition: aclistisf.cpp:210
STDMETHODIMP Clone(IEnumString **ppenum) override
Definition: aclistisf.cpp:307
HRESULT GetPaths(LPCITEMIDLIST pidlChild, CComHeapPtr< WCHAR > &pszRaw, CComHeapPtr< WCHAR > &pszExpanded)
Definition: aclistisf.cpp:178
HRESULT NextLocation()
Definition: aclistisf.cpp:35
DWORD m_dwOptions
Definition: aclistisf.h:43
HRESULT GetDisplayName(LPCITEMIDLIST pidlChild, CComHeapPtr< WCHAR > &pszChild)
Definition: aclistisf.cpp:153
CComHeapPtr< ITEMIDLIST > m_pidlLocation
Definition: aclistisf.h:48
STDMETHODIMP SetOptions(DWORD dwFlag) override
Definition: aclistisf.cpp:366
#define IDR_ACLISTISF
Definition: resource.h:104
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
#define BEGIN_COM_MAP(x)
Definition: atlcom.h:542
#define COM_INTERFACE_ENTRY_IID(iid, x)
Definition: atlcom.h:562
#define DECLARE_PROTECT_FINAL_CONSTRUCT()
Definition: atlcom.h:640
#define DECLARE_NOT_AGGREGATABLE(x)
Definition: atlcom.h:612
#define DECLARE_REGISTRY_RESOURCEID(x)
Definition: atlcom.h:606
#define END_COM_MAP()
Definition: atlcom.h:553
static LPOLESTR
Definition: stg_prop.c:27
const GUID IID_IEnumString
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
uint32_t ULONG
Definition: typedefs.h:59
static void Initialize()
Definition: xlate.c:212
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185