231 lines
6.4 KiB
C++
231 lines
6.4 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (C) 1998-1999 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
enabldlg.cpp
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Implementation of the provider status dialog box.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "provprop.h"
|
||
|
#include "smcfgmsg.h"
|
||
|
#include "smlogcfg.h"
|
||
|
#include "enabldlg.h"
|
||
|
#include "smcfghlp.h"
|
||
|
#include "smtprov.h"
|
||
|
#ifdef _DEBUG
|
||
|
#define new DEBUG_NEW
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
static ULONG
|
||
|
s_aulHelpIds[] =
|
||
|
{
|
||
|
IDC_PACT_CHECK_SHOW_ENABLED, IDH_PACT_CHECK_SHOW_ENABLED,
|
||
|
IDC_PACT_PROVIDERS_LIST, IDH_PACT_PROVIDERS_LIST,
|
||
|
0,0
|
||
|
};
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CActiveProviderDlg dialog
|
||
|
|
||
|
|
||
|
CActiveProviderDlg::CActiveProviderDlg(CWnd* pParent /*=NULL*/)
|
||
|
: CDialog(CActiveProviderDlg::IDD, pParent),
|
||
|
m_pProvidersPage( NULL ),
|
||
|
m_iListViewWidth(0)
|
||
|
{
|
||
|
//{{AFX_DATA_INIT(CActiveProviderDlg)
|
||
|
|
||
|
//}}AFX_DATA_INIT
|
||
|
}
|
||
|
|
||
|
|
||
|
void CActiveProviderDlg::DoDataExchange(CDataExchange* pDX)
|
||
|
{
|
||
|
CDialog::DoDataExchange(pDX);
|
||
|
//{{AFX_DATA_MAP(CActiveProviderDlg)
|
||
|
DDX_Control(pDX, IDC_PACT_PROVIDERS_LIST, m_Providers);
|
||
|
DDX_Check(pDX, IDC_PACT_CHECK_SHOW_ENABLED, m_bShowEnabledOnly);
|
||
|
//}}AFX_DATA_MAP
|
||
|
}
|
||
|
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CActiveProviderDlg, CDialog)
|
||
|
//{{AFX_MSG_MAP(CActiveProviderDlg)
|
||
|
ON_BN_CLICKED(IDC_PACT_CHECK_SHOW_ENABLED, OnCheckShowEnabled)
|
||
|
ON_WM_HELPINFO()
|
||
|
ON_WM_CONTEXTMENU()
|
||
|
//}}AFX_MSG_MAP
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CActiveProviderDlg message handlers
|
||
|
|
||
|
BOOL
|
||
|
CActiveProviderDlg::OnInitDialog()
|
||
|
{
|
||
|
RECT rect;
|
||
|
|
||
|
m_bShowEnabledOnly = FALSE;
|
||
|
|
||
|
CDialog::OnInitDialog(); // Calls UpdateDate ( FALSE ) to init the checkbox value.
|
||
|
|
||
|
// Get the width of the list view control, then delete the default column.
|
||
|
m_Providers.GetClientRect(&rect);
|
||
|
m_iListViewWidth = rect.right;
|
||
|
|
||
|
UpdateList();
|
||
|
|
||
|
return TRUE; // return TRUE unless you set the focus to a control
|
||
|
// EXCEPTION: OCX Property Pages should return FALSE
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CActiveProviderDlg::OnCheckShowEnabled()
|
||
|
{
|
||
|
|
||
|
// ::SendMessage(m_Providers.m_hWnd, WM_SETREDRAW, TRUE, 0);
|
||
|
UpdateData(TRUE);
|
||
|
UpdateList();
|
||
|
|
||
|
}
|
||
|
|
||
|
BOOL
|
||
|
CActiveProviderDlg::OnHelpInfo(HELPINFO* pHelpInfo)
|
||
|
{
|
||
|
ASSERT( NULL != m_pProvidersPage );
|
||
|
|
||
|
if ( pHelpInfo->iCtrlId >= IDC_PACT_FIRST_HELP_CTRL_ID ) {
|
||
|
InvokeWinHelp(WM_HELP, NULL, (LPARAM)pHelpInfo, m_pProvidersPage->GetContextHelpFilePath(), s_aulHelpIds);
|
||
|
}
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CActiveProviderDlg::OnContextMenu(CWnd* pWnd, CPoint /* point */)
|
||
|
{
|
||
|
ASSERT( NULL != m_pProvidersPage );
|
||
|
|
||
|
InvokeWinHelp(WM_CONTEXTMENU, (WPARAM)( pWnd->m_hWnd), NULL, m_pProvidersPage->GetContextHelpFilePath(), s_aulHelpIds);
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Helper functions
|
||
|
void CActiveProviderDlg::UpdateList()
|
||
|
{
|
||
|
LVCOLUMN lvCol;
|
||
|
LVITEM lvItem;
|
||
|
INT iGenIndex;
|
||
|
INT iAllIndex;
|
||
|
INT iEnabledIndex;
|
||
|
INT iCount;
|
||
|
CString arrstrHeader[2];
|
||
|
CString strEnabled;
|
||
|
INT iColWidth[2];
|
||
|
CString strItemText;
|
||
|
|
||
|
ResourceStateManager rsm;
|
||
|
|
||
|
(arrstrHeader[0]).LoadString( IDS_PROV_NAME );
|
||
|
(arrstrHeader[1]).LoadString( IDS_PROV_STATUS );
|
||
|
strEnabled.LoadString(IDS_PROV_ENABLED);
|
||
|
|
||
|
m_Providers.DeleteAllItems();
|
||
|
m_Providers.DeleteColumn(1); // Note - Column 1 might not exist.
|
||
|
m_Providers.DeleteColumn(0);
|
||
|
|
||
|
lvCol.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH | LVCF_FMT;
|
||
|
lvCol.fmt = LVCFMT_LEFT;
|
||
|
|
||
|
if ( m_bShowEnabledOnly ) {
|
||
|
iColWidth[0] = m_iListViewWidth;
|
||
|
iColWidth[1] = 0;
|
||
|
} else {
|
||
|
iColWidth[0] = (m_iListViewWidth * 75) / 100;
|
||
|
iColWidth[1] = (m_iListViewWidth * 25) / 100;
|
||
|
}
|
||
|
|
||
|
if ( m_bShowEnabledOnly ) {
|
||
|
lvCol.iSubItem = 0;
|
||
|
lvCol.pszText = arrstrHeader[0].GetBufferSetLength( arrstrHeader[0].GetLength());
|
||
|
lvCol.cx = iColWidth[0];
|
||
|
m_Providers.InsertColumn(0,&lvCol);
|
||
|
} else {
|
||
|
INT iColIndex;
|
||
|
for (iColIndex = 0 ; iColIndex < 2 ;iColIndex++ ){
|
||
|
lvCol.iSubItem = 0;
|
||
|
lvCol.pszText = arrstrHeader[iColIndex].GetBufferSetLength( arrstrHeader[iColIndex].GetLength());
|
||
|
lvCol.cx = iColWidth[iColIndex];
|
||
|
m_Providers.InsertColumn(iColIndex,&lvCol);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
iEnabledIndex = 0;
|
||
|
iAllIndex = 0;
|
||
|
// Add Kernel provider separately.
|
||
|
if(m_bShowEnabledOnly) {
|
||
|
if ( m_pProvidersPage->GetKernelProviderEnabled() ) {
|
||
|
m_Providers.InsertItem(iEnabledIndex,(LPCTSTR)(m_pProvidersPage->GetKernelProviderDescription()));
|
||
|
}
|
||
|
} else {
|
||
|
lvItem.mask = LVIF_TEXT;
|
||
|
lvItem.iItem = 0;
|
||
|
lvItem.iSubItem = 0;
|
||
|
|
||
|
m_Providers.InsertItem(iAllIndex++,(LPCTSTR)(m_pProvidersPage->GetKernelProviderDescription()));
|
||
|
|
||
|
// Show status
|
||
|
if ( m_pProvidersPage->GetKernelProviderEnabled() ) {
|
||
|
lvItem.pszText = strEnabled.GetBufferSetLength( strEnabled.GetLength() );
|
||
|
lvItem.iSubItem = 1;
|
||
|
m_Providers.SetItem(&lvItem);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Add general providers
|
||
|
m_pProvidersPage->GetGenProviderCount( iCount );
|
||
|
for ( iGenIndex = 0; iGenIndex < iCount ; iGenIndex++ ){
|
||
|
|
||
|
lvItem.mask = LVIF_TEXT;
|
||
|
lvItem.iItem = iAllIndex;
|
||
|
lvItem.iSubItem = 0;
|
||
|
|
||
|
if ( m_pProvidersPage->IsActiveProvider(iGenIndex) ) {
|
||
|
CString strProviderName;
|
||
|
|
||
|
if(m_bShowEnabledOnly){
|
||
|
if ( m_pProvidersPage->IsEnabledProvider(iGenIndex) ){
|
||
|
m_pProvidersPage->GetProviderDescription ( iGenIndex, strProviderName );
|
||
|
m_Providers.InsertItem (iEnabledIndex++,strProviderName );
|
||
|
}
|
||
|
} else {
|
||
|
m_pProvidersPage->GetProviderDescription ( iGenIndex, strProviderName );
|
||
|
m_Providers.InsertItem (iAllIndex,strProviderName );
|
||
|
|
||
|
// Show status
|
||
|
if ( m_pProvidersPage->IsEnabledProvider(iGenIndex) ){
|
||
|
lvItem.pszText = strEnabled.GetBufferSetLength( strEnabled.GetLength() );
|
||
|
lvItem.iSubItem = 1;
|
||
|
m_Providers.SetItem(&lvItem);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CActiveProviderDlg::SetProvidersPage( CProvidersProperty* pPage )
|
||
|
{
|
||
|
// The providers page is not always the parent, so store a separate pointer
|
||
|
m_pProvidersPage = pPage;
|
||
|
}
|