home *** CD-ROM | disk | FTP | other *** search
- /*
- - X P D I A L O G . C
- -
- * Purpose:
- * Logon UI code for use by the MAPI Sample Transport Provider.
- *
- * Copyright 1992-1995 Microsoft Corporation. All Rights Reserved.
- */
-
- #include "xppch.h"
- #include "xpresrc.h"
- #include <stdlib.h>
- #include <mapiutil.h>
-
- #ifdef DEBUG_DLGITEMS
- #ifndef DEBUG
- #define DEBUG
- #endif
- #endif
-
- #define PropIndex(PROP) (PROP_ID(PROP) - BASE_PROVIDER_ID - 1)
-
- /* Generic control structures */
-
- DTBLLABEL dtbllabel =
- {sizeof(DTBLLABEL), 0};
- DTBLPAGE dtblpage =
- {sizeof(DTBLPAGE), 0, 0, 0};
- TCHAR szNoFilter[] = TEXT("*");
- TCHAR szDigitFilter[] = TEXT("[0-9]");
-
- /* Display table control structures for the General property sheet. */
-
- DTBLEDIT editWgapFname =
- {sizeof(DTBLEDIT), fMapiUnicode, MAX_PATH,
- PR_SAMPLE_FILENAME};
- DTBLEDIT editWgapDir =
- {sizeof(DTBLEDIT), fMapiUnicode, MAX_PATH,
- PR_SAMPLE_DIRECTORY};
- DTBLCHECKBOX chkLogEvents =
- {sizeof(DTBLCHECKBOX), fMapiUnicode,
- PR_TEMP_LOG_EVENTS};
- DTBLCHECKBOX chkPeer =
- {sizeof(DTBLCHECKBOX), fMapiUnicode,
- PR_TEMP_PEER_TO_PEER};
- DTBLCHECKBOX chkLogonUI =
- {sizeof(DTBLCHECKBOX), fMapiUnicode,
- PR_TEMP_UI_ALWAYS};
- DTBLCHECKBOX chkSaveDialog =
- {sizeof(DTBLCHECKBOX), fMapiUnicode,
- PR_TEMP_SAVE_DATA};
-
- DTCTL rgdtctlGeneral[] =
- {
- {DTCT_PAGE, 0, NULL, 0, NULL, 0, &dtblpage},
- {DTCT_CHECKBOX, DT_EDITABLE, NULL, 0, NULL, IDC_LOG_EVENTS, &chkLogEvents},
- {DTCT_CHECKBOX, DT_EDITABLE, NULL, 0, NULL, IDC_PEER, &chkPeer},
- {DTCT_CHECKBOX, DT_EDITABLE, NULL, 0, NULL, IDC_LOGON_UI, &chkLogonUI},
- {DTCT_CHECKBOX, DT_EDITABLE, NULL, 0, NULL, IDC_SAVE_DIALOG, &chkSaveDialog},
- {DTCT_LABEL, 0, NULL, 0, NULL, IDT_WGAP_FNAME, &dtbllabel},
- {DTCT_EDIT, DT_EDITABLE, NULL, 0, szNoFilter, IDE_WGAP_FNAME, &editWgapFname},
- {DTCT_LABEL, 0, NULL, 0, NULL, IDT_WGAP_DIR, &dtbllabel},
- {DTCT_EDIT, DT_EDITABLE, NULL, 0, szNoFilter, IDE_WGAP_DIR, &editWgapDir}
- };
-
- /* Display table control structures for the Peer to Peer property sheet. */
-
- DTBLEDIT editDisplay =
- {sizeof(DTBLEDIT), fMapiUnicode, MAX_TEXTFIELD,
- PR_SAMPLE_DISPLAY_NAME};
- DTBLEDIT editEmailType =
- {sizeof(DTBLEDIT), fMapiUnicode, 32,
- PR_SAMPLE_EMAIL_ADDR_TYPE};
- DTBLEDIT editEmailAddress =
- {sizeof(DTBLEDIT), fMapiUnicode, MAX_TEXTFIELD,
- PR_SAMPLE_EMAIL_ADDRESS};
- DTBLEDIT editInboundDir =
- {sizeof(DTBLEDIT), fMapiUnicode, MAX_PATH,
- PR_SAMPLE_INBOUND_DIR};
- DTBLEDIT editOutboundDir =
- {sizeof(DTBLEDIT), fMapiUnicode, MAX_PATH,
- PR_SAMPLE_OUTBOUND_DIR};
-
- DTCTL rgdtctlPeer[] =
- {
- {DTCT_PAGE, 0, NULL, 0, NULL, 0, &dtblpage},
- {DTCT_LABEL, 0, NULL, 0, NULL, IDT_DISPLAY, &dtbllabel},
- {DTCT_EDIT, DT_EDITABLE, NULL, 0, szNoFilter, IDE_DISPLAY, &editDisplay},
- {DTCT_LABEL, 0, NULL, 0, NULL, IDT_EMAIL_TYPE, &dtbllabel},
- {DTCT_EDIT, DT_EDITABLE, NULL, 0, szNoFilter, IDE_EMAIL_TYPE, &editEmailType},
- {DTCT_LABEL, 0, NULL, 0, NULL, IDT_EMAIL_ADDR, &dtbllabel},
- {DTCT_EDIT, DT_EDITABLE, NULL, 0, szNoFilter, IDE_EMAIL_ADDR, &editEmailAddress},
- {DTCT_LABEL, 0, NULL, 0, NULL, IDT_IN_DIR, &dtbllabel},
- {DTCT_EDIT, DT_EDITABLE, NULL, 0, szNoFilter, IDE_IN_DIR, &editInboundDir},
- {DTCT_LABEL, 0, NULL, 0, NULL, IDT_OUT_DIR, &dtbllabel},
- {DTCT_EDIT, DT_EDITABLE, NULL, 0, szNoFilter, IDE_OUT_DIR, &editOutboundDir}
- };
-
- /* Display table control structures for the Logging property sheet. */
-
- DTBLEDIT editLogFile =
- {sizeof(DTBLEDIT), fMapiUnicode, MAX_PATH,
- PR_SAMPLE_LOGFILE};
- DTBLEDIT editLogHigh =
- {sizeof(DTBLEDIT), fMapiUnicode, 11,
- PR_TEMP_LOGHIGHWATER};
- DTBLEDIT editLogLow =
- {sizeof(DTBLEDIT), fMapiUnicode, 11,
- PR_TEMP_LOGLOWWATER};
- DTCTL rgdtctlLogging[] =
- {
- {DTCT_PAGE, 0, NULL, 0, NULL, 0, &dtblpage},
- {DTCT_LABEL, 0, NULL, 0, NULL, IDT_LOG_NAME, &dtbllabel},
- {DTCT_EDIT, DT_EDITABLE, NULL, 0, szNoFilter, IDE_LOG_NAME, &editLogFile},
- {DTCT_LABEL, 0, NULL, 0, NULL, IDT_LOG_HIGH, &dtbllabel},
- {DTCT_EDIT, DT_EDITABLE, NULL, 0, szDigitFilter, IDE_LOG_HIGH, &editLogHigh},
- {DTCT_LABEL, 0, NULL, 0, NULL, IDT_LOG_LOW, &dtbllabel},
- {DTCT_EDIT, DT_EDITABLE, NULL, 0, szDigitFilter, IDE_LOG_LOW, &editLogLow}
- };
-
- /* Display table pages */
-
- DTPAGE rgdtpage[] =
- {
- {
- sizeof(rgdtctlGeneral) / sizeof(DTCTL),
- (LPTSTR) MAKEINTRESOURCE(GeneralPage),
- "",
- rgdtctlGeneral
- },
- {
- sizeof(rgdtctlPeer) / sizeof(DTCTL),
- (LPTSTR) MAKEINTRESOURCE(PeerPage),
- "",
- rgdtctlPeer
- },
- {
- sizeof(rgdtctlLogging) / sizeof(DTCTL),
- (LPTSTR) MAKEINTRESOURCE(LoggingPage),
- "",
- rgdtctlLogging
- }
- };
-
- #ifdef DEBUG_DLGITEMS
- static void
- DLGDump(LPXPDLG lpXPDialog);
- #endif
-
-
- /*
- - ScDoLogonDlg
- -
- * Purpose:
- * Called by the TransportLogon code to present logon UI to the user.
- *
- * Parameters:
- * lpXPDialog Structure through which we communicate
- *
- * Returns:
- * 0 Dialog came up, pLogonStruct->lppPropArray
- * contains a PropValueArray if OK, NULL if CANCEL
- *
- * (Failure) Some error occurred. lppPropArray will have
- * either the original array or NULL.
- *
- * Operation:
- * Gets the necessary information from Windows and activates the logon
- * dialog box.
- */
-
- SCODE
- ScDoLogonDlg(LPXPDLG lpXPDialog)
- {
- SCODE sc = S_OK;
- HRESULT hr;
- LPMAPITABLE ptable = NULL;
- LPPROPDATA pTempProps = NULL;
- ULONG flT = 0L;
- LPSPropValue rgprop;
- LPSPropValue pprop;
- LPSPropTagArray ptags;
- ULONG cprop;
- TCHAR szDialogTitle[128];
- TCHAR szLogHigh[12];
- TCHAR szLogLow[12];
- UINT i;
-
- /* Take ownership of the property value array, so calling code
- will not leak memory. */
-
- rgprop = *(lpXPDialog->lppPropArray);
- *(lpXPDialog->lppPropArray) = NULL;
- ptags = lpXPDialog->lpPTArray;
-
- /* Retrieve the dialog title string */
-
- if (!LoadString(lpXPDialog->hInst, IDS_CONFIG_TITLE,
- szDialogTitle, sizeof(szDialogTitle)))
- {
- sc = MAPI_E_NOT_ENOUGH_MEMORY;
- DebugTrace("LoadString failed in ScDoLogonDlg.\n");
- goto ret;
- }
-
- /* Create the configuration data interface.
- First, split the PR_SAMPLE_FLAGS property into four individual
- Boolean properties. */
-
- pprop = rgprop + (MAX_LOGON_PROPERTIES - TEMP_LOGON_PROPERTIES);
-
- if (rgprop[PropIndex(PR_SAMPLE_FLAGS)].ulPropTag == PR_SAMPLE_FLAGS)
- flT = rgprop[PropIndex(PR_SAMPLE_FLAGS)].Value.ul;
- else
- {
- /* The Peer to Peer and Save Data flags default to TRUE */
- rgprop[PropIndex(PR_SAMPLE_FLAGS)].ulPropTag = PR_SAMPLE_FLAGS;
- flT = PR_SAMPLE_FLAG_PEER_TO_PEER | PR_SAMPLE_FLAG_SAVE_DATA;
- rgprop[PropIndex(PR_SAMPLE_FLAGS)].Value.ul = flT;
- }
-
- pprop[0].ulPropTag = PR_TEMP_PEER_TO_PEER;
- pprop[0].Value.b = !!(flT & PR_SAMPLE_FLAG_PEER_TO_PEER);
- pprop[1].ulPropTag = PR_TEMP_UI_ALWAYS;
- pprop[1].Value.b = !!(flT & PR_SAMPLE_FLAG_UI_ALWAYS);
- pprop[2].ulPropTag = PR_TEMP_LOG_EVENTS;
- pprop[2].Value.b = !!(flT & PR_SAMPLE_FLAG_LOG_EVENTS);
- pprop[3].ulPropTag = PR_TEMP_SAVE_DATA;
- pprop[3].Value.b = !!(flT & PR_SAMPLE_FLAG_SAVE_DATA);
-
- /* Next, make strings out of the two numeric logging parameters */
-
- if (rgprop[PropIndex(PR_SAMPLE_LOGHIGHWATER)].ulPropTag == PR_SAMPLE_LOGHIGHWATER)
- wsprintf(szLogHigh, "%ld",
- rgprop[PropIndex(PR_SAMPLE_LOGHIGHWATER)].Value.l);
- else
- szLogHigh[0] = '\0';
-
- pprop[4].ulPropTag = PR_TEMP_LOGHIGHWATER;
- pprop[4].Value.LPSZ = szLogHigh;
-
- if (rgprop[PropIndex(PR_SAMPLE_LOGLOWWATER)].ulPropTag == PR_SAMPLE_LOGLOWWATER)
- wsprintf(szLogLow, "%ld",
- rgprop[PropIndex(PR_SAMPLE_LOGLOWWATER)].Value.l);
- else
- szLogLow[0] = '\0';
-
- pprop[5].ulPropTag = PR_TEMP_LOGLOWWATER;
- pprop[5].Value.LPSZ = szLogLow;
-
- /* Now make a temporary property interface and feed it the data. */
-
- sc = CreateIProp((LPIID) &IID_IMAPIPropData,
- lpXPDialog->AllocateBuffer,
- lpXPDialog->AllocateMore,
- lpXPDialog->FreeBuffer,
- lpXPDialog->lpMalloc,
- &pTempProps);
-
- if (FAILED(sc))
- {
- DebugTrace("CreateIProp failed in ScDoLogonDlg.\n");
- goto ret;
- }
-
- hr = pTempProps->lpVtbl->SetProps(pTempProps, MAX_LOGON_PROPERTIES, rgprop, NULL);
-
- if (HR_FAILED(hr))
- {
- sc = GetScode(hr);
- DebugTrace("SetProps failed in ScDoLogonDlg.\n");
- goto ret;
- }
-
- /* If the UI_READONLY flag is set, then we are being called from
- the SettingDialog() method in Read Only mode. Disable all of
- the controls on the three property sheets, else Enable them. */
-
- if (lpXPDialog->ulFlags & UI_READONLY)
- {
- /* Disable controls on the General PropSheet */
- rgdtpage[0].lpctl[1].ulCtlFlags &= ~DT_EDITABLE;
- rgdtpage[0].lpctl[2].ulCtlFlags &= ~DT_EDITABLE;
- rgdtpage[0].lpctl[3].ulCtlFlags &= ~DT_EDITABLE;
- rgdtpage[0].lpctl[4].ulCtlFlags &= ~DT_EDITABLE;
- rgdtpage[0].lpctl[6].ulCtlFlags &= ~DT_EDITABLE;
- rgdtpage[0].lpctl[8].ulCtlFlags &= ~DT_EDITABLE;
-
- /* Disable controls on the Peer-To-Peer PropSheet */
- rgdtpage[1].lpctl[2].ulCtlFlags &= ~DT_EDITABLE;
- rgdtpage[1].lpctl[4].ulCtlFlags &= ~DT_EDITABLE;
- rgdtpage[1].lpctl[6].ulCtlFlags &= ~DT_EDITABLE;
- rgdtpage[1].lpctl[8].ulCtlFlags &= ~DT_EDITABLE;
- rgdtpage[1].lpctl[10].ulCtlFlags &= ~DT_EDITABLE;
-
- /* Disable controls on the Logging PropSheet */
- rgdtpage[2].lpctl[2].ulCtlFlags &= ~DT_EDITABLE;
- rgdtpage[2].lpctl[4].ulCtlFlags &= ~DT_EDITABLE;
- rgdtpage[2].lpctl[6].ulCtlFlags &= ~DT_EDITABLE;
- }
- else
- {
- /* Enable controls on the General PropSheet */
- rgdtpage[0].lpctl[1].ulCtlFlags |= DT_EDITABLE;
- rgdtpage[0].lpctl[2].ulCtlFlags |= DT_EDITABLE;
- rgdtpage[0].lpctl[3].ulCtlFlags |= DT_EDITABLE;
- rgdtpage[0].lpctl[4].ulCtlFlags |= DT_EDITABLE;
- rgdtpage[0].lpctl[6].ulCtlFlags |= DT_EDITABLE;
- rgdtpage[0].lpctl[8].ulCtlFlags |= DT_EDITABLE;
-
- /* Enable controls on the Peer-To-Peer PropSheet */
- rgdtpage[1].lpctl[2].ulCtlFlags |= DT_EDITABLE;
- rgdtpage[1].lpctl[4].ulCtlFlags |= DT_EDITABLE;
- rgdtpage[1].lpctl[6].ulCtlFlags |= DT_EDITABLE;
- rgdtpage[1].lpctl[8].ulCtlFlags |= DT_EDITABLE;
- rgdtpage[1].lpctl[10].ulCtlFlags |= DT_EDITABLE;
-
- /* Enable controls on the Logging PropSheet */
- rgdtpage[2].lpctl[2].ulCtlFlags |= DT_EDITABLE;
- rgdtpage[2].lpctl[4].ulCtlFlags |= DT_EDITABLE;
- rgdtpage[2].lpctl[6].ulCtlFlags |= DT_EDITABLE;
- }
-
- /* Check if we are being called at Logon time or from a call to
- SettingsDialog(). If from SettingsDialog() then disable the
- IDE_EMAIL_TYPE edit control reguardless of ulFlags setting. */
-
- if (!lpXPDialog->fLogon)
- rgdtpage[1].lpctl[4].ulCtlFlags &= ~DT_EDITABLE;
-
- /* Create the display table for the logon dialog. It is based on dialog
- resources plus the static information at the head of this module. */
-
- hr = BuildDisplayTable(
- lpXPDialog->AllocateBuffer,
- lpXPDialog->AllocateMore,
- lpXPDialog->FreeBuffer,
- lpXPDialog->lpMalloc,
- lpXPDialog->hInst,
- sizeof(rgdtpage) / sizeof(DTPAGE),
- rgdtpage,
- 0,
- &ptable,
- NULL);
-
- if (HR_FAILED(hr))
- {
- sc = GetScode(hr);
- DebugTrace("BuildDisplayTable failed in ScDoLogonDlg.\n");
- goto ret;
- }
-
- /* Run the dialog */
-
- hr = lpXPDialog->lpMAPISup->lpVtbl->DoConfigPropsheet(lpXPDialog->lpMAPISup,
- (ULONG) lpXPDialog->hwnd,
- 0,
- szDialogTitle,
- ptable,
- (LPMAPIPROP) pTempProps,
- 1);
-
- if (HR_FAILED(hr))
- {
- sc = GetScode(hr);
- DebugTrace("DoConfigPropsheet failed in ScDoLogonDlg.\n");
- goto ret;
- }
-
- /* Retrieve the altered data */
-
- (*(lpXPDialog->FreeBuffer)) (rgprop);
- rgprop = NULL;
-
- hr = pTempProps->lpVtbl->GetProps(pTempProps, ptags, 0, /* ansi */
- &cprop, &rgprop);
-
- if (HR_FAILED(hr))
- {
- sc = GetScode(hr);
- DebugTrace("GetProps failed in ScDoLogonDlg.\n");
- goto ret;
- }
-
- Assert(cprop == MAX_LOGON_PROPERTIES);
-
- /* Supply default values for any unfilled fields.
- Also ensure that the directory name fields end in a slash. */
-
- for (i = 0; i < MAX_LOGON_PROPERTIES - TEMP_LOGON_PROPERTIES; ++i)
- {
- ULONG tagT = rgprop[i].ulPropTag;
- UINT cch;
- LPTSTR lpszT;
-
- if (tagT != ptags->aulPropTag[i])
- {
- /* This property did not make it. Integer properties default
- to 0, and string properties default to empty. */
-
- tagT = ptags->aulPropTag[i];
-
- if (PROP_TYPE(tagT) == PT_LONG)
- {
- rgprop[i].Value.l = 0;
- rgprop[i].ulPropTag = tagT;
- }
- else if (PROP_TYPE(tagT) == PT_TSTRING)
- {
- if (FAILED((*(lpXPDialog->AllocateMore)) (sizeof(TCHAR),
- rgprop, (LPVOID FAR *) &rgprop[i].Value.LPSZ)))
- {
- rgprop[i].ulPropTag = PROP_TAG(PT_ERROR, PROP_ID(tagT));
- rgprop[i].Value.err = MAPI_E_NOT_ENOUGH_MEMORY;
- }
- else
- {
- rgprop[i].Value.LPSZ[0] = '\0';
- rgprop[i].ulPropTag = tagT;
- }
- }
- }
- else if (tagT == PR_SAMPLE_INBOUND_DIR ||
- tagT == PR_SAMPLE_OUTBOUND_DIR ||
- tagT == PR_SAMPLE_DIRECTORY)
- {
- cch = lstrlen(rgprop[i].Value.LPSZ);
-
- if (cch && rgprop[i].Value.LPSZ[cch - 1] != '\\')
- {
- if (FAILED((*(lpXPDialog->AllocateMore)) (
- (cch + 2) * sizeof(TCHAR), rgprop, (LPVOID FAR *) &lpszT)))
- {
- rgprop[i].ulPropTag = PROP_TAG(PT_ERROR, PROP_ID(tagT));
- rgprop[i].Value.err = MAPI_E_NOT_ENOUGH_MEMORY;
- }
- else
- {
- lstrcpy(lpszT, rgprop[i].Value.LPSZ);
- lpszT[cch] = '\\';
- lpszT[cch + 1] = '\0';
- rgprop[i].Value.LPSZ = lpszT;
- }
- }
- }
- }
-
- /* Reassemble the PR_SAMPLE_FLAGS property */
-
- pprop = rgprop + (MAX_LOGON_PROPERTIES - TEMP_LOGON_PROPERTIES);
- flT = 0L;
-
- if (pprop[0].ulPropTag == PR_TEMP_PEER_TO_PEER && pprop[0].Value.b)
- flT |= PR_SAMPLE_FLAG_PEER_TO_PEER;
- if (pprop[1].ulPropTag == PR_TEMP_UI_ALWAYS && pprop[1].Value.b)
- flT |= PR_SAMPLE_FLAG_UI_ALWAYS;
- if (pprop[2].ulPropTag == PR_TEMP_LOG_EVENTS && pprop[2].Value.b)
- flT |= PR_SAMPLE_FLAG_LOG_EVENTS;
- if (pprop[3].ulPropTag == PR_TEMP_SAVE_DATA && pprop[3].Value.b)
- flT |= PR_SAMPLE_FLAG_SAVE_DATA;
-
- rgprop[PropIndex(PR_SAMPLE_FLAGS)].ulPropTag = PR_SAMPLE_FLAGS;
- rgprop[PropIndex(PR_SAMPLE_FLAGS)].Value.ul = flT;
-
- /* Reassemble the high and low water marks for logging */
-
- if (rgprop[PropIndex(PR_TEMP_LOGHIGHWATER)].ulPropTag == PR_TEMP_LOGHIGHWATER)
- rgprop[PropIndex(PR_SAMPLE_LOGHIGHWATER)].Value.l =
- atoi(rgprop[PropIndex(PR_TEMP_LOGHIGHWATER)].Value.LPSZ);
-
- if (rgprop[PropIndex(PR_TEMP_LOGLOWWATER)].ulPropTag == PR_TEMP_LOGLOWWATER)
- rgprop[PropIndex(PR_SAMPLE_LOGLOWWATER)].Value.l =
- atoi(rgprop[PropIndex(PR_TEMP_LOGLOWWATER)].Value.LPSZ);
-
- /* Return the new property array */
-
- *(lpXPDialog->lppPropArray) = rgprop;
- rgprop = NULL; /* do not free this in cleanup code */
- sc = S_OK; /* no warnings */
-
- #ifdef DEBUG_DLGITEMS
- DLGDump(lpXPDialog); /* dump debug data. */
- #endif
-
- ret:
- DebugTraceSc(ScDoLogonDialog(), sc);
-
- UlRelease(ptable);
- UlRelease(pTempProps);
-
- lpXPDialog->FreeBuffer(rgprop);
-
- return sc;
- }
-
-
- #ifdef DEBUG_DLGITEMS
-
- /*
- - DLGDump
- -
- * Purpose:
- * Called by ScDoLogonDlg to dump the contents
- * of the logon property array to the debugger.
- *
- * Parameters:
- * lpXPDialog Pointer to logon parameter structure
- *
- * Returns:
- * none.
- *
- * Operation:
- * Walks through the property array inside the logon structure, and
- * dumps its contents through DebugTrace().
- *
- * This function only exists in the debug version.
- */
-
- static void
- DLGDump(LPXPDLG lpXPDialog)
- {
-
- ULONG ulT, flT, ptT, ptT2;
- LPSPropValue lpPropArray;
- LPSPropTagArray lpPTArray;
- SPropValue propT;
- ULONG ulCount;
-
- if (!lpXPDialog)
- {
- DebugTrace("lpXPDialog is NULL");
- goto ret;
- }
-
- DebugTrace("LogonStruct:");
-
- lpPropArray = *(lpXPDialog->lppPropArray);
- lpPTArray = lpXPDialog->lpPTArray;
-
- if (!lpPropArray)
- {
- DebugTrace("NULL\n");
- goto ret;
- }
-
- ulCount = lpPTArray->cValues;
-
- for (ulT = 0; ulT < ulCount; ulT++)
- {
- propT = lpPropArray[ulT];
- ptT = lpPTArray->aulPropTag[ulT];
- ptT2 = propT.ulPropTag;
-
- switch (ptT)
- {
- case PR_SAMPLE_DISPLAY_NAME:
- DebugTrace(" DisplayName: %s", (ptT == ptT2) ? propT.Value.LPSZ : "NULL");
- break;
-
- case PR_SAMPLE_EMAIL_ADDR_TYPE:
- DebugTrace(" EmailAddressType: %s", (ptT == ptT2) ? propT.Value.LPSZ : "NULL");
- break;
-
- case PR_SAMPLE_EMAIL_ADDRESS:
- DebugTrace(" EmailAddress: %s", (ptT == ptT2) ? propT.Value.LPSZ : "NULL");
- break;
-
- case PR_SAMPLE_INBOUND_DIR:
- DebugTrace(" Inbound Directory: %s", (ptT == ptT2) ? propT.Value.LPSZ : "NULL");
- break;
-
- case PR_SAMPLE_OUTBOUND_DIR:
- DebugTrace(" Outbound Directory: %s", (ptT == ptT2) ? propT.Value.LPSZ : "NULL");
- break;
-
- case PR_SAMPLE_FILENAME:
- DebugTrace(" WGApp Filename: %s", (ptT == ptT2) ? propT.Value.LPSZ : "NULL");
- break;
-
- case PR_SAMPLE_DIRECTORY:
- DebugTrace(" WGApp Directory: %s", (ptT == ptT2) ? propT.Value.LPSZ : "NULL");
- break;
-
- case PR_SAMPLE_FLAGS:
-
- flT = (ptT == ptT2) ? propT.Value.ul : 0;
-
- DebugTrace(" Peer-To-Peer: %s", (flT & PR_SAMPLE_FLAG_PEER_TO_PEER) ? "TRUE" : "FALSE");
- DebugTrace(" Always show UI: %s", (flT & PR_SAMPLE_FLAG_UI_ALWAYS) ? "TRUE" : "FALSE");
- DebugTrace(" Log Events: %s", (flT & PR_SAMPLE_FLAG_LOG_EVENTS) ? "TRUE" : "FALSE");
- DebugTrace(" Save Logon Input: %s", (flT & PR_SAMPLE_FLAG_SAVE_DATA) ? "TRUE" : "FALSE");
- break;
-
- case PR_SAMPLE_LOGFILE:
- DebugTrace(" Log File Name: %s", (ptT == ptT2) ? propT.Value.LPSZ : "NULL");
- break;
-
- case PR_SAMPLE_LOGHIGHWATER:
- DebugTrace(" Log File HighWater: %ld", (ptT == ptT2) ? propT.Value.ul : 0);
- break;
-
- case PR_SAMPLE_LOGLOWWATER:
- DebugTrace(" Log File LowWater: %ld", (ptT == ptT2) ? propT.Value.ul : 0);
- break;
-
- default:
- DebugTrace(" Unknown Logon Property: %08X", ptT);
- break;
- }
- }
- ret:
- return;
- }
-
- #endif /* DEBUG_DLGITEMS */
-