//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1997 - 1999 // // File: pglimit.cpp // //-------------------------------------------------------------------------- // pglimit.cpp : implementation file // #include "stdafx.h" #include "acsadmin.h" #include "acsdata.h" #include "pggen.h" #include "pglimit.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPgSubLimit property page IMPLEMENT_DYNCREATE(CPgSubLimit, CACSDialog) CPgSubLimit::CPgSubLimit(CServiceLevelLimitsRecord* pRecord, int *pAvailTypes, CWnd* pParent) : CACSDialog(CPgSubLimit::IDD, pParent) { ASSERT(pRecord != NULL && pAvailTypes != NULL); m_pAvailTypes = pAvailTypes; m_pLimitsRecord = pRecord; DataInit(); } void CPgSubLimit::DataInit() { //{{AFX_DATA_INIT(CPgSubLimit) // unlimit is the default choice m_nDataRateChoice = 0; m_nPeakRateChoice = 0; m_nTTDataRateChoice = 0; m_nTTPeakDataRateChoice = 0; m_uDataRate = 0; m_uPeakRate = 0; m_uTTDataRate = 0; m_uTTPeakRate = 0; m_bFlowDataChanged = FALSE; m_nServiceType = -1; //}}AFX_DATA_INIT } CPgSubLimit::CPgSubLimit() : CACSDialog(CPgSubLimit::IDD, NULL) { DataInit(); } CPgSubLimit::~CPgSubLimit() { } void CPgSubLimit::DoDataExchange(CDataExchange* pDX) { CACSDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPgSubLimit) DDX_Control(pDX, IDC_COMBO_SUBNET_LIMIT_TYPES, m_comboTypes); DDX_Control(pDX, IDC_EDIT_GEN_TT_PEAKRATE, m_editTTPeakRate); DDX_Control(pDX, IDC_EDIT_GEN_TT_DATARATE, m_editTTDataRate); DDX_Control(pDX, IDC_EDIT_GEN_PF_PEAKRATE, m_editPeakRate); DDX_Control(pDX, IDC_EDIT_GEN_PF_DATARATE, m_editDataRate); DDX_Radio(pDX, IDC_SUBNET_TRAFFIC_DATARATE_UNLIMITED, m_nDataRateChoice); DDX_Radio(pDX, IDC_SUBNET_TRAFFIC_PEAKRATE_UNLIMITED, m_nPeakRateChoice); DDX_Radio(pDX, IDC_SUBNET_TRAFFIC_TTDATARATE_UNLIMITED, m_nTTDataRateChoice); DDX_Radio(pDX, IDC_SUBNET_TRAFFIC_TTPEAKRATE_UNLIMITED, m_nTTPeakDataRateChoice); //}}AFX_DATA_MAP DDX_Text(pDX, IDC_EDIT_GEN_PF_DATARATE, m_uDataRate); if(m_nDataRateChoice == 1) DDV_MinMaxUInt(pDX, m_uDataRate, 0, 4194300); DDX_Text(pDX, IDC_EDIT_GEN_PF_PEAKRATE, m_uPeakRate); if(m_nPeakRateChoice == 1) DDV_MinMaxUInt(pDX, m_uPeakRate, 0, 4194300); DDX_Text(pDX, IDC_EDIT_GEN_TT_DATARATE, m_uTTDataRate); if(m_nTTDataRateChoice == 1) DDV_MinMaxUInt(pDX, m_uTTDataRate, 0, 4194300); DDX_Text(pDX, IDC_EDIT_GEN_TT_PEAKRATE, m_uTTPeakRate); if(m_nTTPeakDataRateChoice == 1) DDV_MinMaxUInt(pDX, m_uTTPeakRate, 0, 4194300); } BEGIN_MESSAGE_MAP(CPgSubLimit, CACSDialog) //{{AFX_MSG_MAP(CPgSubLimit) ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_DATARATE_LIMITED, OnSubnetTrafficDatarateLimited) ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_DATARATE_UNLIMITED, OnSubnetTrafficDatarateUnlimited) ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_PEAKRATE_LIMITED, OnSubnetTrafficPeakrateLimited) ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_PEAKRATE_UNLIMITED, OnSubnetTrafficPeakrateUnlimited) ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_TTDATARATE_LIMITED, OnSubnetTrafficTtdatarateLimited) ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_TTDATARATE_UNLIMITED, OnSubnetTrafficTtdatarateUnlimited) ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_TTPEAKRATE_LIMITED, OnSubnetTrafficTtpeakrateLimited) ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_TTPEAKRATE_UNLIMITED, OnSubnetTrafficTtpeakrateUnlimited) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPgSubLimit message handlers BOOL CPgSubLimit::OnInitDialog() { CACSDialog::OnInitDialog(); // populate the strings in combo box int* pTypes = m_pAvailTypes; CString str; UINT strId = 0; if(!pTypes) return FALSE; while (*pTypes != -1) { switch(*pTypes) { case ACS_SUBNET_LIMITS_SERVICETYPE_AGGREGATE: strId = IDS_AGGREGATEPOLICY; break; case ACS_SUBNET_LIMITS_SERVICETYPE_GUARANTEEDSERVICE: strId = IDS_GUARANTEEDSERVICE; break; case ACS_SUBNET_LIMITS_SERVICETYPE_CONTROLLEDLOAD: strId = IDS_CONTROLLEDLOAD; break; } str.LoadString(strId); int index = m_comboTypes.AddString(str); if(index != -1) m_comboTypes.SetItemData(index, *pTypes); pTypes++; } m_comboTypes.SetCurSel(0); EnableEverything(); // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CPgSubLimit::OnSubnetTrafficDatarateLimited() { m_editDataRate.EnableWindow(TRUE); m_bFlowDataChanged = TRUE; } void CPgSubLimit::OnSubnetTrafficDatarateUnlimited() { m_editDataRate.EnableWindow(FALSE); m_bFlowDataChanged = TRUE; } void CPgSubLimit::OnSubnetTrafficPeakrateLimited() { m_editPeakRate.EnableWindow(TRUE); m_bFlowDataChanged = TRUE; } void CPgSubLimit::OnSubnetTrafficPeakrateUnlimited() { m_editPeakRate.EnableWindow(FALSE); m_bFlowDataChanged = TRUE; } void CPgSubLimit::OnSubnetTrafficTtdatarateLimited() { m_editTTDataRate.EnableWindow(TRUE); m_bFlowDataChanged = TRUE; } void CPgSubLimit::OnSubnetTrafficTtdatarateUnlimited() { m_editTTDataRate.EnableWindow(FALSE); m_bFlowDataChanged = TRUE; } void CPgSubLimit::OnSubnetTrafficTtpeakrateLimited() { m_editTTPeakRate.EnableWindow(TRUE); m_bFlowDataChanged = TRUE; } void CPgSubLimit::OnSubnetTrafficTtpeakrateUnlimited() { m_editTTPeakRate.EnableWindow(FALSE); m_bFlowDataChanged = TRUE; } void CPgSubLimit::EnableEverything() { UpdateData(); m_editDataRate.EnableWindow(m_nDataRateChoice); m_editPeakRate.EnableWindow(m_nPeakRateChoice); m_editTTDataRate.EnableWindow(m_nTTDataRateChoice); m_editTTPeakRate.EnableWindow(m_nTTPeakDataRateChoice); if(m_nServiceType != -1) // being edited m_comboTypes.EnableWindow(FALSE); } void CPgSubLimit::OnOK() { // TODO: Add extra validation here UINT cId = 0; UINT mId = 0; if(m_nDataRateChoice && m_nPeakRateChoice && m_uDataRate > m_uPeakRate) { cId = IDC_EDIT_GEN_PF_PEAKRATE; mId = IDS_ERR_PEAKRATE_LESS_RATE; } if(!cId && m_nTTDataRateChoice && m_nDataRateChoice && m_uDataRate > m_uTTDataRate) { cId = IDC_EDIT_GEN_TT_DATARATE; mId = IDS_ERR_TOTALRATE_LESS_RATE; } #if 0 // 367760 1 a-leeb ACS: Snap-in performin incorrect boundary checking if(!cId && m_nTTDataRateChoice && m_nPeakRateChoice && m_uPeakRate > m_uTTDataRate) { cId = IDC_EDIT_GEN_TT_DATARATE; mId = IDS_ERR_TOTALRATE_LESS_PEAKRATE; } #endif if(!cId && m_nTTPeakDataRateChoice && m_nPeakRateChoice && m_uPeakRate > m_uTTPeakRate) { cId = IDC_EDIT_GEN_TT_PEAKRATE; mId = IDS_ERR_TOTALPEAK_LESS_PEAK; } if(!cId && m_nTTDataRateChoice && m_nTTPeakDataRateChoice && m_uTTDataRate > m_uTTPeakRate) { cId = IDC_EDIT_GEN_TT_PEAKRATE; mId = IDS_ERR_TOTALPEAK_LESS_TOTALRATE; } if(cId) { CWnd* pWnd = GetDlgItem(cId); ASSERT(pWnd); GotoDlgCtrl( pWnd ); AfxMessageBox(mId); return ; } else { int index = m_comboTypes.GetCurSel(); if( index != CB_ERR) { m_nServiceType = m_comboTypes.GetItemData(index); } CACSDialog::OnOK(); } }