// ChannelList.cpp : 实现文件 // #include "stdafx.h" #include "AgentList.h" #include "../AcdCore.h" #include "../Agent.h" #include "../AgentOffice.h" // CChannelList IMPLEMENT_DYNAMIC(CAgentlList, CListCtrl) CAgentlList::CAgentlList() { } CAgentlList::~CAgentlList() { } BEGIN_MESSAGE_MAP(CAgentlList, CListCtrl) END_MESSAGE_MAP() /***************************************************************** **【函数名称】 __indexItem **【函数功能】 索引通道 **【参数】 **【返回值】 *****************************************************************/ int CAgentlList::__indexItem( UINT _itemNum ) { for (int i=0; i < GetItemCount(); i++) { if (GetItemData(i) == _itemNum) return i; } return -1; } /***************************************************************** **【函数名称】 __transStateAgentState **【函数功能】 翻译状态 **【参数】 **【返回值】 *****************************************************************/ void CAgentlList::__transStateAgentState(AGENT_STATE _state, CString& Data) { switch(_state) { case AGENT_STATE_LOGING: Data = _T("登录中"); break; case AGENT_STATE_FREE: Data = _T("空闲"); break; case AGENT_STATE_BUSY: Data = _T("通话中"); break; case AGENT_STATE_POST_PROCESSING: Data = _T("话后处理"); break; case AGENT_STATE_REPOSE: Data = _T("小休"); break; case AGENT_STATE_REQUESTED: Data = _T("被请求"); break; case AGENT_STATE_LOGOUT: Data = _T("被请求"); break; case AGENT_STATE_UNKNOWN: default: Data = _T("未知"); break; } } /***************************************************************** **【函数名称】 __transStateAgentType **【函数功能】 翻译座席类型 **【参数】 **【返回值】 *****************************************************************/ void CAgentlList::__transStateAgentType(AGENT_TYPE _type, CString& Data) { switch(_type) { case AGENT_TYPE_NORMAL: Data = _T("普通"); break; case AGENT_TYPE_MONITOR: Data = _T("普通班长"); break; case AGENT_TYPE_NOQUEUE: Data = _T("非排队"); break; case AGENT_TYPE_NORMAL_TEL: Data = _T("纯电话"); break; case AGENT_TYPE_MONITOR_TEL: Data = _T("纯电话班长"); break; default: ASSERT(FALSE); Data = _T("普通"); break; } } /***************************************************************** **【函数名称】 __showTask **【函数功能】 显示任务 **【参数】 **【返回值】 *****************************************************************/ void CAgentlList::__showAgent(Agent2Show& Info) { CString Data; Data.Format(_T("%d"), Info.AgentId); InsertItem(0, Data); Data.Format(_T("%d"), Info.ExtId); SetItemText(0, 1, Data); SetItemText(0, 2, Info.GroupNo); Data = _T(""); __transStateAgentType((AGENT_TYPE)Info.AgentType, Data); SetItemText(0, 3, Data); Data = _T(""); __transStateAgentState((AGENT_STATE)Info.State, Data); SetItemText(0, 4, Data); SetItemData(0, Info.AgentId); } /***************************************************************** **【函数名称】 __updateTaskState **【函数功能】 更新任务 **【参数】 **【返回值】 *****************************************************************/ void CAgentlList::__updateAgentlState(int Item, Agent2Show& Info) { CString Data = _T(""); /*Data.Format(_T("%d"), Info->ExtId); SetItemText(Item, 1, Data); Data = _T(""); Data.Format(_T("%d"), Info.GroupNo); SetItemText(Item, 2, Data); __transStateAgentType((AGENT_TYPE)Info.AgentType, Data); SetItemText(Item, 3, Data);*/ __transStateAgentState((AGENT_STATE)Info.State, Data); SetItemText(Item, 4, Data); } /***************************************************************** **【函数名称】 format **【函数功能】 格式化控件 **【参数】 **【返回值】 *****************************************************************/ void CAgentlList::format( void ) { CRect mRect; GetClientRect(&mRect); int length = mRect.right - mRect.left; int perLength = length / 5; //加载日志列表 SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); InsertColumn(0, (LPCTSTR)_T("座席工号"), LVCFMT_LEFT, perLength, -1); InsertColumn(1, (LPCTSTR)_T("关联分机号"), LVCFMT_LEFT, perLength, -1); InsertColumn(2, (LPCTSTR)_T("座席组号"), LVCFMT_LEFT, perLength, -1); InsertColumn(3, (LPCTSTR)_T("座席类型"), LVCFMT_LEFT, perLength, -1); InsertColumn(4, (LPCTSTR)_T("座席状态"), LVCFMT_LEFT, perLength, -1); } /***************************************************************** **【函数名称】 onTaskStateUpdated **【函数功能】 任务状态变化处理函数 **【参数】 **【返回值】 *****************************************************************/ void CAgentlList::onAgentStateUpdated(UINT AgentNo) { Agent2Show Info; Info.AgentId = AgentNo; int Item = __indexItem(AgentNo); if(CAcdCore::GetInstance().getAgentOffice().getAgentInfo(Info)) { if(Item != -1) __updateAgentlState(Item, Info); else __showAgent(Info); } else { if(Item != -1) DeleteItem(Item); } } /***************************************************************** **【函数名称】 onAgentLogout **【函数功能】 座席签出界面处理 **【参数】 **【返回值】 *****************************************************************/ void CAgentlList::onAgentLogout( UINT AgentNo ) { int Item = __indexItem(AgentNo); if(Item != -1) DeleteItem(Item); } // CChannelList 消息处理程序