// TaskList.cpp : 实现文件 // #include "stdafx.h" #include "IVR.h" #include "InfoList.h" #include "IvrCore.h" #include "IvrFlowMgr.h" // CTaskList IMPLEMENT_DYNAMIC(CInfoList, CListCtrl) CInfoList::CInfoList() { } CInfoList::~CInfoList() { } BEGIN_MESSAGE_MAP(CInfoList, CListCtrl) END_MESSAGE_MAP() /***************************************************************** **【函数名称】 __indexItem **【函数功能】 索引任务 **【参数】 **【返回值】 *****************************************************************/ int CInfoList::__indexItem( int id ) { for (int i=0; i < GetItemCount(); i++) { if (GetItemData(i) == id) return i; } return -1; } /***************************************************************** **【函数名称】 __transState **【函数功能】 翻译状态 **【参数】 **【返回值】 *****************************************************************/ void CInfoList::__transState( IVR_FLOW_STATE State, CString& Data ) { switch(State) { case IVR_FLOW_STATE_FREE: Data = _T("空闲"); break; case IVR_FLOW_STATE_RUN: Data = _T("正在运行"); break; default: ASSERT(FALSE); Data = _T("未知状态"); break; } } /***************************************************************** **【函数名称】 __showTask **【函数功能】 显示任务 **【参数】 **【返回值】 *****************************************************************/ void CInfoList::__showInfo( Flow2Show& Info ) { int Item = GetItemCount(); CString Data; Data.Format(_T("%d"), Info.Id); InsertItem(Item, Data); __transState(Info.State, Data); SetItemText(Item, 1, Data); SetItemText(Item, 2, Info.NodeNote); SetItemData(Item, Info.Id); } /***************************************************************** **【函数名称】 __updateTaskState **【函数功能】 更新任务 **【参数】 **【返回值】 *****************************************************************/ void CInfoList::__updateState( int Item, Flow2Show& Info ) { CString Data; __transState(Info.State, Data); SetItemText(Item, 1, Data); SetItemText(Item, 2, Info.NodeNote); /*if(State == IVR_FLOW_STATE_FREE) DeleteItem(Item);*/ } /***************************************************************** **【函数名称】 format **【函数功能】 格式化控件 **【参数】 **【返回值】 *****************************************************************/ void CInfoList::format( void ) { CRect mRect; GetClientRect(&mRect); int length = mRect.right - mRect.left - 150; //加载日志列表 SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); InsertColumn(1, (LPCTSTR)_T("流程ID"), LVCFMT_CENTER, 50, -1); InsertColumn(1, (LPCTSTR)_T("流程状态"), LVCFMT_CENTER, 100, -1); InsertColumn(2, (LPCTSTR)_T("节点名称"), LVCFMT_CENTER, length, -1); } /***************************************************************** **【函数名称】 onTaskStateUpdated **【函数功能】 任务状态变化处理函数 **【参数】 **【返回值】 *****************************************************************/ void CInfoList::onStateUpdated(int id) { Flow2Show Info; Info.Id = id; int Item = __indexItem(id); if(CIvrCore::GetInstance().ivrFLowMgr().getFlowInfo(Info)) { if(Item != -1) __updateState(Item, Info); else __showInfo(Info); } else { if(Item != -1) DeleteItem(Item); } } // CTaskList 消息处理程序