xref: /reactos/dll/win32/mshtml/hlink.c (revision 50cf16b3)
1 /*
2  * Copyright 2005-2006 Jacek Caban for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 
19 #include "mshtml_private.h"
20 
21 /**********************************************************
22  * IHlinkTarget implementation
23  */
24 
25 static inline HTMLDocument *impl_from_IHlinkTarget(IHlinkTarget *iface)
26 {
27     return CONTAINING_RECORD(iface, HTMLDocument, IHlinkTarget_iface);
28 }
29 
30 static HRESULT WINAPI HlinkTarget_QueryInterface(IHlinkTarget *iface, REFIID riid, void **ppv)
31 {
32     HTMLDocument *This = impl_from_IHlinkTarget(iface);
33     return htmldoc_query_interface(This, riid, ppv);
34 }
35 
36 static ULONG WINAPI HlinkTarget_AddRef(IHlinkTarget *iface)
37 {
38     HTMLDocument *This = impl_from_IHlinkTarget(iface);
39     return htmldoc_addref(This);
40 }
41 
42 static ULONG WINAPI HlinkTarget_Release(IHlinkTarget *iface)
43 {
44     HTMLDocument *This = impl_from_IHlinkTarget(iface);
45     return htmldoc_release(This);
46 }
47 
48 static HRESULT WINAPI HlinkTarget_SetBrowseContext(IHlinkTarget *iface, IHlinkBrowseContext *pihlbc)
49 {
50     HTMLDocument *This = impl_from_IHlinkTarget(iface);
51     FIXME("(%p)->(%p)\n", This, pihlbc);
52     return E_NOTIMPL;
53 }
54 
55 static HRESULT WINAPI HlinkTarget_GetBrowseContext(IHlinkTarget *iface, IHlinkBrowseContext **ppihlbc)
56 {
57     HTMLDocument *This = impl_from_IHlinkTarget(iface);
58     FIXME("(%p)->(%p)\n", This, ppihlbc);
59     return E_NOTIMPL;
60 }
61 
62 static HRESULT WINAPI HlinkTarget_Navigate(IHlinkTarget *iface, DWORD grfHLNF, LPCWSTR pwzJumpLocation)
63 {
64     HTMLDocument *This = impl_from_IHlinkTarget(iface);
65 
66     TRACE("(%p)->(%08x %s)\n", This, grfHLNF, debugstr_w(pwzJumpLocation));
67 
68     if(grfHLNF)
69         FIXME("Unsupported grfHLNF=%08x\n", grfHLNF);
70     if(pwzJumpLocation)
71         FIXME("JumpLocation not supported\n");
72 
73     if(!This->doc_obj->client)
74         return navigate_new_window(This->window, This->window->uri, NULL, NULL, NULL);
75 
76     return IOleObject_DoVerb(&This->IOleObject_iface, OLEIVERB_SHOW, NULL, NULL, -1, NULL, NULL);
77 }
78 
79 static HRESULT WINAPI HlinkTarget_GetMoniker(IHlinkTarget *iface, LPCWSTR pwzLocation, DWORD dwAssign,
80         IMoniker **ppimkLocation)
81 {
82     HTMLDocument *This = impl_from_IHlinkTarget(iface);
83     FIXME("(%p)->(%s %08x %p)\n", This, debugstr_w(pwzLocation), dwAssign, ppimkLocation);
84     return E_NOTIMPL;
85 }
86 
87 static HRESULT WINAPI HlinkTarget_GetFriendlyName(IHlinkTarget *iface, LPCWSTR pwzLocation,
88         LPWSTR *ppwzFriendlyName)
89 {
90     HTMLDocument *This = impl_from_IHlinkTarget(iface);
91     FIXME("(%p)->(%s %p)\n", This, debugstr_w(pwzLocation), ppwzFriendlyName);
92     return E_NOTIMPL;
93 }
94 
95 static const IHlinkTargetVtbl HlinkTargetVtbl = {
96     HlinkTarget_QueryInterface,
97     HlinkTarget_AddRef,
98     HlinkTarget_Release,
99     HlinkTarget_SetBrowseContext,
100     HlinkTarget_GetBrowseContext,
101     HlinkTarget_Navigate,
102     HlinkTarget_GetMoniker,
103     HlinkTarget_GetFriendlyName
104 };
105 
106 void HTMLDocument_Hlink_Init(HTMLDocument *This)
107 {
108     This->IHlinkTarget_iface.lpVtbl = &HlinkTargetVtbl;
109 }
110