ReactOS 0.4.15-dev-8434-g155a7c7
internettoolbar.cpp File Reference
#include "precomp.h"
Include dependency graph for internettoolbar.cpp:

Go to the source code of this file.

Classes

struct  ITBARSTATE
 
class  CDockSite
 

Functions

STDMETHOD() GetNameSpaceID (LPCITEMIDLIST, LPGUID) PURE
 
STDMETHOD() QueryNameSpace (ULONG, LPGUID, IShellFolder **) PURE
 
STDMETHOD() EnumNameSpace (ULONG, PULONG) PURE
 
HRESULT WINAPI SHBindToFolder (LPCITEMIDLIST path, IShellFolder **newFolder)
 
HRESULT IUnknown_RelayWinEvent (IUnknown *punk, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult)
 
HRESULT IUnknown_ShowDW (IUnknown *punk, BOOL fShow)
 
HRESULT IUnknown_CloseDW (IUnknown *punk, DWORD dwReserved)
 
static HRESULT BindToDesktop (LPCITEMIDLIST pidl, IShellFolder **ppsfResult)
 
static HRESULT GetFavoritesFolder (IShellFolder **ppsfFavorites, LPITEMIDLIST *ppidl)
 

Variables

interface IShellFolder LPCITEMIDLIST
 
interface IShellFolder ULONG PURE
 

Function Documentation

◆ BindToDesktop()

static HRESULT BindToDesktop ( LPCITEMIDLIST  pidl,
IShellFolder **  ppsfResult 
)
static

Definition at line 386 of file internettoolbar.cpp.

387{
388 HRESULT hr;
389 CComPtr<IShellFolder> psfDesktop;
390
391 *ppsfResult = NULL;
392
393 hr = SHGetDesktopFolder(&psfDesktop);
394 if (FAILED(hr))
395 return hr;
396
397 hr = psfDesktop->BindToObject(pidl, NULL, IID_PPV_ARG(IShellFolder, ppsfResult));
398
399 return hr;
400}
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define NULL
Definition: types.h:112
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hr
Definition: shlfolder.c:183
#define IID_PPV_ARG(Itype, ppType)

Referenced by GetFavoritesFolder().

◆ EnumNameSpace()

STDMETHOD() EnumNameSpace ( ULONG  ,
PULONG   
)

◆ GetFavoritesFolder()

static HRESULT GetFavoritesFolder ( IShellFolder **  ppsfFavorites,
LPITEMIDLIST ppidl 
)
static

Definition at line 402 of file internettoolbar.cpp.

403{
404 HRESULT hr;
405 LPITEMIDLIST pidlUserFavorites;
406 LPITEMIDLIST pidlCommonFavorites;
407 CComPtr<IShellFolder> psfUserFavorites;
408 CComPtr<IShellFolder> psfCommonFavorites;
410
411 if (ppsfFavorites)
412 *ppsfFavorites = NULL;
413
414 if (ppidl)
415 *ppidl = NULL;
416
417 hr = SHGetSpecialFolderLocation(NULL, CSIDL_FAVORITES, &pidlUserFavorites);
418 if (FAILED(hr))
419 {
420 WARN("Failed to get the USER favorites folder. Trying to run with just the COMMON one.\n");
421
424 return hr;
425
426 TRACE("COMMON favorites obtained.\n");
427 *ppidl = pidlCommonFavorites;
428 hr = BindToDesktop(pidlCommonFavorites, ppsfFavorites);
429 return hr;
430 }
431
434 {
435 WARN("Failed to get the COMMON favorites folder. Will use only the USER contents.\n");
436 *ppidl = pidlCommonFavorites;
437 hr = BindToDesktop(pidlUserFavorites, ppsfFavorites);
438 return hr;
439 }
440
441 TRACE("Both COMMON and USER favorites folders obtained, merging them...\n");
442
443 hr = BindToDesktop(pidlUserFavorites, &psfUserFavorites);
445 return hr;
446
447 hr = BindToDesktop(pidlCommonFavorites, &psfCommonFavorites);
449 return hr;
450
451 hr = CMergedFolder_CreateInstance(IID_PPV_ARG(IAugmentedShellFolder, &pasf));
453 {
454 *ppsfFavorites = psfUserFavorites.Detach();
455 *ppidl = pidlUserFavorites;
456 ILFree(pidlCommonFavorites);
457 return hr;
458 }
459
460 hr = pasf->AddNameSpace(NULL, psfUserFavorites, pidlUserFavorites, 0xFF00);
462 return hr;
463
464 hr = pasf->AddNameSpace(NULL, psfCommonFavorites, pidlCommonFavorites, 0);
466 return hr;
467
468 hr = pasf->QueryInterface(IID_PPV_ARG(IShellFolder, ppsfFavorites));
469 pasf.Release();
470
471 // TODO: obtain the folder's PIDL
472
473 ILFree(pidlCommonFavorites);
474 ILFree(pidlUserFavorites);
475
476 return hr;
477}
#define WARN(fmt,...)
Definition: precomp.h:61
void Release()
Definition: atlcomcli.h:170
T * Detach()
Definition: atlcomcli.h:186
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:121
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
Definition: shellpath.c:3260
static HRESULT BindToDesktop(LPCITEMIDLIST pidl, IShellFolder **ppsfResult)
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:940
#define CMergedFolder_CreateInstance
Definition: shellmenu.h:93
#define CSIDL_FAVORITES
Definition: shlobj.h:2178
#define CSIDL_COMMON_FAVORITES
Definition: shlobj.h:2202
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by CMenuCallback::GetObject().

◆ GetNameSpaceID()

STDMETHOD() GetNameSpaceID ( LPCITEMIDLIST  ,
LPGUID   
)

◆ IUnknown_CloseDW()

HRESULT IUnknown_CloseDW ( IUnknown punk,
DWORD  dwReserved 
)

Definition at line 117 of file internettoolbar.cpp.

118{
119 CComPtr<IDockingWindow> dockingWindow;
120 HRESULT hResult = punk->QueryInterface(IID_PPV_ARG(IDockingWindow, &dockingWindow));
121 if (FAILED_UNEXPECTEDLY(hResult))
122 return hResult;
123 hResult = dockingWindow->CloseDW(dwReserved);
124 if (FAILED_UNEXPECTEDLY(hResult))
125 return hResult;
126 return S_OK;
127}
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define S_OK
Definition: intsafe.h:52
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95

Referenced by CInternetToolbar::CloseDW().

◆ IUnknown_RelayWinEvent()

HRESULT IUnknown_RelayWinEvent ( IUnknown punk,
HWND  hWnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam,
LRESULT theResult 
)

Definition at line 91 of file internettoolbar.cpp.

92{
93 CComPtr<IWinEventHandler> menuWinEventHandler;
94 HRESULT hResult = punk->QueryInterface(IID_PPV_ARG(IWinEventHandler, &menuWinEventHandler));
95 if (FAILED_UNEXPECTEDLY(hResult))
96 return hResult;
97 hResult = menuWinEventHandler->IsWindowOwner(hWnd);
98 if (FAILED_UNEXPECTEDLY(hResult))
99 return hResult;
100 if (hResult == S_OK)
101 return menuWinEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult);
102 return S_FALSE;
103}
HWND hWnd
Definition: settings.c:17
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define S_FALSE
Definition: winerror.h:2357

Referenced by CInternetToolbar::OnWinEvent().

◆ IUnknown_ShowDW()

HRESULT IUnknown_ShowDW ( IUnknown punk,
BOOL  fShow 
)

Definition at line 105 of file internettoolbar.cpp.

106{
107 CComPtr<IDockingWindow> dockingWindow;
108 HRESULT hResult = punk->QueryInterface(IID_PPV_ARG(IDockingWindow, &dockingWindow));
109 if (FAILED_UNEXPECTEDLY(hResult))
110 return hResult;
111 hResult = dockingWindow->ShowDW(fShow);
112 if (FAILED_UNEXPECTEDLY(hResult))
113 return hResult;
114 return S_OK;
115}

Referenced by CShellBrowser::Exec(), CShellBrowser::Initialize(), and CInternetToolbar::ShowDW().

◆ QueryNameSpace()

STDMETHOD() QueryNameSpace ( ULONG  ,
LPGUID  ,
IShellFolder **   
)

◆ SHBindToFolder()

HRESULT WINAPI SHBindToFolder ( LPCITEMIDLIST  path,
IShellFolder **  newFolder 
)

Definition at line 154 of file shellbrowser.cpp.

155{
156 CComPtr<IShellFolder> desktop;
157
158 HRESULT hr = ::SHGetDesktopFolder(&desktop);
160 return E_FAIL;
161 if (path == NULL || path->mkid.cb == 0)
162 {
163 *newFolder = desktop;
164 desktop.p->AddRef ();
165 return S_OK;
166 }
167 return desktop->BindToObject (path, NULL, IID_PPV_ARG(IShellFolder, newFolder));
168}
#define E_FAIL
Definition: ddrawi.h:102

Referenced by CShellBrowser::BrowseToPIDL().

Variable Documentation

◆ LPCITEMIDLIST

◆ PURE

Definition at line 32 of file internettoolbar.cpp.