| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- #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()
|