259 lines
6.7 KiB
C++
259 lines
6.7 KiB
C++
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
//
|
||
|
// Copyright (C) Microsoft Corporation, 1997 - 1999
|
||
|
//
|
||
|
// File: simprop2.cpp
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
// SimProp2.cpp
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "common.h"
|
||
|
#include "helpids.h"
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#define new DEBUG_NEW
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
///////////////////////////////////////
|
||
|
const TColumnHeaderItem rgzColumnHeader[] =
|
||
|
{
|
||
|
{ IDS_SIM_KERBEROS_PRINCIPAL_NAME, 85 },
|
||
|
{ 0, 0 },
|
||
|
};
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CSimKerberosPropPage property page
|
||
|
|
||
|
// IMPLEMENT_DYNCREATE(CSimKerberosPropPage, CSimPropPage)
|
||
|
|
||
|
CSimKerberosPropPage::CSimKerberosPropPage() : CSimPropPage(CSimKerberosPropPage::IDD)
|
||
|
{
|
||
|
//{{AFX_DATA_INIT(CSimKerberosPropPage)
|
||
|
// NOTE: the ClassWizard will add member initialization here
|
||
|
//}}AFX_DATA_INIT
|
||
|
m_prgzColumnHeader = rgzColumnHeader;
|
||
|
}
|
||
|
|
||
|
CSimKerberosPropPage::~CSimKerberosPropPage()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void CSimKerberosPropPage::DoDataExchange(CDataExchange* pDX)
|
||
|
{
|
||
|
ASSERT(m_pData != NULL);
|
||
|
CSimPropPage::DoDataExchange(pDX);
|
||
|
//{{AFX_DATA_MAP(CSimKerberosPropPage)
|
||
|
// NOTE: the ClassWizard will add DDX and DDV calls here
|
||
|
//}}AFX_DATA_MAP
|
||
|
|
||
|
if (!pDX->m_bSaveAndValidate)
|
||
|
{
|
||
|
// Fill in the listview
|
||
|
ListView_DeleteAllItems(m_hwndListview);
|
||
|
for (CSimEntry * pSimEntry = m_pData->m_pSimEntryList;
|
||
|
pSimEntry != NULL;
|
||
|
pSimEntry = pSimEntry->m_pNext)
|
||
|
{
|
||
|
if (pSimEntry->m_eDialogTarget != eKerberos)
|
||
|
continue;
|
||
|
LPCTSTR pszT = pSimEntry->PchGetString();
|
||
|
pszT += cchKerberos;
|
||
|
ListView_AddString(m_hwndListview, pszT, (LPARAM)pSimEntry);
|
||
|
} // for
|
||
|
ListView_SelectItem(m_hwndListview, 0);
|
||
|
} // if
|
||
|
} // CSimKerberosPropPage::DoDataExchange()
|
||
|
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CSimKerberosPropPage, CSimPropPage)
|
||
|
//{{AFX_MSG_MAP(CSimKerberosPropPage)
|
||
|
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
|
||
|
ON_BN_CLICKED(IDC_BUTTON_EDIT, OnButtonEdit)
|
||
|
//}}AFX_MSG_MAP
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
void CSimKerberosPropPage::OnButtonAdd()
|
||
|
{
|
||
|
CSimAddKerberosDlg dlg;
|
||
|
if (dlg.DoModal() != IDOK)
|
||
|
return;
|
||
|
CString str = dlg.m_strName;
|
||
|
str.TrimLeft();
|
||
|
str.TrimRight();
|
||
|
int iItem = ListView_FindString(m_hwndListview, str);
|
||
|
if (iItem >= 0)
|
||
|
{
|
||
|
ListView_SelectItem(m_hwndListview, iItem);
|
||
|
ReportErrorEx (GetSafeHwnd(),IDS_SIM_ERR_KERBEROS_NAME_ALREADY_EXISTS,S_OK,
|
||
|
MB_OK | MB_ICONINFORMATION, NULL, 0);
|
||
|
return;
|
||
|
}
|
||
|
CString strTemp = szKerberos;
|
||
|
strTemp += str;
|
||
|
CSimEntry * pSimEntry = m_pData->PAddSimEntry(strTemp);
|
||
|
UpdateData(FALSE);
|
||
|
ListView_SelectLParam(m_hwndListview, (LPARAM)pSimEntry);
|
||
|
SetDirty();
|
||
|
} // OnButtonAdd()
|
||
|
|
||
|
|
||
|
void CSimKerberosPropPage::OnButtonEdit()
|
||
|
{
|
||
|
int iItem;
|
||
|
CSimEntry * pSimEntry = (CSimEntry *)ListView_GetItemLParam(m_hwndListview, -1, OUT &iItem);
|
||
|
if (pSimEntry == NULL || iItem < 0)
|
||
|
{
|
||
|
// No item selected
|
||
|
return;
|
||
|
}
|
||
|
CString str;
|
||
|
ListView_GetItemString(m_hwndListview, iItem, 0, OUT str);
|
||
|
// ASSERT(!str.IsEmpty());
|
||
|
CSimAddKerberosDlg dlg;
|
||
|
dlg.m_strName = str;
|
||
|
if (dlg.DoModal() != IDOK)
|
||
|
return;
|
||
|
|
||
|
dlg.m_strName.TrimLeft();
|
||
|
dlg.m_strName.TrimRight();
|
||
|
if (str == dlg.m_strName)
|
||
|
{
|
||
|
// Strings are identical
|
||
|
return;
|
||
|
}
|
||
|
int iItemT = ListView_FindString(m_hwndListview, dlg.m_strName);
|
||
|
if (iItemT >= 0)
|
||
|
{
|
||
|
ListView_SelectItem(m_hwndListview, iItemT);
|
||
|
ReportErrorEx (GetSafeHwnd(),IDS_SIM_ERR_KERBEROS_NAME_ALREADY_EXISTS,S_OK,
|
||
|
MB_OK | MB_ICONINFORMATION, NULL, 0);
|
||
|
return;
|
||
|
}
|
||
|
CString strTemp = szKerberos;
|
||
|
strTemp += dlg.m_strName;
|
||
|
pSimEntry->SetString(strTemp);
|
||
|
UpdateData(FALSE);
|
||
|
ListView_SelectLParam(m_hwndListview, (LPARAM)pSimEntry);
|
||
|
SetDirty();
|
||
|
} // OnButtonEdit()
|
||
|
|
||
|
|
||
|
void CSimKerberosPropPage::DoContextHelp (HWND hWndControl)
|
||
|
{
|
||
|
TRACE0 ("Entering CSimKerberosPropPage::DoContextHelp\n");
|
||
|
static const DWORD help_map[] =
|
||
|
{
|
||
|
IDC_EDIT_USER_ACCOUNT, IDH_EDIT_USER_ACCOUNT,
|
||
|
IDC_LISTVIEW, IDH_LISTVIEW_KERBEROS,
|
||
|
IDC_BUTTON_ADD, IDH_BUTTON_ADD,
|
||
|
IDC_BUTTON_EDIT, IDH_BUTTON_EDIT,
|
||
|
IDC_BUTTON_REMOVE, IDH_BUTTON_REMOVE,
|
||
|
0, 0
|
||
|
};
|
||
|
// Display context help for a control
|
||
|
if ( !::WinHelp (
|
||
|
hWndControl,
|
||
|
DSADMIN_CONTEXT_HELP_FILE,
|
||
|
HELP_WM_HELP,
|
||
|
(DWORD_PTR) help_map) )
|
||
|
{
|
||
|
TRACE1 ("WinHelp () failed: 0x%x\n", GetLastError ());
|
||
|
}
|
||
|
TRACE0 ("Leaving CSimKerberosPropPage::DoContextHelp\n");
|
||
|
}
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CSimAddKerberosDlg dialog
|
||
|
CSimAddKerberosDlg::CSimAddKerberosDlg(CWnd* pParent /*=NULL*/)
|
||
|
: CDialog(CSimAddKerberosDlg::IDD, pParent)
|
||
|
{
|
||
|
//{{AFX_DATA_INIT(CSimAddKerberosDlg)
|
||
|
//}}AFX_DATA_INIT
|
||
|
}
|
||
|
|
||
|
|
||
|
void CSimAddKerberosDlg::DoDataExchange(CDataExchange* pDX)
|
||
|
{
|
||
|
CDialog::DoDataExchange(pDX);
|
||
|
//{{AFX_DATA_MAP(CSimAddKerberosDlg)
|
||
|
DDX_Text(pDX, IDC_EDIT_KERBEROS_NAME, m_strName);
|
||
|
//}}AFX_DATA_MAP
|
||
|
}
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CSimAddKerberosDlg, CDialog)
|
||
|
//{{AFX_MSG_MAP(CSimAddKerberosDlg)
|
||
|
ON_EN_CHANGE(IDC_EDIT_KERBEROS_NAME, OnChangeEditKerberosName)
|
||
|
//}}AFX_MSG_MAP
|
||
|
ON_MESSAGE(WM_HELP, OnHelp)
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
BOOL CSimAddKerberosDlg::OnInitDialog()
|
||
|
{
|
||
|
CDialog::OnInitDialog();
|
||
|
if ( m_strName.IsEmpty() )
|
||
|
{
|
||
|
GetDlgItem (IDOK)->EnableWindow (FALSE);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
// Change the caption
|
||
|
CString str;
|
||
|
VERIFY( str.LoadString(IDS_SIM_EDIT_KERBEROS_NAME) );
|
||
|
SetWindowText(str);
|
||
|
}
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
void CSimAddKerberosDlg::OnChangeEditKerberosName()
|
||
|
{
|
||
|
UpdateData (TRUE);
|
||
|
|
||
|
m_strName.TrimLeft ();
|
||
|
m_strName.TrimRight ();
|
||
|
|
||
|
GetDlgItem (IDOK)->EnableWindow (!m_strName.IsEmpty ());
|
||
|
}
|
||
|
|
||
|
void CSimAddKerberosDlg::DoContextHelp (HWND hWndControl)
|
||
|
{
|
||
|
TRACE0 ("Entering CSimAddKerberosDlg::DoContextHelp\n");
|
||
|
static const DWORD help_map[] =
|
||
|
{
|
||
|
IDC_EDIT_KERBEROS_NAME, IDH_EDIT_KERBEROS_NAME,
|
||
|
0, 0
|
||
|
};
|
||
|
// Display context help for a control
|
||
|
if ( !::WinHelp (
|
||
|
hWndControl,
|
||
|
DSADMIN_CONTEXT_HELP_FILE,
|
||
|
HELP_WM_HELP,
|
||
|
(DWORD_PTR) help_map) )
|
||
|
{
|
||
|
TRACE1 ("WinHelp () failed: 0x%x\n", GetLastError ());
|
||
|
}
|
||
|
TRACE0 ("Leaving CSimAddKerberosDlg::DoContextHelp\n");
|
||
|
}
|
||
|
|
||
|
BOOL CSimAddKerberosDlg::OnHelp(WPARAM, LPARAM lParam)
|
||
|
{
|
||
|
TRACE0 ("Entering CSimAddKerberosDlg::OnHelp\n");
|
||
|
|
||
|
const LPHELPINFO pHelpInfo = (LPHELPINFO)lParam;
|
||
|
if (pHelpInfo && pHelpInfo->iContextType == HELPINFO_WINDOW)
|
||
|
{
|
||
|
DoContextHelp ((HWND) pHelpInfo->hItemHandle);
|
||
|
}
|
||
|
|
||
|
TRACE0 ("Leaving CSimAddKerberosDlg::OnHelp\n");
|
||
|
|
||
|
return TRUE;
|
||
|
}
|