|
|
/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1999 **/ /**********************************************************************/
/*
pgmulnk.cpp Definition of CPgMultilink -- property page to edit profile attributes related to multiple connections
FILE HISTORY: */ // PgMulnk.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "PgMulnk.h"
#include "hlptable.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CPgMultilinkMerge property page
IMPLEMENT_DYNCREATE(CPgMultilinkMerge, CPropertyPage)
CPgMultilinkMerge::CPgMultilinkMerge(CRASProfileMerge* profile) : CManagedPage(CPgMultilinkMerge::IDD), m_pProfile(profile) { //{{AFX_DATA_INIT(CPgMultilinkMerge)
m_nTime = 0; m_Unit = -1; m_bRequireBAP = FALSE; m_nMultilinkPolicy = -1; //}}AFX_DATA_INIT
if(m_pProfile->m_dwBapRequired == RAS_BAP_REQUIRE) m_bRequireBAP = TRUE;
m_nTime = m_pProfile->m_dwBapLineDnTime; if(!(m_nTime % 60)) // can user min to represent
{ m_nTime /= 60; m_Unit = 1; } else m_Unit = 0;
if(!(m_pProfile->m_dwAttributeFlags & PABF_msRADIUSPortLimit)) { m_nMultilinkPolicy = 0; // value not set
} else if(m_pProfile->m_dwPortLimit == 1) { m_nMultilinkPolicy = 1; // multilink not allowed
} else { m_nMultilinkPolicy = 2; // multilink
}
SetHelpTable(g_aHelpIDs_IDD_MULTILINK_MERGE);
m_bInited = false;
}
CPgMultilinkMerge::~CPgMultilinkMerge() { }
void CPgMultilinkMerge::DoDataExchange(CDataExchange* pDX) { ASSERT(m_pProfile); CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPgMultilinkMerge)
DDX_Control(pDX, IDC_CHECKREQUIREBAP, m_CheckRequireBAP); DDX_Control(pDX, IDC_EDITTIME, m_EditTime); DDX_Control(pDX, IDC_EDITMAXPORTS, m_EditPorts); DDX_Control(pDX, IDC_EDITPERCENT, m_EditPercent); DDX_Control(pDX, IDC_SPINTIME, m_SpinTime); DDX_Control(pDX, IDC_SPINPERCENT, m_SpinPercent); DDX_Control(pDX, IDC_SPINMAXPORTS, m_SpinMaxPorts); DDX_Control(pDX, IDC_COMBOUNIT, m_CBUnit); DDX_CBIndex(pDX, IDC_COMBOUNIT, m_Unit); DDX_Check(pDX, IDC_CHECKREQUIREBAP, m_bRequireBAP); DDX_Radio(pDX, IDC_RADIO_MULNK_NOTDEFINED, m_nMultilinkPolicy); DDX_Text(pDX, IDC_EDITTIME, m_nTime); if(m_nMultilinkPolicy != 1) DDV_MinMaxUInt(pDX, m_nTime, 1, MAX_TIME); //}}AFX_DATA_MAP
DDX_Text(pDX, IDC_EDITPERCENT, m_pProfile->m_dwBapLineDnLimit); if(m_nMultilinkPolicy != 1) DDV_MinMaxUInt(pDX, m_pProfile->m_dwBapLineDnLimit, 1, 100); DDX_Text(pDX, IDC_EDITMAXPORTS, m_pProfile->m_dwPortLimit); if(m_nMultilinkPolicy == 2) DDV_MinMaxUInt(pDX, m_pProfile->m_dwPortLimit, 2, MAX_PORTLIMIT); }
BEGIN_MESSAGE_MAP(CPgMultilinkMerge, CPropertyPage) //{{AFX_MSG_MAP(CPgMultilinkMerge)
ON_EN_CHANGE(IDC_EDITMAXPORTS, OnChangeEditmaxports) ON_EN_CHANGE(IDC_EDITPERCENT, OnChangeEditpercent) ON_EN_CHANGE(IDC_EDITTIME, OnChangeEdittime) ON_WM_HELPINFO() ON_WM_CONTEXTMENU() ON_CBN_SELCHANGE(IDC_COMBOUNIT, OnSelchangeCombounit) ON_BN_CLICKED(IDC_CHECKREQUIREBAP, OnCheckrequirebap) ON_BN_CLICKED(IDC_RADIO_MULNK_MULTI, OnRadioMulnkMulti) ON_BN_CLICKED(IDC_RADIO_MULNK_NOTDEFINED, OnRadioMulnkNotdefined) ON_BN_CLICKED(IDC_RADIO_MULNK_SINGLE, OnRadioMulnkSingle) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPgMultilinkMerge message handlers
BOOL CPgMultilinkMerge::OnApply() { if(!GetModified()) return TRUE;
// # of ports
switch (m_nMultilinkPolicy) { case 0: // remove attribute
m_pProfile->m_dwAttributeFlags &= (~PABF_msRADIUSPortLimit); break; case 1: // 1
m_pProfile->m_dwAttributeFlags |= PABF_msRADIUSPortLimit; m_pProfile->m_dwPortLimit = 1; break; case 2: // port limits
m_pProfile->m_dwAttributeFlags |= PABF_msRADIUSPortLimit; break; }; if(m_nMultilinkPolicy == 1) // single link
// remove all the bap attributes
{ m_pProfile->m_dwAttributeFlags &= ~PABF_msRASBapRequired; m_pProfile->m_dwAttributeFlags &= ~PABF_msRASBapLinednLimit; m_pProfile->m_dwAttributeFlags &= ~PABF_msRASBapLinednTime; } else { m_pProfile->m_dwAttributeFlags |= PABF_msRASBapLinednLimit; m_pProfile->m_dwAttributeFlags |= PABF_msRASBapLinednTime;
if(m_Unit == 1) // minutes is selected as the unit
m_pProfile->m_dwBapLineDnTime = m_nTime * 60; // change to second
else m_pProfile->m_dwBapLineDnTime = m_nTime;
if(m_bRequireBAP) { m_pProfile->m_dwAttributeFlags |= PABF_msRASBapRequired; m_pProfile->m_dwBapRequired = RAS_BAP_REQUIRE; } else // remove the attribute from the data store
{ m_pProfile->m_dwAttributeFlags &= (~PABF_msRASBapRequired); m_pProfile->m_dwBapRequired = RAS_DEF_BAPREQUIRED; } }
return CManagedPage::OnApply(); }
BOOL CPgMultilinkMerge::OnInitDialog() { // populate the units
CString str; CPropertyPage::OnInitDialog();
str.LoadString(IDS_SEC); m_CBUnit.InsertString(0, str); str.LoadString(IDS_MIN); m_CBUnit.InsertString(1, str);
UpdateData(FALSE); // set spin range
m_SpinMaxPorts.SetRange(2, MAX_PORTLIMIT); m_SpinPercent.SetRange(1, MAX_PERCENT); m_SpinTime.SetRange(1, MAX_TIME);
// settings -- d
EnableSettings();
m_bInited = true;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CPgMultilinkMerge::OnChangeEditmaxports() { // TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CPropertyPage::OnInitDialog()
// function to send the EM_SETEVENTMASK message to the control
// with the ENM_CHANGE flag ORed into the lParam mask.
if (m_bInited) { SetModified(); m_pProfile->m_dwAttributeFlags |= PABF_msRADIUSPortLimit; }; }
void CPgMultilinkMerge::OnChangeEditpercent() { // TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CPropertyPage::OnInitDialog()
// function to send the EM_SETEVENTMASK message to the control
// with the ENM_CHANGE flag ORed into the lParam mask.
// TODO: Add your control notification handler code here
if (m_bInited) { SetModified(); m_pProfile->m_dwAttributeFlags |= PABF_msRASBapLinednLimit; }; }
void CPgMultilinkMerge::OnChangeEdittime() { // TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CPropertyPage::OnInitDialog()
// function to send the EM_SETEVENTMASK message to the control
// with the ENM_CHANGE flag ORed into the lParam mask.
// TODO: Add your control notification handler code here
if (m_bInited) { SetModified(); m_pProfile->m_dwAttributeFlags |= PABF_msRASBapLinednTime; }; }
void CPgMultilinkMerge::EnableSettings() { EnablePorts(); EnableBAP(); }
void CPgMultilinkMerge::EnableBAP() { CButton *pBtn = (CButton*)GetDlgItem(IDC_RADIO_MULNK_SINGLE); ASSERT(pBtn); BOOL b = (pBtn->GetCheck() == 0); // only enable when Single is not selected
m_CheckRequireBAP.EnableWindow(b); // the other BAP info is not affected by the state of the check box
m_EditPercent.EnableWindow(b); m_SpinPercent.EnableWindow(b); m_EditTime.EnableWindow(b); m_SpinTime.EnableWindow(b); GetDlgItem(IDC_COMBOUNIT)->EnableWindow(b); }
void CPgMultilinkMerge::EnablePorts() { CButton *pBtn = (CButton*)GetDlgItem(IDC_RADIO_MULNK_MULTI); ASSERT(pBtn); BOOL b = pBtn->GetCheck();
m_EditPorts.EnableWindow(b); m_SpinMaxPorts.EnableWindow(b); }
BOOL CPgMultilinkMerge::OnHelpInfo(HELPINFO* pHelpInfo) { return CManagedPage::OnHelpInfo(pHelpInfo); }
void CPgMultilinkMerge::OnContextMenu(CWnd* pWnd, CPoint point) { CManagedPage::OnContextMenu(pWnd, point); }
void CPgMultilinkMerge::OnSelchangeCombounit() { SetModified(); m_pProfile->m_dwAttributeFlags |= PABF_msRASBapLinednTime; }
void CPgMultilinkMerge::OnCheckrequirebap() { SetModified(); }
void CPgMultilinkMerge::OnRadioMulnkMulti() { SetModified(); EnablePorts(); EnableBAP(); if(m_pProfile->m_dwPortLimit == 1) { m_pProfile->m_dwPortLimit =2; CString str = _T("2"); m_EditPorts.SetWindowText(str); } }
void CPgMultilinkMerge::OnRadioMulnkNotdefined() { SetModified(); EnablePorts(); EnableBAP(); }
void CPgMultilinkMerge::OnRadioMulnkSingle() {
SetModified(); EnablePorts(); EnableBAP(); }
|