290 lines
7.9 KiB
C++
290 lines
7.9 KiB
C++
//----------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 2001.
|
|
//
|
|
// File: ssidpage.cpp
|
|
//
|
|
// Contents: WiF Policy Snapin : General Properties of each PS.(Non 8021x)
|
|
//
|
|
//
|
|
// History: TaroonM
|
|
// 10/30/01
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
#include "stdafx.h"
|
|
#include "sprpage.h"
|
|
#include "ssidpage.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSSIDPage property page
|
|
|
|
IMPLEMENT_DYNCREATE(CSSIDPage, CWirelessBasePage)
|
|
|
|
//CSSIDPage::CSSIDPage() : CWirelessBasePage(CSSIDPage::IDD)
|
|
CSSIDPage::CSSIDPage(UINT nIDTemplate) : CWirelessBasePage(nIDTemplate)
|
|
{
|
|
//{{AFX_DATA_INIT(CSSIDPage)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
|
|
m_dlgIDD = nIDTemplate;
|
|
m_bNameChanged = FALSE;
|
|
m_bNetworkTypeChanged = FALSE;
|
|
m_bPageInitialized = FALSE;
|
|
m_dwWepEnabled = TRUE;
|
|
m_dwNetworkAuthentication = FALSE;
|
|
m_dwAutomaticKeyProvision = FALSE;
|
|
m_dwNetworkType = FALSE;
|
|
m_pWirelessPolicyData = NULL;
|
|
m_bReadOnly = FALSE;
|
|
}
|
|
|
|
CSSIDPage::~CSSIDPage()
|
|
{
|
|
}
|
|
|
|
void CSSIDPage::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CWirelessBasePage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CSSIDPage)
|
|
DDX_Control(pDX, IDC_SSID_NAME, m_edSSID);
|
|
DDX_Control(pDX, IDC_PS_DESCRIPTION, m_edPSDescription);
|
|
DDX_Check(pDX, IDC_WEP_ENABLED, m_dwWepEnabled);
|
|
DDX_Check(pDX, IDC_NETWORK_AUTHENTICATION, m_dwNetworkAuthentication);
|
|
DDX_Check(pDX, IDC_AUTOMATIC_KEY_PROVISION, m_dwAutomaticKeyProvision);
|
|
DDX_Check(pDX, IDC_NETWORK_TYPE, m_dwNetworkType);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CSSIDPage, CWirelessBasePage)
|
|
//{{AFX_MSG_MAP(CSSIDPage)
|
|
ON_WM_HELPINFO()
|
|
ON_EN_CHANGE(IDC_SSID_NAME, OnChangedSSID)
|
|
ON_EN_CHANGE(IDC_PS_DESCRIPTION, OnChangedPSDescription)
|
|
ON_BN_CLICKED(IDC_WEP_ENABLED, OnChangedOtherParams)
|
|
ON_BN_CLICKED(IDC_NETWORK_AUTHENTICATION, OnChangedOtherParams)
|
|
ON_BN_CLICKED(IDC_AUTOMATIC_KEY_PROVISION, OnChangedOtherParams)
|
|
ON_BN_CLICKED(IDC_NETWORK_TYPE, OnChangedOtherParams)
|
|
ON_BN_CLICKED(IDC_NETWORK_TYPE, OnChangedNetworkType)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSSIDPage message handlers
|
|
BOOL CSSIDPage::OnInitDialog()
|
|
{
|
|
PWIRELESS_PS_DATA pWirelessPSData = NULL;
|
|
|
|
if (m_pWirelessPolicyData->dwFlags & WLSTORE_READONLY) {
|
|
|
|
m_bReadOnly = TRUE;
|
|
}
|
|
|
|
|
|
|
|
// call base class init
|
|
CWirelessBasePage::OnInitDialog();
|
|
|
|
m_bPageInitialized = TRUE;
|
|
|
|
// show the wait cursor in case there is a huge description being accessed
|
|
CWaitCursor waitCursor;
|
|
|
|
|
|
pWirelessPSData = WirelessPS();
|
|
|
|
|
|
m_edSSID.SetLimitText(c_nMaxSSIDLen);
|
|
m_edPSDescription.SetLimitText(c_nMaxDescriptionLen);
|
|
|
|
// initialize our edit controls
|
|
|
|
|
|
ASSERT(pWirelessPSData);
|
|
|
|
m_edSSID.SetWindowText(pWirelessPSData->pszWirelessSSID);
|
|
|
|
m_oldSSIDName = CString(pWirelessPSData->pszWirelessSSID,pWirelessPSData->dwWirelessSSIDLen);
|
|
|
|
|
|
if (pWirelessPSData->pszDescription) {
|
|
|
|
m_edPSDescription.SetWindowText (pWirelessPSData->pszDescription);
|
|
|
|
}
|
|
m_dwWepEnabled =
|
|
(pWirelessPSData->dwWepEnabled) ? TRUE : FALSE;
|
|
m_dwNetworkAuthentication =
|
|
(pWirelessPSData->dwNetworkAuthentication) ? TRUE : FALSE;
|
|
m_dwAutomaticKeyProvision =
|
|
(pWirelessPSData->dwAutomaticKeyProvision) ? TRUE : FALSE;
|
|
m_dwNetworkType =
|
|
(pWirelessPSData->dwNetworkType == WIRELESS_NETWORK_TYPE_ADHOC) ? TRUE : FALSE;
|
|
|
|
if (m_bReadOnly) {
|
|
DisableControls();
|
|
}
|
|
|
|
UpdateData (FALSE);
|
|
|
|
// OK, we can start paying attention to modifications made via dlg controls now.
|
|
// This should be the last call before returning from OnInitDialog.
|
|
OnFinishInitDialog();
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
BOOL CSSIDPage::OnApply()
|
|
{
|
|
CString strName;
|
|
CString strDescription;
|
|
LPWSTR SSID = NULL;
|
|
LPWSTR pszDescription = NULL;
|
|
PWIRELESS_PS_DATA pWirelessPSData = NULL;
|
|
PWIRELESS_POLICY_DATA pWirelessPolicyData = NULL;
|
|
|
|
pWirelessPSData = WirelessPS();
|
|
|
|
// pull our data out of the controls and into the object
|
|
|
|
if (!UpdateData (TRUE))
|
|
// Data was not valid, return for user to correct it.
|
|
return CancelApply();
|
|
|
|
|
|
ASSERT(pWirelessPSData);
|
|
|
|
pWirelessPolicyData = m_pWirelessPolicyData;
|
|
ASSERT(pWirelessPolicyData);
|
|
|
|
DWORD dwNetworkType = 0;
|
|
|
|
if (m_dwNetworkType)
|
|
dwNetworkType = WIRELESS_NETWORK_TYPE_ADHOC;
|
|
else
|
|
dwNetworkType = WIRELESS_NETWORK_TYPE_AP;
|
|
|
|
m_edSSID.GetWindowText (strName);
|
|
if(m_bNameChanged || m_bNetworkTypeChanged)
|
|
{
|
|
if (m_bNameChanged) {
|
|
if (strName.IsEmpty()) {
|
|
ReportError(IDS_OPERATION_FAILED_NULL_SSID, 0);
|
|
m_edSSID.SetWindowText(pWirelessPSData->pszWirelessSSID);
|
|
return CancelApply();
|
|
}
|
|
}
|
|
|
|
DWORD dwId = pWirelessPSData->dwId;
|
|
|
|
if(IsDuplicateSSID(strName, dwNetworkType, pWirelessPolicyData, dwId)) {
|
|
ReportError(IDS_OPERATION_FAILED_DUP_SSID,0);
|
|
m_edSSID.SetWindowText(pWirelessPSData->pszWirelessSSID);
|
|
return CancelApply();
|
|
}
|
|
}
|
|
m_bNameChanged = FALSE;
|
|
m_bNetworkTypeChanged = FALSE;
|
|
|
|
|
|
|
|
if (m_dwWepEnabled)
|
|
pWirelessPSData->dwWepEnabled = 1;
|
|
else
|
|
pWirelessPSData->dwWepEnabled = 0;
|
|
|
|
if (m_dwNetworkAuthentication)
|
|
pWirelessPSData->dwNetworkAuthentication = 1;
|
|
else
|
|
pWirelessPSData->dwNetworkAuthentication = 0;
|
|
|
|
|
|
if (m_dwAutomaticKeyProvision)
|
|
pWirelessPSData->dwAutomaticKeyProvision = 1;
|
|
else
|
|
pWirelessPSData->dwAutomaticKeyProvision = 0;
|
|
|
|
if (m_dwNetworkType)
|
|
pWirelessPSData->dwNetworkType = WIRELESS_NETWORK_TYPE_ADHOC;
|
|
else
|
|
pWirelessPSData->dwNetworkType = WIRELESS_NETWORK_TYPE_AP;
|
|
|
|
|
|
SSIDDupString(pWirelessPSData->pszWirelessSSID, strName);
|
|
|
|
m_edPSDescription.GetWindowText (strDescription);
|
|
FreeAndThenDupString(&pWirelessPSData->pszDescription, strDescription);
|
|
UpdateWirelessPSData(pWirelessPSData);
|
|
|
|
return CWirelessBasePage::OnApply();
|
|
}
|
|
|
|
void
|
|
CSSIDPage::Initialize (
|
|
PWIRELESS_PS_DATA pWirelessPSData,
|
|
CComponentDataImpl* pComponentDataImpl,
|
|
PWIRELESS_POLICY_DATA pWirelessPolicyData
|
|
)
|
|
{
|
|
m_pWirelessPolicyData = pWirelessPolicyData;
|
|
CWirelessBasePage::Initialize(pWirelessPSData, pComponentDataImpl);
|
|
}
|
|
|
|
|
|
BOOL CSSIDPage::OnHelpInfo(HELPINFO* pHelpInfo)
|
|
{
|
|
if (pHelpInfo->iContextType == HELPINFO_WINDOW)
|
|
{
|
|
DWORD* pdwHelp = (DWORD*) &g_aHelpIDs_IDD_SSID[0];
|
|
::WinHelp ((HWND)pHelpInfo->hItemHandle,
|
|
c_szWlsnpHelpFile,
|
|
HELP_WM_HELP,
|
|
(DWORD_PTR)(LPVOID)pdwHelp);
|
|
}
|
|
|
|
return CWirelessBasePage::OnHelpInfo(pHelpInfo);
|
|
}
|
|
|
|
void CSSIDPage::OnChangedSSID()
|
|
{
|
|
m_bNameChanged = TRUE;
|
|
SetModified();
|
|
}
|
|
|
|
void CSSIDPage::OnChangedPSDescription()
|
|
{
|
|
SetModified();
|
|
}
|
|
|
|
void CSSIDPage::OnChangedNetworkType()
|
|
{
|
|
m_bNetworkTypeChanged = TRUE;
|
|
SetModified();
|
|
}
|
|
|
|
void CSSIDPage::OnChangedOtherParams()
|
|
{
|
|
SetModified();
|
|
}
|
|
|
|
void CSSIDPage::DisableControls()
|
|
{
|
|
SAFE_ENABLEWINDOW(IDC_SSID_NAME, FALSE);
|
|
SAFE_ENABLEWINDOW(IDC_PS_DESCRIPTION, FALSE);
|
|
SAFE_ENABLEWINDOW(IDC_WEP_ENABLED, FALSE);
|
|
SAFE_ENABLEWINDOW(IDC_NETWORK_AUTHENTICATION, FALSE);
|
|
SAFE_ENABLEWINDOW(IDC_AUTOMATIC_KEY_PROVISION, FALSE);
|
|
SAFE_ENABLEWINDOW(IDC_NETWORK_TYPE, FALSE);
|
|
return;
|
|
}
|