/* * Updates the arrange menu with the new items. */ void CContainer::UpdateArrangeMenuItems(void) { list<int> SortModes; list<int>::iterator itr; ArrangeMenuItem_t am; int SortById; int GroupById; DeletePreviousArrangeMenuItems(); m_pActiveShellBrowser->QueryCurrentSortModes(&SortModes); m_ArrangeList.clear(); if(SortModes.size() != 0) { for(itr = SortModes.begin();itr != SortModes.end();itr++) { SortById = DetermineSortModeMenuId(*itr); GroupById = DetermineGroupModeMenuId(*itr); if(SortById != -1 && GroupById != -1) { am.SortById = SortById; am.GroupById = GroupById; m_ArrangeList.push_back(am); } } m_pActiveArrangeMenuItems = &m_ArrangeList; } else { SetActiveArrangeMenuItems(); } SortModes.clear(); m_iMaxArrangeMenuItem = InsertArrangeMenuItems(m_hArrangeSubMenu); /* Do NOT mark the whole menu to be owner drawn. The lower menus (below the sort modes) are already owner drawn. ONLY mark the current sort modes as owner drawn. */ SetMenuOwnerDrawInternal(m_hArrangeSubMenu,m_iMaxArrangeMenuItem); SetMenuOwnerDrawInternal(m_hGroupBySubMenu,m_iMaxArrangeMenuItem); }
/* * Set the state of the items in the * 'arrange menu', which appears as a * submenu in other higher level menus. */ void Explorerplusplus::SetArrangeMenuItemStates(HMENU hProgramMenu) { UINT ItemToCheck; UINT SortMode; BOOL bShowInGroups; BOOL bVirtualFolder; UINT uFirst; UINT uLast; HMENU hMenu; HMENU hMenuRClick; int nItems; int i = 0; bVirtualFolder = m_pActiveShellBrowser->InVirtualFolder(); m_pShellBrowser[m_iObjectIndex]->GetSortMode(&SortMode); bShowInGroups = m_pShellBrowser[m_iObjectIndex]->IsGroupViewEnabled(); /* Go through both the sort by and group by menus and remove all the checkmarks. Alternatively, could remember which items have checkmarks, and just uncheck those. */ nItems = GetMenuItemCount(m_hArrangeSubMenu); for(i = 0;i < nItems;i++) { CheckMenuItem(m_hArrangeSubMenu,i,MF_BYPOSITION|MF_UNCHECKED); CheckMenuItem(m_hArrangeSubMenuRClick,i,MF_BYPOSITION|MF_UNCHECKED); } nItems = GetMenuItemCount(m_hGroupBySubMenu); for(i = 0;i < nItems;i++) { CheckMenuItem(m_hGroupBySubMenu,i,MF_BYPOSITION|MF_UNCHECKED); CheckMenuItem(m_hGroupBySubMenuRClick,i,MF_BYPOSITION|MF_UNCHECKED); } if(bShowInGroups) { hMenu = m_hGroupBySubMenu; hMenuRClick = m_hGroupBySubMenuRClick; ItemToCheck = DetermineGroupModeMenuId(SortMode); if(ItemToCheck == -1) { /* Sort mode is invalid. Set it back to the default (i.e. sort by name). */ ItemToCheck = IDM_GROUPBY_NAME; } uFirst = GROUPBY_BASE; uLast = GROUPBY_END; lEnableMenuItem(m_hArrangeSubMenu,IDM_ARRANGEICONSBY_ASCENDING,FALSE); lEnableMenuItem(m_hArrangeSubMenu,IDM_ARRANGEICONSBY_DESCENDING,FALSE); lEnableMenuItem(m_hArrangeSubMenuRClick,IDM_ARRANGEICONSBY_ASCENDING,FALSE); lEnableMenuItem(m_hArrangeSubMenuRClick,IDM_ARRANGEICONSBY_DESCENDING,FALSE); lEnableMenuItem(m_hGroupBySubMenu,IDM_ARRANGEICONSBY_ASCENDING,TRUE); lEnableMenuItem(m_hGroupBySubMenu,IDM_ARRANGEICONSBY_DESCENDING,TRUE); lEnableMenuItem(m_hGroupBySubMenuRClick,IDM_ARRANGEICONSBY_ASCENDING,TRUE); lEnableMenuItem(m_hGroupBySubMenuRClick,IDM_ARRANGEICONSBY_DESCENDING,TRUE); /* May need to change this (i.e. uncheck each menu item individually). */ CheckMenuRadioItem(m_hArrangeSubMenu,SORTBY_BASE,SORTBY_END, 0,MF_BYCOMMAND); CheckMenuRadioItem(m_hArrangeSubMenuRClick,SORTBY_BASE,SORTBY_END, 0,MF_BYCOMMAND); } else { hMenu = m_hArrangeSubMenu; hMenuRClick = m_hArrangeSubMenuRClick; ItemToCheck = DetermineSortModeMenuId(SortMode); if(ItemToCheck == -1) { /* Sort mode is invalid. Set it back to the default (i.e. sort by name). */ ItemToCheck = IDM_SORTBY_NAME; } uFirst = SORTBY_BASE; uLast = SORTBY_END; lEnableMenuItem(m_hGroupBySubMenu,IDM_ARRANGEICONSBY_ASCENDING,FALSE); lEnableMenuItem(m_hGroupBySubMenu,IDM_ARRANGEICONSBY_DESCENDING,FALSE); lEnableMenuItem(m_hGroupBySubMenuRClick,IDM_ARRANGEICONSBY_ASCENDING,FALSE); lEnableMenuItem(m_hGroupBySubMenuRClick,IDM_ARRANGEICONSBY_DESCENDING,FALSE); lEnableMenuItem(m_hArrangeSubMenu,IDM_ARRANGEICONSBY_ASCENDING,TRUE); lEnableMenuItem(m_hArrangeSubMenu,IDM_ARRANGEICONSBY_DESCENDING,TRUE); lEnableMenuItem(m_hArrangeSubMenuRClick,IDM_ARRANGEICONSBY_ASCENDING,TRUE); lEnableMenuItem(m_hArrangeSubMenuRClick,IDM_ARRANGEICONSBY_DESCENDING,TRUE); } CheckMenuRadioItem(hMenu,uFirst,uLast, ItemToCheck,MF_BYCOMMAND); CheckMenuRadioItem(hMenuRClick,uFirst,uLast, ItemToCheck,MF_BYCOMMAND); if(m_pActiveShellBrowser->GetSortAscending()) ItemToCheck = IDM_ARRANGEICONSBY_ASCENDING; else ItemToCheck = IDM_ARRANGEICONSBY_DESCENDING; CheckMenuRadioItem(hMenu,IDM_ARRANGEICONSBY_ASCENDING,IDM_ARRANGEICONSBY_DESCENDING, ItemToCheck,MF_BYCOMMAND); CheckMenuRadioItem(hMenuRClick,IDM_ARRANGEICONSBY_ASCENDING,IDM_ARRANGEICONSBY_DESCENDING, ItemToCheck,MF_BYCOMMAND); }