Commit 9323d33f authored by André Zwing's avatar André Zwing Committed by Alexandre Julliard

shell32: Add IApplicationDocumentLists stub.

Lets Cablabel S3 Lite 1.4.0.2 start, otherwise it shows a msgbox with the error and freezes. Signed-off-by: 's avatarAndré Zwing <nerv@dawncrow.de> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent d4f83ba7
...@@ -75,6 +75,12 @@ coclass KnownFolderManager { interface IKnownFolderManager; } ...@@ -75,6 +75,12 @@ coclass KnownFolderManager { interface IKnownFolderManager; }
] coclass ApplicationDestinations { interface IApplicationDestinations; } ] coclass ApplicationDestinations { interface IApplicationDestinations; }
[ [
helpstring("Application Document List"),
threading(apartment),
uuid(86bec222-30f2-47e0-9f25-60d11cd75c28)
] coclass ApplicationDocumentLists { interface IApplicationDocumentLists; }
[
helpstring("Shell Drag and Drop Helper"), helpstring("Shell Drag and Drop Helper"),
threading(apartment), threading(apartment),
uuid(4657278a-411b-11d2-839a-00c04fd918d0) uuid(4657278a-411b-11d2-839a-00c04fd918d0)
......
...@@ -112,6 +112,7 @@ HRESULT WINAPI IAutoComplete_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVO ...@@ -112,6 +112,7 @@ HRESULT WINAPI IAutoComplete_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVO
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 WINAPI ApplicationDestinations_Constructor(IUnknown *outer, REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN;
HRESULT WINAPI ApplicationDocumentLists_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;
......
...@@ -68,6 +68,7 @@ static const struct { ...@@ -68,6 +68,7 @@ static const struct {
{&CLSID_ApplicationAssociationRegistration, ApplicationAssociationRegistration_Constructor}, {&CLSID_ApplicationAssociationRegistration, ApplicationAssociationRegistration_Constructor},
{&CLSID_ApplicationDestinations, ApplicationDestinations_Constructor}, {&CLSID_ApplicationDestinations, ApplicationDestinations_Constructor},
{&CLSID_ApplicationDocumentLists, ApplicationDocumentLists_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},
......
...@@ -1180,6 +1180,118 @@ HRESULT WINAPI ApplicationDestinations_Constructor(IUnknown *outer, REFIID riid, ...@@ -1180,6 +1180,118 @@ HRESULT WINAPI ApplicationDestinations_Constructor(IUnknown *outer, REFIID riid,
typedef struct typedef struct
{ {
IApplicationDocumentLists IApplicationDocumentLists_iface;
LONG ref;
} IApplicationDocumentListsImpl;
static inline IApplicationDocumentListsImpl *impl_from_IApplicationDocumentLists( IApplicationDocumentLists *iface )
{
return CONTAINING_RECORD(iface, IApplicationDocumentListsImpl, IApplicationDocumentLists_iface);
}
static HRESULT WINAPI ApplicationDocumentLists_QueryInterface(IApplicationDocumentLists *iface,
REFIID riid, LPVOID *ppv)
{
IApplicationDocumentListsImpl *This = impl_from_IApplicationDocumentLists(iface);
TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), ppv);
if (ppv == NULL)
return E_POINTER;
if (IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IApplicationDocumentLists, riid))
{
*ppv = &This->IApplicationDocumentLists_iface;
IUnknown_AddRef((IUnknown*)*ppv);
TRACE("Returning IApplicationDocumentLists: %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 ApplicationDocumentLists_AddRef(IApplicationDocumentLists *iface)
{
IApplicationDocumentListsImpl *This = impl_from_IApplicationDocumentLists(iface);
ULONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p), new refcount=%i\n", This, ref);
return ref;
}
static ULONG WINAPI ApplicationDocumentLists_Release(IApplicationDocumentLists *iface)
{
IApplicationDocumentListsImpl *This = impl_from_IApplicationDocumentLists(iface);
ULONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p), new refcount=%i\n", This, ref);
if (ref == 0)
heap_free(This);
return ref;
}
static HRESULT WINAPI ApplicationDocumentLists_SetAppID(IApplicationDocumentLists *iface,
const WCHAR *appid)
{
IApplicationDocumentListsImpl *This = impl_from_IApplicationDocumentLists(iface);
FIXME("(%p, %s) stub!\n", This, debugstr_w(appid));
return E_NOTIMPL;
}
static HRESULT WINAPI ApplicationDocumentLists_GetList(IApplicationDocumentLists *iface,
APPDOCLISTTYPE list_type, UINT item_count,
REFIID riid, void **obj)
{
IApplicationDocumentListsImpl *This = impl_from_IApplicationDocumentLists(iface);
FIXME("(%p, %u, %u, %s, %p): stub\n", This, list_type, item_count, debugstr_guid(riid), obj);
return E_NOTIMPL;
}
static const IApplicationDocumentListsVtbl ApplicationDocumentListsVtbl =
{
ApplicationDocumentLists_QueryInterface,
ApplicationDocumentLists_AddRef,
ApplicationDocumentLists_Release,
ApplicationDocumentLists_SetAppID,
ApplicationDocumentLists_GetList
};
HRESULT WINAPI ApplicationDocumentLists_Constructor(IUnknown *outer, REFIID riid, LPVOID *ppv)
{
IApplicationDocumentListsImpl *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->IApplicationDocumentLists_iface.lpVtbl = &ApplicationDocumentListsVtbl;
This->ref = 0;
hr = IUnknown_QueryInterface(&This->IApplicationDocumentLists_iface, riid, ppv);
if (FAILED(hr))
SHFree(This);
return hr;
}
typedef struct
{
const KNOWNFOLDERID *id; const KNOWNFOLDERID *id;
CSIDL_Type type; CSIDL_Type type;
LPCWSTR szValueName; LPCWSTR szValueName;
......
...@@ -3486,6 +3486,29 @@ interface IApplicationDestinations : IUnknown ...@@ -3486,6 +3486,29 @@ interface IApplicationDestinations : IUnknown
} }
[ [
object,
uuid(3c594f9f-9f30-47a1-979a-c9e83d3d0a06),
pointer_default(unique)
]
interface IApplicationDocumentLists : IUnknown
{
typedef [v1_enum] enum APPDOCLISTTYPE
{
ADLT_RECENT = 0,
ADLT_FREQUENT = 1,
} APPDOCLISTTYPE;
HRESULT SetAppID(
[in] LPCWSTR pszAppID);
HRESULT GetList(
[in] APPDOCLISTTYPE list_type,
[in] UINT item_count,
[in] REFIID riid,
[out, iid_is(riid)] void **ppv);
}
[
uuid(6332debf-87b5-4670-90c0-5e57b408a49e), uuid(6332debf-87b5-4670-90c0-5e57b408a49e),
object, object,
pointer_default(unique) pointer_default(unique)
...@@ -3826,6 +3849,14 @@ library ShellObjects ...@@ -3826,6 +3849,14 @@ library ShellObjects
} }
[ [
uuid(86bec222-30f2-47e0-9f25-60d11cd75c28)
]
coclass ApplicationDocumentLists
{
interface IApplicationDocumentLists;
}
[
uuid(00021401-0000-0000-c000-000000000046) uuid(00021401-0000-0000-c000-000000000046)
] ]
coclass ShellLink coclass ShellLink
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment