I also have all the code for this, but for choosing which icons to show in the toolbar. The context menu would have been able to use this code....
-----Original Message----- From: Ros-diffs [mailto:ros-diffs-boun...@reactos.org] On Behalf Of cwitt...@svn.reactos.org Sent: 31 May 2015 10:15 To: ros-di...@reactos.org Subject: [ros-diffs] [cwittich] 67981: [DEVMGMT_NEW] enable/disable context menu items on selection change Author: cwittich Date: Sun May 31 09:14:29 2015 New Revision: 67981 URL: http://svn.reactos.org/svn/reactos?rev=67981&view=rev Log: [DEVMGMT_NEW] enable/disable context menu items on selection change Modified: trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.cpp trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.h trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.cpp Modified: trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.cpp?rev=67981&r1=67980&r2=67981&view=diff ============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.cpp [iso-8859-1] (original) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.cpp [iso-8859-1] Sun May 31 09:14:29 2015 @@ -110,6 +110,30 @@ (VOID)m_Devices->Uninitialize(); return TRUE; +} + +BOOL CDeviceView::HasChildItem( + _In_ HTREEITEM Item) +{ + return (TreeView_GetChild(m_hTreeView, Item) != NULL); } + +BOOL CDeviceView::IsRootItem( + _In_ HTREEITEM Item) +{ + return (TreeView_GetRoot(m_hTreeView) == Item); } + +BOOL CDeviceView::IsRootItemSelected() +{ + return (TreeView_GetRoot(m_hTreeView) == +TreeView_GetSelection(m_hTreeView)); +} + +VOID CDeviceView::EnableContextMenuItem( + _In_ UINT Id, + _In_ UINT Enabled) +{ + EnableMenuItem(m_hShortcutMenu, Id, Enabled); } VOID Modified: trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.h?rev=67981&r1=67980&r2=67981&view=diff ============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.h [iso-8859-1] (original) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.h [iso-8859-1] Sun May 31 09:14:29 2015 @@ -34,6 +34,11 @@ BOOL Initialize(); BOOL Uninitialize(); + VOID EnableContextMenuItem( + _In_ UINT Id, + _In_ UINT Enabled + ); + VOID ShowContextMenu( _In_ INT xPos, _In_ INT yPos @@ -49,12 +54,27 @@ VOID Refresh(); VOID DisplayPropertySheet(); VOID SetFocus(); - + + BOOL IsRootItemSelected(); + + BOOL IsRootItem( + _In_ HTREEITEM Item + ); + + BOOL HasChildItem( + _In_ HTREEITEM Item + ); + VOID SetDeviceListType(ListDevices List) { m_ListDevices = List; } + ListDevices GetDeviceListType() + { + return m_ListDevices; + } + VOID ShowHiddenDevices(_In_ BOOL ShowHidden) { m_ShowHidden = ShowHidden; Modified: trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.cpp?rev=67981&r1=67980&r2=67981&view=diff ============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.cpp [iso-8859-1] (original) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.cpp [iso-8859-1] Sun May 31 09:14:29 2015 @@ -429,7 +429,61 @@ break; } - + + case TVN_SELCHANGED: + { + LPNM_TREEVIEW pnmtv = (LPNM_TREEVIEW)lParam; + ListDevices ListType = m_DeviceView->GetDeviceListType(); + + if (ListType == DevicesByType) + { + if (!m_DeviceView->HasChildItem(pnmtv->itemNew.hItem)) + { + SendMessage(m_hToolBar, + TB_SETSTATE, + IDC_PROP, + (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); + + EnableMenuItem(GetMenu(m_hMainWnd), IDC_PROP, MF_ENABLED); + m_DeviceView->EnableContextMenuItem(IDC_PROP, MF_ENABLED); + } + else + { + SendMessage(m_hToolBar, + TB_SETSTATE, + IDC_PROP, + (LPARAM)MAKELONG(TBSTATE_INDETERMINATE, + 0)); + + EnableMenuItem(GetMenu(m_hMainWnd), IDC_PROP, MF_GRAYED); + m_DeviceView->EnableContextMenuItem(IDC_PROP, MF_GRAYED); + } + } + else if (ListType == DevicesByConnection) + { + if (m_DeviceView->IsRootItem(pnmtv->itemNew.hItem)) + { + SendMessage(m_hToolBar, + TB_SETSTATE, + IDC_PROP, + (LPARAM)MAKELONG(TBSTATE_INDETERMINATE, + 0)); + + EnableMenuItem(GetMenu(m_hMainWnd), IDC_PROP, MF_GRAYED); + m_DeviceView->EnableContextMenuItem(IDC_PROP, MF_GRAYED); + } + else + { + SendMessage(m_hToolBar, + TB_SETSTATE, + IDC_PROP, + (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); + + EnableMenuItem(GetMenu(m_hMainWnd), IDC_PROP, MF_ENABLED); + m_DeviceView->EnableContextMenuItem(IDC_PROP, MF_ENABLED); + } + } + } + break; + case NM_DBLCLK: { m_DeviceView->DisplayPropertySheet(); @@ -438,7 +492,18 @@ case NM_RETURN: { - m_DeviceView->DisplayPropertySheet(); + ListDevices ListType = m_DeviceView->GetDeviceListType(); + if (ListType == DevicesByType) + { + m_DeviceView->DisplayPropertySheet(); + } + else if (ListType == DevicesByConnection) + { + if (!m_DeviceView->IsRootItemSelected()) + { + m_DeviceView->DisplayPropertySheet(); + } + } break; } } _______________________________________________ Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev