Windows: ShellExt Add Prop Page only if AFS
[openafs.git] / src / WINNT / client_exp / shell_ext.cpp
index 2f916f8..d21aca4 100644 (file)
@@ -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;