From 5a6cf1494613b83332e4fad01980bb636c510a88 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sat, 23 Jun 2012 11:11:47 -0400 Subject: [PATCH] Windows: ShellExt Add Prop Page only if AFS If the file is not in AFS, do not add any of the AFS specific property sheets. Change-Id: Ie6a794d4b93821287a8d41c6f2e4931edaf45917 Reviewed-on: http://gerrit.openafs.org/7644 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/client_exp/shell_ext.cpp | 125 ++++++++++++++--------------- 1 file changed, 59 insertions(+), 66 deletions(-) diff --git a/src/WINNT/client_exp/shell_ext.cpp b/src/WINNT/client_exp/shell_ext.cpp index 2f916f875..d21aca405 100644 --- a/src/WINNT/client_exp/shell_ext.cpp +++ b/src/WINNT/client_exp/shell_ext.cpp @@ -952,19 +952,21 @@ STDMETHODIMP CShellExt::XPropertySheetExt::AddPages(LPFNADDPROPSHEETPAGE lpfnAdd PROPSHEETPAGE psp; SecureZeroMemory(&psp, sizeof(PROPSHEETPAGE)); HPROPSHEETPAGE hPage; - CPropFile *sheetpage = NULL; + CPropFile *filesheet = NULL; + CPropVolume *volsheet = NULL; + CPropACL * aclsheet = NULL; - sheetpage = new CPropFile(pThis->m_astrFileNames); + filesheet = new CPropFile(pThis->m_astrFileNames); - if (sheetpage == NULL) + if (filesheet == NULL) return E_OUTOFMEMORY; HINSTANCE hInst = 0; TaLocale_GetResource(RT_DIALOG, MAKEINTRESOURCE(IDD_PROPPAGE_FILE), LANG_USER_DEFAULT, &hInst); - sheetpage->m_hInst = hInst; - sheetpage->m_bIsMountpoint = pThis->m_bIsMountpoint; - sheetpage->m_bIsSymlink = pThis->m_bIsSymlink; - sheetpage->m_bIsDir=pThis->m_bDirSelected; + filesheet->m_hInst = hInst; + filesheet->m_bIsMountpoint = pThis->m_bIsMountpoint; + filesheet->m_bIsSymlink = pThis->m_bIsSymlink; + filesheet->m_bIsDir = pThis->m_bDirSelected; psp.dwSize = sizeof (psp); psp.dwFlags = PSP_USEREFPARENT | PSP_USETITLE | PSP_USECALLBACK | PSP_USETITLE; psp.hInstance = hInst; @@ -972,7 +974,7 @@ STDMETHODIMP CShellExt::XPropertySheetExt::AddPages(LPFNADDPROPSHEETPAGE lpfnAdd psp.pszIcon = NULL; psp.pszTitle = _T("AFS"); psp.pfnDlgProc = (DLGPROC) PageProc; - psp.lParam = (LPARAM) sheetpage; + psp.lParam = (LPARAM) filesheet; psp.pfnCallback = PropPageCallbackProc; psp.pcRefParent = (UINT*) &nPSRefCount; @@ -980,75 +982,31 @@ STDMETHODIMP CShellExt::XPropertySheetExt::AddPages(LPFNADDPROPSHEETPAGE lpfnAdd if (hPage != NULL) { if (!lpfnAddPage (hPage, lParam)) { - delete sheetpage; + delete filesheet; DestroyPropertySheetPage (hPage); } } - } - - // add the property page for Volume Data - PROPSHEETPAGE psp; - SecureZeroMemory(&psp, sizeof(PROPSHEETPAGE)); - HPROPSHEETPAGE hPage; - CPropVolume *sheetpage = NULL; - - sheetpage = new CPropVolume(pThis->m_astrFileNames); - - if (sheetpage == NULL) - return E_OUTOFMEMORY; - - HINSTANCE hInst = 0; - TaLocale_GetResource(RT_DIALOG, MAKEINTRESOURCE(IDD_PROPPAGE_VOLUME), LANG_USER_DEFAULT, &hInst); - sheetpage->m_hInst = hInst; - sheetpage->m_bIsMountpoint = pThis->m_bIsMountpoint; - sheetpage->m_bIsSymlink = pThis->m_bIsSymlink; - sheetpage->m_bIsDir=pThis->m_bDirSelected; - psp.dwSize = sizeof (psp); - psp.dwFlags = PSP_USEREFPARENT | PSP_USETITLE | PSP_USECALLBACK | PSP_USETITLE; - psp.hInstance = hInst; - psp.pszTemplate = MAKEINTRESOURCE(IDD_PROPPAGE_VOLUME); - psp.pszIcon = NULL; - psp.pszTitle = _T("AFS Volume"); - psp.pfnDlgProc = (DLGPROC) PageProc; - psp.lParam = (LPARAM) sheetpage; - psp.pfnCallback = PropPageCallbackProc; - psp.pcRefParent = (UINT*) &nPSRefCount; - - hPage = CreatePropertySheetPage (&psp); - - if (hPage != NULL) { - if (!lpfnAddPage (hPage, lParam)) { - delete sheetpage; - DestroyPropertySheetPage (hPage); - } - } - if(pThis->m_bDirSelected) { - // add the property page for ACLs - PROPSHEETPAGE psp; + // add the property page for Volume Data SecureZeroMemory(&psp, sizeof(PROPSHEETPAGE)); - HPROPSHEETPAGE hPage; - CPropACL *sheetpage = NULL; - - sheetpage = new CPropACL(pThis->m_astrFileNames); - - if (sheetpage == NULL) + volsheet = new CPropVolume(pThis->m_astrFileNames); + if (volsheet == NULL) return E_OUTOFMEMORY; - HINSTANCE hInst = 0; - TaLocale_GetResource(RT_DIALOG, MAKEINTRESOURCE(IDD_PROPPAGE_ACL), LANG_USER_DEFAULT, &hInst); - sheetpage->m_hInst = hInst; - sheetpage->m_bIsMountpoint = pThis->m_bIsMountpoint; - sheetpage->m_bIsSymlink = pThis->m_bIsSymlink; - sheetpage->m_bIsDir=pThis->m_bDirSelected; + hInst = 0; + TaLocale_GetResource(RT_DIALOG, MAKEINTRESOURCE(IDD_PROPPAGE_VOLUME), LANG_USER_DEFAULT, &hInst); + volsheet->m_hInst = hInst; + volsheet->m_bIsMountpoint = pThis->m_bIsMountpoint; + volsheet->m_bIsSymlink = pThis->m_bIsSymlink; + volsheet->m_bIsDir = pThis->m_bDirSelected; psp.dwSize = sizeof (psp); psp.dwFlags = PSP_USEREFPARENT | PSP_USETITLE | PSP_USECALLBACK | PSP_USETITLE; psp.hInstance = hInst; - psp.pszTemplate = MAKEINTRESOURCE(IDD_PROPPAGE_ACL); + psp.pszTemplate = MAKEINTRESOURCE(IDD_PROPPAGE_VOLUME); psp.pszIcon = NULL; - psp.pszTitle = _T("AFS ACL"); + psp.pszTitle = _T("AFS Volume"); psp.pfnDlgProc = (DLGPROC) PageProc; - psp.lParam = (LPARAM) sheetpage; + psp.lParam = (LPARAM) volsheet; psp.pfnCallback = PropPageCallbackProc; psp.pcRefParent = (UINT*) &nPSRefCount; @@ -1056,10 +1014,45 @@ STDMETHODIMP CShellExt::XPropertySheetExt::AddPages(LPFNADDPROPSHEETPAGE lpfnAdd if (hPage != NULL) { if (!lpfnAddPage (hPage, lParam)) { - delete sheetpage; + delete volsheet; DestroyPropertySheetPage (hPage); } } + + if(pThis->m_bDirSelected) { + // add the property page for ACLs + SecureZeroMemory(&psp, sizeof(PROPSHEETPAGE)); + + aclsheet = new CPropACL(pThis->m_astrFileNames); + if (aclsheet == NULL) + return E_OUTOFMEMORY; + + hInst = 0; + TaLocale_GetResource(RT_DIALOG, MAKEINTRESOURCE(IDD_PROPPAGE_ACL), LANG_USER_DEFAULT, &hInst); + aclsheet->m_hInst = hInst; + aclsheet->m_bIsMountpoint = pThis->m_bIsMountpoint; + aclsheet->m_bIsSymlink = pThis->m_bIsSymlink; + aclsheet->m_bIsDir = pThis->m_bDirSelected; + psp.dwSize = sizeof (psp); + psp.dwFlags = PSP_USEREFPARENT | PSP_USETITLE | PSP_USECALLBACK | PSP_USETITLE; + psp.hInstance = hInst; + psp.pszTemplate = MAKEINTRESOURCE(IDD_PROPPAGE_ACL); + psp.pszIcon = NULL; + psp.pszTitle = _T("AFS ACL"); + psp.pfnDlgProc = (DLGPROC) PageProc; + psp.lParam = (LPARAM) aclsheet; + psp.pfnCallback = PropPageCallbackProc; + psp.pcRefParent = (UINT*) &nPSRefCount; + + hPage = CreatePropertySheetPage (&psp); + + if (hPage != NULL) { + if (!lpfnAddPage (hPage, lParam)) { + delete aclsheet; + DestroyPropertySheetPage (hPage); + } + } + } } return S_OK; -- 2.39.5