#include "StdAfx.h" #include "ViewDti.h" #include "resource.h" #include "ViewGroup.h" #include "MC.h" #include "SpanChannel.h" IMPLEMENT_DYNAMIC(CViewDti, CViewResBase) CViewDti::CViewDti(void) { } CViewDti::~CViewDti(void) { } /***************************************************************** **【函数名称】 _mapStateToString **【函数功能】 把资源状态装换为CString类型 **【参数】 **【返回值】 ****************************************************************/ void CViewDti::_mapStateToString( UINT State, CString& StrState ) { switch(State) { case VIRTUAL_LINE_STATE_DISABLED: StrState = _T("disabled"); break; case VIRTUAL_LINE_STATE_FREE: StrState = _T("free"); break; case VIRTUAL_LINE_STATE_INIT: StrState = _T("init"); break; case VIRTUAL_LINE_STATE_DIALING: StrState = _T("dialing"); break; case VIRTUAL_LINE_STATE_RING_BACK: StrState = _T("ringback"); break; case VIRTUAL_LINE_STATE_ALERTING: StrState = _T("alerting"); break; case VIRTUAL_LINE_STATE_TALKING: StrState = _T("talking"); break; default: StrState = _T("unknown"); } } /***************************************************************** **【函数名称】 _createControl **【函数功能】 创建控件 **【参数】 **【返回值】 ****************************************************************/ bool CViewDti::_createControl( void ) { //创建控件 if(!Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP, CRect(0, 0, 0, 0), &m_Pane, IDC_LIST_TRUNK)) { TRACE0("创建DTI控件失败\n"); return false; } return true; } /***************************************************************** **【函数名称】 _addRes **【函数功能】 添加资源处理函数 **【参数】 **【返回值】 ****************************************************************/ void CViewDti::_addRes( DEV_RES_ID& ResId ) { CString Name; // 查找或创建Dev PVIEW_ITEM_TYPE pDev = _getDev(ResId.NodeNo); if(pDev == NULL) { Name.Format(_T("%s%u"), UI_ITEM_NAME_DEV, ResId.NodeNo); pDev = new CMFCPropertyGridProperty(Name, ResId.NodeNo); ASSERT(pDev != NULL); AddProperty(pDev, FALSE, FALSE); } // 查找或创建Board PVIEW_ITEM_TYPE pBoard = _getBoard(pDev, ResId.BoardNo); if(pBoard == NULL) { Name.Format(_T("%s%u"), UI_ITEM_NAME_BOARD, ResId.BoardNo); pBoard = new CMFCPropertyGridProperty(Name, ResId.BoardNo); ASSERT(pBoard != NULL); pDev->AddSubItem(pBoard); } // 查找或创建Span CViewGroup* pSpan = _getResGroup(ResId); if(pSpan == NULL) { Name.Format(_T("%s%u"), UI_ITEM_NAME_SPAN, ResId.SpanNo); pSpan = new CViewGroup(Name, ResId.SpanNo); ASSERT(pSpan != NULL); pSpan->setResId(ResId); _addResGroup(pSpan); pBoard->AddSubItem(pSpan); } // 创建资源 Name.Format(_T("%u"), ResId.ChanNo); PVIEW_ITEM_TYPE pRes = new CMFCPropertyGridProperty(Name, ResId.ChanNo); ASSERT(pRes != NULL); pSpan->add(ResId.ChanNo, pRes); Name.Format(_T("%s"), UI_ITEM_NAME_STATE); PVIEW_ITEM_TYPE pState = new CMFCPropertyGridProperty(Name, _T("free")); ASSERT(pState != NULL); pState->AllowEdit(FALSE); pRes->AddSubItem(pState); Name.Format(_T("%s"), UI_ITEM_NAME_CALLER); PVIEW_ITEM_TYPE pCaller = new CMFCPropertyGridProperty(Name, _T("")); ASSERT(pCaller != NULL); pCaller->AllowEdit(FALSE); pRes->AddSubItem(pCaller); Name.Format(_T("%s"), UI_ITEM_NAME_CALLEE); PVIEW_ITEM_TYPE pCallee = new CMFCPropertyGridProperty(Name, _T("")); ASSERT(pCallee != NULL); pCallee->AllowEdit(FALSE); pRes->AddSubItem(pCallee); } /***************************************************************** **【函数名称】 onResState **【函数功能】 资源状态处理函数 **【参数】 **【返回值】 ****************************************************************/ void CViewDti::onResState( DEV_RES_ID& ResId ) { CViewGroup* pSpan = _getResGroup(ResId); ASSERT(pSpan != NULL); if(pSpan == NULL) return; PVIEW_ITEM_TYPE pRes = pSpan->getSubItem(ResId.ChanNo); ASSERT(pRes != NULL); if(pRes == NULL) return; CSpanChannel* pChan = CMC::GetInstance().findSpanCh(ResId); ASSERT(pChan != NULL); if(pChan == NULL) return; PVIEW_ITEM_TYPE pItem = pRes->GetSubItem(0); ASSERT(pItem != NULL); pItem->SetValue(pChan->getStateStr()); pItem = pRes->GetSubItem(1); ASSERT(pItem != NULL); pItem->SetValue((LPCTSTR)pChan->getCaller()); pItem = pRes->GetSubItem(2); ASSERT(pItem != NULL); pItem->SetValue((LPCTSTR)pChan->getCallee()); } BEGIN_MESSAGE_MAP(CViewDti, CViewResBase) END_MESSAGE_MAP()