shell32: Add IApplicationDestinations stub.
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
9f4f9423d6
commit
8ea9c33829
|
@ -68,6 +68,12 @@ coclass KnownFolderManager { interface IKnownFolderManager; }
|
||||||
uuid(591209c7-767b-42b2-9fba-44ee4615f2c7)
|
uuid(591209c7-767b-42b2-9fba-44ee4615f2c7)
|
||||||
] coclass ApplicationAssociationRegistration { interface IApplicationAssociationRegistration; }
|
] coclass ApplicationAssociationRegistration { interface IApplicationAssociationRegistration; }
|
||||||
|
|
||||||
|
[
|
||||||
|
helpstring("Application Destination List"),
|
||||||
|
threading(apartment),
|
||||||
|
uuid(86c14003-4d6b-4ef3-a7b4-0506663b2e68)
|
||||||
|
] coclass ApplicationDestinations { interface IApplicationDestinations; }
|
||||||
|
|
||||||
[
|
[
|
||||||
helpstring("Shell Drag and Drop Helper"),
|
helpstring("Shell Drag and Drop Helper"),
|
||||||
threading(apartment),
|
threading(apartment),
|
||||||
|
|
|
@ -109,6 +109,8 @@ HRESULT WINAPI CPanel_ExtractIconW(LPITEMIDLIST pidl, LPCWSTR pszFile, UINT nIco
|
||||||
HRESULT WINAPI IAutoComplete_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) DECLSPEC_HIDDEN;
|
HRESULT WINAPI IAutoComplete_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv) DECLSPEC_HIDDEN;
|
||||||
HRESULT WINAPI ApplicationAssociationRegistration_Constructor(IUnknown *outer, REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN;
|
HRESULT WINAPI ApplicationAssociationRegistration_Constructor(IUnknown *outer, REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
|
HRESULT WINAPI ApplicationDestinations_Constructor(IUnknown *outer, REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
HRESULT IShellLink_ConstructFromFile(IUnknown * pUnkOuter, REFIID riid, LPCITEMIDLIST pidl, IUnknown **ppv) DECLSPEC_HIDDEN;
|
HRESULT IShellLink_ConstructFromFile(IUnknown * pUnkOuter, REFIID riid, LPCITEMIDLIST pidl, IUnknown **ppv) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
LPEXTRACTICONA IExtractIconA_Constructor(LPCITEMIDLIST) DECLSPEC_HIDDEN;
|
LPEXTRACTICONA IExtractIconA_Constructor(LPCITEMIDLIST) DECLSPEC_HIDDEN;
|
||||||
|
|
|
@ -67,6 +67,7 @@ static const struct {
|
||||||
} InterfaceTable[] = {
|
} InterfaceTable[] = {
|
||||||
|
|
||||||
{&CLSID_ApplicationAssociationRegistration, ApplicationAssociationRegistration_Constructor},
|
{&CLSID_ApplicationAssociationRegistration, ApplicationAssociationRegistration_Constructor},
|
||||||
|
{&CLSID_ApplicationDestinations, ApplicationDestinations_Constructor},
|
||||||
{&CLSID_AutoComplete, IAutoComplete_Constructor},
|
{&CLSID_AutoComplete, IAutoComplete_Constructor},
|
||||||
{&CLSID_ControlPanel, IControlPanel_Constructor},
|
{&CLSID_ControlPanel, IControlPanel_Constructor},
|
||||||
{&CLSID_DragDropHelper, IDropTargetHelper_Constructor},
|
{&CLSID_DragDropHelper, IDropTargetHelper_Constructor},
|
||||||
|
|
|
@ -1019,6 +1019,125 @@ typedef enum _CSIDL_Type {
|
||||||
#define CSIDL_SAVED_GAMES 0x0062
|
#define CSIDL_SAVED_GAMES 0x0062
|
||||||
#define CSIDL_SEARCHES 0x0063
|
#define CSIDL_SEARCHES 0x0063
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
IApplicationDestinations IApplicationDestinations_iface;
|
||||||
|
LONG ref;
|
||||||
|
} IApplicationDestinationsImpl;
|
||||||
|
|
||||||
|
static inline IApplicationDestinationsImpl *impl_from_IApplicationDestinations( IApplicationDestinations *iface )
|
||||||
|
{
|
||||||
|
return CONTAINING_RECORD(iface, IApplicationDestinationsImpl, IApplicationDestinations_iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI ApplicationDestinations_QueryInterface(IApplicationDestinations *iface, REFIID riid,
|
||||||
|
LPVOID *ppv)
|
||||||
|
{
|
||||||
|
IApplicationDestinationsImpl *This = impl_from_IApplicationDestinations(iface);
|
||||||
|
|
||||||
|
TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), ppv);
|
||||||
|
|
||||||
|
if (ppv == NULL)
|
||||||
|
return E_POINTER;
|
||||||
|
|
||||||
|
if (IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IApplicationDestinations, riid))
|
||||||
|
{
|
||||||
|
*ppv = &This->IApplicationDestinations_iface;
|
||||||
|
IUnknown_AddRef((IUnknown*)*ppv);
|
||||||
|
|
||||||
|
TRACE("Returning IApplicationDestinations: %p\n", *ppv);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ppv = NULL;
|
||||||
|
FIXME("(%p)->(%s, %p) interface not supported.\n", This, debugstr_guid(riid), ppv);
|
||||||
|
|
||||||
|
return E_NOINTERFACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI ApplicationDestinations_AddRef(IApplicationDestinations *iface)
|
||||||
|
{
|
||||||
|
IApplicationDestinationsImpl *This = impl_from_IApplicationDestinations(iface);
|
||||||
|
ULONG ref = InterlockedIncrement(&This->ref);
|
||||||
|
|
||||||
|
TRACE("(%p), new refcount=%i\n", This, ref);
|
||||||
|
|
||||||
|
return ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI ApplicationDestinations_Release(IApplicationDestinations *iface)
|
||||||
|
{
|
||||||
|
IApplicationDestinationsImpl *This = impl_from_IApplicationDestinations(iface);
|
||||||
|
ULONG ref = InterlockedDecrement(&This->ref);
|
||||||
|
|
||||||
|
TRACE("(%p), new refcount=%i\n", This, ref);
|
||||||
|
|
||||||
|
if (ref == 0)
|
||||||
|
HeapFree(GetProcessHeap(), 0, This);
|
||||||
|
|
||||||
|
return ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI ApplicationDestinations_SetAppID(IApplicationDestinations *iface, const WCHAR *appid)
|
||||||
|
{
|
||||||
|
IApplicationDestinationsImpl *This = impl_from_IApplicationDestinations(iface);
|
||||||
|
|
||||||
|
FIXME("(%p, %s) stub!\n", This, debugstr_w(appid));
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI ApplicationDestinations_RemoveDestination(IApplicationDestinations *iface, IUnknown *punk)
|
||||||
|
{
|
||||||
|
IApplicationDestinationsImpl *This = impl_from_IApplicationDestinations(iface);
|
||||||
|
|
||||||
|
FIXME("(%p, %p) stub!\n", This, punk);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI ApplicationDestinations_RemoveAllDestinations(IApplicationDestinations *iface)
|
||||||
|
{
|
||||||
|
IApplicationDestinationsImpl *This = impl_from_IApplicationDestinations(iface);
|
||||||
|
|
||||||
|
FIXME("(%p) stub!\n", This);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const IApplicationDestinationsVtbl ApplicationDestinationsVtbl =
|
||||||
|
{
|
||||||
|
ApplicationDestinations_QueryInterface,
|
||||||
|
ApplicationDestinations_AddRef,
|
||||||
|
ApplicationDestinations_Release,
|
||||||
|
ApplicationDestinations_SetAppID,
|
||||||
|
ApplicationDestinations_RemoveDestination,
|
||||||
|
ApplicationDestinations_RemoveAllDestinations
|
||||||
|
};
|
||||||
|
|
||||||
|
HRESULT WINAPI ApplicationDestinations_Constructor(IUnknown *outer, REFIID riid, LPVOID *ppv)
|
||||||
|
{
|
||||||
|
IApplicationDestinationsImpl *This;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
TRACE("(%p, %s, %p)\n", outer, debugstr_guid(riid), ppv);
|
||||||
|
|
||||||
|
if (outer)
|
||||||
|
return CLASS_E_NOAGGREGATION;
|
||||||
|
|
||||||
|
if (!(This = SHAlloc(sizeof(*This))))
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
|
This->IApplicationDestinations_iface.lpVtbl = &ApplicationDestinationsVtbl;
|
||||||
|
This->ref = 0;
|
||||||
|
|
||||||
|
hr = IUnknown_QueryInterface(&This->IApplicationDestinations_iface, riid, ppv);
|
||||||
|
if (FAILED(hr))
|
||||||
|
SHFree(This);
|
||||||
|
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
const KNOWNFOLDERID *id;
|
const KNOWNFOLDERID *id;
|
||||||
|
|
Loading…
Reference in New Issue