* Some menu style improvements.
* Some code style improvements.
* Added a skeleton CMergedFolder, as a base towards showing items from both the user and the common start menus. It does not work yet.
CORE-7586

svn path=/branches/shell-experiments/; revision=62330
This commit is contained in:
David Quintana 2014-02-25 18:23:02 +00:00
parent 53f74feb2d
commit 58931088c3
10 changed files with 510 additions and 10 deletions

View file

@ -284,11 +284,17 @@ CStartMenu_Constructor(REFIID riid, void **ppv)
IShellMenu* pShellMenu;
IBandSite* pBandSite;
IDeskBar* pDeskBar;
LPITEMIDLIST pidlStartMenu;
HRESULT hr;
IShellFolder *shellFolder;
IShellFolder *psfStartMenu;
LPITEMIDLIST pidlStartMenuUser;
IShellFolder *psfStartMenuUser;
#if MERGE_FOLDERS
LPITEMIDLIST pidlStartMenuAll;
IShellFolder *psfStartMenuAll;
#endif
#if USE_SYSTEM_MENUBAND
hr = CoCreateInstance(CLSID_MenuBand,
@ -349,14 +355,31 @@ CStartMenu_Constructor(REFIID riid, void **ppv)
if (FAILED(hr))
return hr;
hr = SHGetDesktopFolder(&shellFolder);
/* FIXME: Use CLSID_MergedFolder class and IID_IAugmentedShellFolder2 interface here */
/* CLSID_MergedFolder 26fdc864-be88-46e7-9235-032d8ea5162e */
/* IID_IAugmentedShellFolder2 8db3b3f4-6cfe-11d1-8ae9-00c04fd918d0 */
hr = SHGetFolderLocation(NULL, CSIDL_STARTMENU, 0, 0, &pidlStartMenu);
hr = SHGetDesktopFolder(&shellFolder);
hr = shellFolder->BindToObject(pidlStartMenu, NULL, IID_IShellFolder, (void**) &psfStartMenu);
hr = SHGetFolderLocation(NULL, CSIDL_STARTMENU, 0, 0, &pidlStartMenuUser);
hr = shellFolder->BindToObject(pidlStartMenuUser, NULL, IID_IShellFolder, (void**) &psfStartMenuUser);
hr = pShellMenu->SetShellFolder(psfStartMenu, NULL, NULL, 0);
#if MERGE_FOLDERS
hr = SHGetFolderLocation(NULL, CSIDL_COMMON_STARTMENU, 0, 0, &pidlStartMenuAll);
hr = shellFolder->BindToObject(pidlStartMenuAll, NULL, IID_IShellFolder, (void**) &psfStartMenuAll);
IShellFolder * psfMerged;
hr = CMergedFolder_Constructor(psfStartMenuUser, psfStartMenuAll, IID_PPV_ARG(IShellFolder, &psfMerged));
if (FAILED(hr))
return hr;
hr = pShellMenu->SetShellFolder(psfMerged, NULL, NULL, 0);
if (FAILED(hr))
return hr;
#else
hr = pShellMenu->SetShellFolder(psfStartMenuUser, NULL, NULL, 0);
if (FAILED(hr))
return hr;
#endif
hr = pDeskBar->SetClient(pBandSite);
if (FAILED(hr))