Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

293 lines
9.9 KiB

//+---------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 2000-2002.
//
// File: SaferEntryInternetZonePropertyPage.cpp
//
// Contents: Implementation of CSaferEntryInternetZonePropertyPage
//
//----------------------------------------------------------------------------
// SaferEntryInternetZonePropertyPage.cpp : implementation file
//
#include "stdafx.h"
#include <gpedit.h>
#include "certmgr.h"
#include "compdata.h"
#include "SaferEntryInternetZonePropertyPage.h"
#include "SaferUtil.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSaferEntryInternetZonePropertyPage property page
CSaferEntryInternetZonePropertyPage::CSaferEntryInternetZonePropertyPage(
CSaferEntry& rSaferEntry,
bool bNew,
LONG_PTR lNotifyHandle,
LPDATAOBJECT pDataObject,
bool bReadOnly,
CCertMgrComponentData* pCompData,
bool bIsMachine,
bool* pbObjectCreated /* = 0 */)
: CSaferPropertyPage(CSaferEntryInternetZonePropertyPage::IDD, pbObjectCreated,
pCompData, rSaferEntry, bNew, lNotifyHandle, pDataObject, bReadOnly,
bIsMachine)
{
//{{AFX_DATA_INIT(CSaferEntryInternetZonePropertyPage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CSaferEntryInternetZonePropertyPage::~CSaferEntryInternetZonePropertyPage()
{
}
void CSaferEntryInternetZonePropertyPage::DoDataExchange(CDataExchange* pDX)
{
CSaferPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSaferEntryInternetZonePropertyPage)
DDX_Control(pDX, IDC_IZONE_ENTRY_ZONES, m_internetZoneCombo);
DDX_Control(pDX, IDC_IZONE_ENTRY_SECURITY_LEVEL, m_securityLevelCombo);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSaferEntryInternetZonePropertyPage, CSaferPropertyPage)
//{{AFX_MSG_MAP(CSaferEntryInternetZonePropertyPage)
ON_CBN_SELCHANGE(IDC_IZONE_ENTRY_SECURITY_LEVEL, OnSelchangeIzoneEntrySecurityLevel)
ON_CBN_SELCHANGE(IDC_IZONE_ENTRY_ZONES, OnSelchangeIzoneEntryZones)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSaferEntryInternetZonePropertyPage message handlers
BOOL CSaferEntryInternetZonePropertyPage::OnInitDialog()
{
CSaferPropertyPage::OnInitDialog();
// Set up User Notification combo box
DWORD dwFlags = 0;
m_rSaferEntry.GetFlags (dwFlags);
ASSERT (m_pCompData);
if ( m_pCompData )
{
CPolicyKey policyKey (m_pCompData->m_pGPEInformation,
SAFER_HKLM_REGBASE,
m_bIsMachine);
InitializeSecurityLevelComboBox (m_securityLevelCombo, false,
m_rSaferEntry.GetLevel (), policyKey.GetKey (),
m_pCompData->m_pdwSaferLevels,
m_bIsMachine);
InitializeInternetZoneComboBox (m_rSaferEntry.GetURLZoneID ());
SendDlgItemMessage (IDC_IZONE_ENTRY_DESCRIPTION, EM_LIMITTEXT, SAFER_MAX_DESCRIPTION_SIZE-1, 0);
SetDlgItemText (IDC_IZONE_ENTRY_DESCRIPTION, m_rSaferEntry.GetDescription ());
SetDlgItemText (IDC_IZONE_ENTRY_LAST_MODIFIED, m_rSaferEntry.GetLongLastModified ());
if ( m_bReadOnly )
{
m_securityLevelCombo.EnableWindow (FALSE);
m_internetZoneCombo.EnableWindow (FALSE);
}
if ( !m_bDirty )
{
CString szText;
VERIFY (szText.LoadString (IDS_URLZONE_TITLE));
SetDlgItemText (IDC_URLZONE_TITLE, szText);
}
else
{
GetDlgItem (IDC_DATE_LAST_MODIFIED_LABEL)->ShowWindow (SW_HIDE);
GetDlgItem (IDC_IZONE_ENTRY_LAST_MODIFIED)->ShowWindow (SW_HIDE);
}
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSaferEntryInternetZonePropertyPage::InitializeInternetZoneComboBox (DWORD UrlZoneId)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CString szText;
VERIFY (szText.LoadString (IDS_URLZONE_LOCAL_MACHINE));
int nItem = m_internetZoneCombo.AddString (szText);
ASSERT (nItem >= 0);
if ( nItem >= 0 )
{
if ( URLZONE_LOCAL_MACHINE == UrlZoneId )
VERIFY (CB_ERR != m_internetZoneCombo.SetCurSel (nItem));
VERIFY (CB_ERR != m_internetZoneCombo.SetItemData (nItem, URLZONE_LOCAL_MACHINE));
}
VERIFY (szText.LoadString (IDS_URLZONE_INTRANET));
nItem = m_internetZoneCombo.AddString (szText);
ASSERT (nItem >= 0);
if ( nItem >= 0 )
{
if ( URLZONE_INTRANET == UrlZoneId )
VERIFY (CB_ERR != m_internetZoneCombo.SetCurSel (nItem));
VERIFY (CB_ERR != m_internetZoneCombo.SetItemData (nItem, URLZONE_INTRANET));
}
VERIFY (szText.LoadString (IDS_URLZONE_TRUSTED));
nItem = m_internetZoneCombo.AddString (szText);
ASSERT (nItem >= 0);
if ( nItem >= 0 )
{
if ( URLZONE_TRUSTED == UrlZoneId )
VERIFY (CB_ERR != m_internetZoneCombo.SetCurSel (nItem));
VERIFY (CB_ERR != m_internetZoneCombo.SetItemData (nItem, URLZONE_TRUSTED));
}
VERIFY (szText.LoadString (IDS_URLZONE_INTERNET));
nItem = m_internetZoneCombo.AddString (szText);
ASSERT (nItem >= 0);
if ( nItem >= 0 )
{
if ( URLZONE_INTERNET == UrlZoneId )
VERIFY (CB_ERR != m_internetZoneCombo.SetCurSel (nItem));
VERIFY (CB_ERR != m_internetZoneCombo.SetItemData (nItem, URLZONE_INTERNET));
}
VERIFY (szText.LoadString (IDS_URLZONE_UNTRUSTED));
nItem = m_internetZoneCombo.AddString (szText);
ASSERT (nItem >= 0);
if ( nItem >= 0 )
{
if ( URLZONE_UNTRUSTED == UrlZoneId )
VERIFY (CB_ERR != m_internetZoneCombo.SetCurSel (nItem));
VERIFY (CB_ERR != m_internetZoneCombo.SetItemData (nItem, URLZONE_UNTRUSTED));
}
}
void CSaferEntryInternetZonePropertyPage::DoContextHelp (HWND hWndControl)
{
_TRACE (1, L"Entering CSaferEntryInternetZonePropertyPage::DoContextHelp\n");
static const DWORD help_map[] =
{
IDC_IZONE_ENTRY_ZONES, IDH_IZONE_ENTRY_ZONES,
IDC_IZONE_ENTRY_SECURITY_LEVEL, IDH_IZONE_ENTRY_SECURITY_LEVEL,
IDC_IZONE_ENTRY_DESCRIPTION, IDH_IZONE_ENTRY_DESCRIPTION,
IDC_IZONE_ENTRY_LAST_MODIFIED, IDH_IZONE_ENTRY_LAST_MODIFIED,
0, 0
};
switch (::GetDlgCtrlID (hWndControl))
{
case IDC_IZONE_ENTRY_ZONES:
case IDC_IZONE_ENTRY_SECURITY_LEVEL:
case IDC_IZONE_ENTRY_DESCRIPTION:
case IDC_IZONE_ENTRY_LAST_MODIFIED:
if ( !::WinHelp (
hWndControl,
GetF1HelpFilename(),
HELP_WM_HELP,
(DWORD_PTR) help_map) )
{
_TRACE (0, L"WinHelp () failed: 0x%x\n", GetLastError ());
}
break;
default:
break;
}
_TRACE (-1, L"Leaving CSaferEntryInternetZonePropertyPage::DoContextHelp\n");
}
BOOL CSaferEntryInternetZonePropertyPage::OnApply()
{
if ( m_bDirty && !m_bReadOnly )
{
// Set the level
int nCurSel = m_securityLevelCombo.GetCurSel ();
ASSERT (CB_ERR != nCurSel);
m_rSaferEntry.SetLevel ((DWORD) m_securityLevelCombo.GetItemData (nCurSel));
int nSel = m_internetZoneCombo.GetCurSel ();
ASSERT (CB_ERR != nSel);
if ( CB_ERR != nSel )
{
DWORD_PTR dwURLZoneID = m_internetZoneCombo.GetItemData (nSel);
ASSERT (CB_ERR != dwURLZoneID);
if ( CB_ERR != dwURLZoneID )
m_rSaferEntry.SetURLZoneID ((DWORD) dwURLZoneID);
}
HRESULT hr = m_rSaferEntry.Save ();
if ( SUCCEEDED (hr) )
{
if ( m_lNotifyHandle )
MMCPropertyChangeNotify (
m_lNotifyHandle, // handle to a notification
(LPARAM) m_pDataObject); // unique identifier
if ( m_pbObjectCreated )
*m_pbObjectCreated = true;
m_rSaferEntry.Refresh ();
GetDlgItem (IDC_DATE_LAST_MODIFIED_LABEL)->ShowWindow (SW_SHOW);
GetDlgItem (IDC_IZONE_ENTRY_LAST_MODIFIED)->ShowWindow (SW_SHOW);
GetDlgItem (IDC_DATE_LAST_MODIFIED_LABEL)->UpdateWindow ();
GetDlgItem (IDC_IZONE_ENTRY_LAST_MODIFIED)->UpdateWindow ();
SetDlgItemText (IDC_IZONE_ENTRY_LAST_MODIFIED, m_rSaferEntry.GetLongLastModified ());
m_bDirty = false;
}
else
{
CString text;
CString caption;
CThemeContextActivator activator;
VERIFY (caption.LoadString (IDS_SAFER_WINDOWS_NODE_NAME));
text.FormatMessage (IDS_ERROR_SAVING_ENTRY, GetSystemMessage (hr));
MessageBox (text, caption, MB_OK);
return FALSE;
}
}
return CSaferPropertyPage::OnApply();
}
void CSaferEntryInternetZonePropertyPage::OnSelchangeIzoneEntrySecurityLevel()
{
m_bDirty = true;
SetModified ();
}
void CSaferEntryInternetZonePropertyPage::OnSelchangeIzoneEntryZones()
{
int nSel = m_internetZoneCombo.GetCurSel ();
ASSERT (CB_ERR != nSel);
if ( CB_ERR != nSel )
{
DWORD_PTR dwURLZoneID = m_internetZoneCombo.GetItemData (nSel);
ASSERT (CB_ERR != dwURLZoneID);
if ( CB_ERR != dwURLZoneID )
m_rSaferEntry.SetURLZoneID ((DWORD) dwURLZoneID);
}
SetDlgItemText (IDC_IZONE_ENTRY_DESCRIPTION, m_rSaferEntry.GetDescription ());
m_bDirty = true;
SetModified ();
}