From 132463abf20d379e6d3e7051b0718052c60b334b Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Tue, 13 Nov 2018 00:09:46 +0200 Subject: [PATCH] [NETSHELL] CNetConUiObject: Implement the Connect and Disconnect context menu items --- dll/shellext/netshell/shfldr_netconnect.cpp | 38 ++++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/dll/shellext/netshell/shfldr_netconnect.cpp b/dll/shellext/netshell/shfldr_netconnect.cpp index 8f553d289bd..a3398f36ecf 100644 --- a/dll/shellext/netshell/shfldr_netconnect.cpp +++ b/dll/shellext/netshell/shfldr_netconnect.cpp @@ -477,7 +477,7 @@ HRESULT WINAPI CNetConUiObject::QueryContextMenu( return E_FAIL; } - if (pdata->Status == NCS_HARDWARE_DISABLED) + if (pdata->Status == NCS_HARDWARE_DISABLED || pdata->Status == NCS_MEDIA_DISCONNECTED || pdata->Status == NCS_DISCONNECTED) _InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst, MFT_STRING, MAKEINTRESOURCEW(IDS_NET_ACTIVATE), MFS_DEFAULT); else _InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + 1, MFT_STRING, MAKEINTRESOURCEW(IDS_NET_DEACTIVATE), MFS_ENABLED); @@ -622,13 +622,6 @@ HRESULT WINAPI CNetConUiObject::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) switch(CmdId) { - case IDS_NET_ACTIVATE: - case IDS_NET_DEACTIVATE: - case IDS_NET_REPAIR: - case IDS_NET_CREATELINK: - case IDS_NET_DELETE: - FIXME("Command %u is not implemented\n", CmdId); - return E_NOTIMPL; case IDS_NET_RENAME: { HRESULT hr; @@ -646,17 +639,28 @@ HRESULT WINAPI CNetConUiObject::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) { return ShowNetConnectionStatus(m_lpOleCmd, m_pidl, lpcmi->hwnd); } + case IDS_NET_REPAIR: + case IDS_NET_CREATELINK: + case IDS_NET_DELETE: + FIXME("Command %u is not implemented\n", CmdId); + return E_NOTIMPL; + } + + HRESULT hr; + CComPtr pCon; + + hr = ILGetConnection(m_pidl, &pCon); + if (FAILED_UNEXPECTEDLY(hr)) + return hr; + + switch(CmdId) + { + case IDS_NET_ACTIVATE: + return pCon->Connect(); + case IDS_NET_DEACTIVATE: + return pCon->Disconnect(); case IDS_NET_PROPERTIES: - { - HRESULT hr; - CComPtr pCon; - - hr = ILGetConnection(m_pidl, &pCon); - if (FAILED_UNEXPECTEDLY(hr)) - return hr; - return ShowNetConnectionProperties(pCon, lpcmi->hwnd); - } } return E_NOTIMPL;