Author: gedmurphy
Date: Wed Jun 17 08:15:08 2015
New Revision: 68167

URL: http://svn.reactos.org/svn/reactos?rev=68167&view=rev
Log:
[DEVMGR]
- Add the (not yet dynamic) context menu
- Implement right click node select

Modified:
    trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.cpp
    trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.h
    trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp
    trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h
    trunk/reactos/dll/win32/devmgr/devmgmt/lang/en-US.rc

Modified: trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.cpp?rev=68167&r1=68166&r2=68167&view=diff
==============================================================================
--- trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.cpp       [iso-8859-1] 
(original)
+++ trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.cpp       [iso-8859-1] 
Wed Jun 17 08:15:08 2015
@@ -34,7 +34,7 @@
 {
     CDeviceView *This;
     BOOL ScanForChanges;
-    BOOL UpdateView;
+BOOL UpdateView;
 };
 
 
@@ -46,7 +46,8 @@
     m_hMainWnd(hMainWnd),
     m_hTreeView(NULL),
     m_hPropertyDialog(NULL),
-    m_hShortcutMenu(NULL),
+    m_hMenu(NULL),
+    m_hContextMenu(NULL),
     m_ViewType(DevicesByType),
     m_ShowHidden(FALSE),
     m_RootClassImage(-1),
@@ -72,7 +73,7 @@
                                   WC_TREEVIEW,
                                   NULL,
                                   WS_CHILD | WS_VISIBLE | WS_BORDER | 
TVS_HASLINES |
-                                   TVS_HASBUTTONS | TVS_SHOWSELALWAYS | 
TVS_LINESATROOT,
+                                  TVS_HASBUTTONS | TVS_SHOWSELALWAYS | 
TVS_LINESATROOT,
                                   0, 0, 0, 0,
                                   m_hMainWnd,
                                   (HMENU)IDC_TREEVIEW,
@@ -89,6 +90,11 @@
         SetWindowTheme(m_hTreeView, L"explorer", NULL);
     }
 
+    // Create the context menu and make properties the default item
+    m_hMenu = LoadMenuW(g_hInstance, MAKEINTRESOURCEW(IDR_POPUP));
+    m_hContextMenu = GetSubMenu(m_hMenu, 0);
+    SetMenuDefaultItem(m_hContextMenu, IDC_PROPERTIES, FALSE);
+
     return !!(m_hTreeView);
 }
 
@@ -103,11 +109,13 @@
         ZeroMemory(&m_ImageListData, sizeof(SP_CLASSIMAGELIST_DATA));
     }
 
+    DestroyMenu(m_hMenu);
+
     return true;
 }
 
-void
-CDeviceView::Size(
+LRESULT
+CDeviceView::OnSize(
     _In_ int x,
     _In_ int y,
     _In_ int cx,
@@ -122,12 +130,64 @@
                  cx,
                  cy,
                  SWP_NOZORDER);
-}
+
+    return 0;
+}
+
+LRESULT
+CDeviceView::OnRightClick(
+    _In_ LPNMHDR NmHdr
+    )
+{
+    HTREEITEM hItem = TreeView_GetNextItem(NmHdr->hwndFrom, 0, 
TVGN_DROPHILITE);
+    if (hItem)
+    {
+        TreeView_SelectItem(NmHdr->hwndFrom, hItem);
+    }
+
+    return 0;
+}
+
+LRESULT
+CDeviceView::OnContextMenu(
+    _In_ LPARAM lParam
+    )
+{
+    HTREEITEM hSelected = TreeView_GetSelection(m_hTreeView);
+
+    RECT rc;
+    if (TreeView_GetItemRect(m_hTreeView,
+                             hSelected,
+                             &rc,
+                             TRUE))
+    {
+        POINT pt;
+        if (GetCursorPos(&pt) &&
+            ScreenToClient(m_hTreeView, &pt) &&
+            PtInRect(&rc, pt))
+        {
+            INT xPos = GET_X_LPARAM(lParam);
+            INT yPos = GET_Y_LPARAM(lParam);
+
+            TrackPopupMenuEx(m_hContextMenu,
+                             TPM_RIGHTBUTTON,
+                             xPos,
+                             yPos,
+                             m_hMainWnd,
+                             NULL);
+        }
+    }
+
+    return 0;
+}
+
 
 void
-CDeviceView::Refresh(_In_ ViewType Type,
-                     _In_ bool ScanForChanges,
-                     _In_ bool UpdateView)
+CDeviceView::Refresh(
+    _In_ ViewType Type,
+    _In_ bool ScanForChanges,
+    _In_ bool UpdateView
+    )
 {
     // Enum devices on a seperate thread to keep the gui responsive
 
@@ -192,7 +252,9 @@
 }
 
 bool
-CDeviceView::HasProperties(_In_ LPTV_ITEMW TvItem)
+CDeviceView::HasProperties(
+    _In_ LPTV_ITEMW TvItem
+    )
 {
     CNode *Node = GetNode(TvItem);
     if (Node)
@@ -203,7 +265,9 @@
 }
 
 bool
-CDeviceView::IsDisabled(_In_ LPTV_ITEMW TvItem)
+CDeviceView::IsDisabled(
+    _In_ LPTV_ITEMW TvItem
+    )
 {
     CNode *Node = GetNode(TvItem);
     if (Node)
@@ -214,7 +278,9 @@
 }
 
 bool
-CDeviceView::CanDisable(_In_ LPTV_ITEMW TvItem)
+CDeviceView::CanDisable(
+    _In_ LPTV_ITEMW TvItem
+    )
 {
     CNode *Node = GetNode(TvItem);
     if (Node)

Modified: trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.h?rev=68167&r1=68166&r2=68167&view=diff
==============================================================================
--- trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.h [iso-8859-1] Wed Jun 17 
08:15:08 2015
@@ -20,7 +20,8 @@
     HWND m_hMainWnd;
     HWND m_hTreeView;
     HWND m_hPropertyDialog;
-    HWND m_hShortcutMenu;
+    HMENU m_hMenu;
+    HMENU m_hContextMenu;
     ViewType m_ViewType;
 
     HTREEITEM m_hTreeRoot;
@@ -39,11 +40,19 @@
     bool Initialize();
     bool Uninitialize();
 
-    VOID Size(
+    LRESULT OnSize(
         _In_ int x,
         _In_ int y,
         _In_ int cx,
         _In_ int cy
+        );
+
+    LRESULT OnRightClick(
+        _In_ LPNMHDR NmHdr
+        );
+
+    LRESULT OnContextMenu(
+        _In_ LPARAM lParam
         );
 
     VOID Refresh(
@@ -55,12 +64,7 @@
     VOID DisplayPropertySheet();
     VOID SetFocus();
 
-    //VOID SetDeviceListType(ListDevices List)
-    //{
-    //    m_ListDevices = List;
-    //}
-
-    VOID ShowHiddenDevices(_In_ bool ShowHidden)
+    VOID SetHiddenDevices(_In_ bool ShowHidden)
     {
         m_ShowHidden = ShowHidden;
     }

Modified: trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp?rev=68167&r1=68166&r2=68167&view=diff
==============================================================================
--- trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp       [iso-8859-1] 
(original)
+++ trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp       [iso-8859-1] 
Wed Jun 17 08:15:08 2015
@@ -16,7 +16,6 @@
 
 #define BTN_PROPERTIES      0
 #define BTN_SCAN_HARDWARE   1
-#define BTN_SEPERATOR       -1
 #define BTN_ENABLE_DRV      2
 #define BTN_DISABLE_DRV     3
 #define BTN_UPDATE_DRV      4
@@ -124,7 +123,7 @@
                                      WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | 
WS_CLIPSIBLINGS,
                                      CW_USEDEFAULT,
                                      CW_USEDEFAULT,
-                                     500,
+                                     550,
                                      500,
                                      NULL,
                                      NULL,
@@ -229,9 +228,6 @@
                           true);
     return true;
 }
-
-
-
 
 bool
 CMainWindow::CreateToolBar()
@@ -311,7 +307,7 @@
     return bRet;
 }
 
-void CMainWindow::UpdateContext(_In_ LPTV_ITEMW TvItem)
+void CMainWindow::UpdateUiContext(_In_ LPTV_ITEMW TvItem)
 {
     WORD State;
 
@@ -437,10 +433,10 @@
     lvHeight = rcClient.bottom - iToolHeight - iStatusHeight;
 
     // Resize the device view
-    m_DeviceView->Size(0,
-                       iToolHeight,
-                       rcClient.right,
-                       lvHeight);
+    m_DeviceView->OnSize(0,
+                         iToolHeight,
+                         rcClient.right,
+                         lvHeight);
 
     return 0;
 }
@@ -449,27 +445,20 @@
 CMainWindow::OnNotify(LPARAM lParam)
 {
     LPNMHDR NmHdr = (LPNMHDR)lParam;
+    LRESULT Ret;
 
     switch (NmHdr->code)
     {
         case TVN_SELCHANGED:
         {
             LPNMTREEVIEW NmTreeView = (LPNMTREEVIEW)lParam;
-            UpdateContext(&NmTreeView->itemNew);
-            break;
-        }
-
-        case TVN_DELETEITEMW:
-        {
-            LPNMTREEVIEW NmTreeView = (LPNMTREEVIEW)lParam;
-            NmTreeView->action = NmTreeView->action;
-
-            break;
-        }
-
-        case NM_DBLCLK:
-        {
-            m_DeviceView->DisplayPropertySheet();
+            UpdateUiContext(&NmTreeView->itemNew);
+            break;
+        }
+
+        case NM_RCLICK:
+        {
+            Ret = m_DeviceView->OnRightClick(NmHdr);
             break;
         }
 
@@ -486,7 +475,7 @@
 LRESULT
 CMainWindow::OnContext(LPARAM lParam)
 {
-    return 0;
+    return m_DeviceView->OnContextMenu(lParam);
 }
 
 LRESULT
@@ -535,12 +524,12 @@
             if (CurCheckState == MF_CHECKED)
             {
                 // Inform the device view of the change
-                m_DeviceView->ShowHiddenDevices(false);
+                m_DeviceView->SetHiddenDevices(false);
                 NewCheckState = MF_UNCHECKED;
             }
             else if (CurCheckState == MF_UNCHECKED)
             {
-                m_DeviceView->ShowHiddenDevices(true);
+                m_DeviceView->SetHiddenDevices(true);
                 NewCheckState = MF_CHECKED;
             }
             else

Modified: trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h?rev=68167&r1=68166&r2=68167&view=diff
==============================================================================
--- trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.h [iso-8859-1] Wed Jun 17 
08:15:08 2015
@@ -44,7 +44,7 @@
     bool CreateToolBar();
     bool CreateStatusBar();
 
-    void UpdateContext(_In_ LPTV_ITEMW TvItem);
+    void UpdateUiContext(_In_ LPTV_ITEMW TvItem);
 
     bool StatusBarLoadString(
         HWND hStatusBar,

Modified: trunk/reactos/dll/win32/devmgr/devmgmt/lang/en-US.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/lang/en-US.rc?rev=68167&r1=68166&r2=68167&view=diff
==============================================================================
--- trunk/reactos/dll/win32/devmgr/devmgmt/lang/en-US.rc        [iso-8859-1] 
(original)
+++ trunk/reactos/dll/win32/devmgr/devmgmt/lang/en-US.rc        [iso-8859-1] 
Wed Jun 17 08:15:08 2015
@@ -9,6 +9,7 @@
   POPUP "Action"
   BEGIN
     MENUITEM "Update driver software..."    IDC_UPDATE_DRV
+    MENUITEM "Enable"                       IDC_ENABLE_DRV
     MENUITEM "Disable"                      IDC_DISABLE_DRV
     MENUITEM "Uninstall"                    IDC_UNINSTALL_DRV
     MENUITEM SEPARATOR
@@ -36,7 +37,15 @@
 BEGIN
   POPUP "popup"
   BEGIN
-    MENUITEM "Properties",                  IDC_PROPERTIES, GRAYED
+    MENUITEM "Update driver software..."    IDC_UPDATE_DRV
+    MENUITEM "Enable"                       IDC_ENABLE_DRV
+    MENUITEM "Disable"                      IDC_DISABLE_DRV
+    MENUITEM "Uninstall"                    IDC_UNINSTALL_DRV
+    MENUITEM SEPARATOR
+    MENUITEM "Scan for hardware changes"    IDC_SCAN_HARDWARE
+    MENUITEM "Add hardware"                 IDC_ADD_HARDWARE, GRAYED
+    MENUITEM SEPARATOR
+    MENUITEM "Properties", IDC_PROPERTIES
   END
 END
 


Reply via email to