| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- #include "StdAfx.h"
- #include "ViewMgr.h"
- #include "resource.h"
- #include "DisplayWnd.h"
- #include "Config.h"
- #include "MsgCenter.h"
- #include "ViewExten.h"
- #include "ViewTrunk.h"
- #include "ViewVoip.h"
- #include "ViewIvr.h"
- #include "ViewFax.h"
- SINGLETON_IMPLEMENT(CViewMgr)
- CViewMgr::CViewMgr(void)
- {
- }
- CViewMgr::~CViewMgr(void)
- {
- __free();
- }
- /*****************************************************************
- **【函数名称】 __free
- **【函数功能】 释放资源
- **【参数】
- **【返回值】
- ****************************************************************/
- void CViewMgr::__free(void)
- {
- UINT Key = 0;
- CViewResBase *pView = NULL;
- POSITION pos = m_ViewMap.GetStartPosition();
- while (pos != NULL)
- {
- m_ViewMap.GetNextAssoc(pos, Key, pView);
- if (pView != NULL)
- delete pView;
- } // end while
- m_ViewMap.RemoveAll();
- }
- /*****************************************************************
- **【函数名称】 __showResView
- **【函数功能】 显示资源视图
- **【参数】
- **【返回值】
- ****************************************************************/
- void CViewMgr::__showResView(CViewResBase* pView)
- {
- if (m_ViewMap.IsEmpty())
- return;
- ViewMap::CPair* pPair = m_ViewMap.PGetFirstAssoc();
- ASSERT(pPair != NULL);
- pView->showTogether(pPair->value);
- }
- /*****************************************************************
- **【函数名称】 __procResType
- **【函数功能】 设备资源类型初始化函数
- **【参数】 Type 设备资源类型
- **【返回值】
- ****************************************************************/
- void CViewMgr::procResType(UINT Type)
- {
- CViewResBase* pView = NULL;
- UINT NameId;
- UINT ListId;
- if (m_ViewMap.Lookup(Type, pView)) // ych
- {
- return;
- }
- switch (Type)
- {
- case DEV_RES_TYPE_EXT: // 内线
- {
- pView = new CViewExten();
- m_ViewRes.newRes(DEV_RES_TYPE_EXT);
- NameId = IDS_STR_VIEW_EXT;
- ListId = IDC_LIST_EXT;
- m_pWnd->InsertMenuItem(ID_MENU_LOG, ID_MENU_VIEW_EXT, IDS_STR_VIEW_EXT);
- }
- break;
- case DEV_RES_TYPE_TRUNK: // 外线
- {
- pView = new CViewTrunk();
- m_ViewRes.newRes(DEV_RES_TYPE_TRUNK);
- NameId = IDS_STR_VIEW_TRUNK;
- ListId = IDC_LIST_TRUNK;
- m_pWnd->InsertMenuItem(ID_MENU_LOG, ID_MENU_VIEW_TRUNK, IDS_STR_VIEW_TRUNK);
- }
- break;
- case DEV_RES_TYPE_VOIP: // VoIP
- {
- pView = new CViewVoip();
- m_ViewRes.newRes(DEV_RES_TYPE_VOIP);
- NameId = IDS_STR_VIEW_VOIP;
- ListId = IDC_LIST_VOIP;
- m_pWnd->InsertMenuItem(ID_MENU_LOG, ID_MENU_VIEW_VOIP, IDS_STR_VIEW_VOIP);
- }
- break;
- case DEV_RES_TYPE_IVR: // IVR线路
- {
- pView = new CViewIvr();
- m_ViewRes.newRes(DEV_RES_TYPE_IVR);
- NameId = IDS_STR_VIEW_IVR;
- ListId = IDC_LIST_IVR;
- m_pWnd->InsertMenuItem(ID_MENU_LOG, ID_MENU_VIEW_IVR, IDS_STR_VIEW_IVR);
- }
- break;
- case DEV_RES_TYPE_FAX: // 传真
- {
- pView = new CViewFax();
- m_ViewRes.newRes(DEV_RES_TYPE_FAX);
- NameId = IDS_STR_VIEW_FAX;
- ListId = IDC_LIST_FAX;
- m_pWnd->InsertMenuItem(ID_MENU_LOG, ID_MENU_VIEW_FAX, IDS_STR_VIEW_FAX);
- }
- break;
- //case DEV_RES_TYPE_CONFERENCE: // 会议
- // {
- // pView = new CViewMeeting();
- // m_ViewRes.newRes(DEV_RES_TYPE_CONFERENCE);
- // NameId = IDS_STR_VIEW_MEETING;
- // ListId = IDC_LIST_MEETING;
- // m_pWnd->InsertMenuItem(ID_MENU_LOG, ID_MENU_VIEW_MEETING, IDS_STR_VIEW_MEETING);
- // }
- // break;
- default:
- break;
- } // end switch
- // 生成并存储设备资源类型节点
- if (pView != NULL)
- {
- pView->create(m_pWnd, NameId, ListId);
- __showResView(pView);
- m_ViewMap.SetAt(Type, pView);
- }
- }
- /*****************************************************************
- **【函数名称】 __procResDetail
- **【函数功能】 资源明细处理函数
- **【参数】 pResDetail 资源明细
- **【返回值】
- ****************************************************************/
- void CViewMgr::__procResDetail(EventResDetail *pResDetail)
- {
- ASSERT(pResDetail != NULL);
- CViewResBase* pView = NULL;
- if (m_ViewMap.Lookup(pResDetail->nResType, pView))
- {
- ASSERT(pView != NULL);
- pView->onResDetail(pResDetail);
- }
- }
- /*****************************************************************
- **【函数名称】 __procResState
- **【函数功能】 资源状态变化处理函数
- **【参数】 pResStatus 资源状态
- **【返回值】
- ****************************************************************/
- void CViewMgr::__procResState(EventResStatus *pResStatus)
- {
- ASSERT(pResStatus != NULL);
- CViewResBase* pView = NULL;
- if (m_ViewMap.Lookup(pResStatus->nResType, pView))
- {
- ASSERT(pView != NULL);
- pView->onResState(pResStatus);
- }
- }
- /*****************************************************************
- **【函数名称】 setup
- **【函数功能】 视图管理器创建
- **【参数】
- **【返回值】
- ****************************************************************/
- bool CViewMgr::setup(CDisplayWnd* pWnd)
- {
- ASSERT(pWnd != NULL);
- m_pWnd = pWnd;
- if (!m_ViewLog.create(pWnd))
- {
- AfxMessageBox(_T("日志视图创建失败!"));
- return false;
- }
- ILogger::getInstance().init(&m_ViewLog, LOG_DEV_CTI, CConfig::GetInstance().logFilePath());
- ILogger::getInstance().start();
- if (!m_ViewRes.create(pWnd))
- {
- AfxMessageBox(_T("设备资源视图创建失败!"));
- return false;
- }
- CMsgCenter& MsgCenter = CMsgCenter::GetInstance();
- MsgCenter.regist(DEV_EVENT_RES_TYPE, this);
- MsgCenter.regist(DEV_EVENT_RES_DETAIL, this);
- MsgCenter.regist(DEV_EVENT_RES_STATUS, this);
- return true;
- }
- /*****************************************************************
- **【函数名称】 showResView
- **【函数功能】 显示指定资源视图
- **【参数】
- **【返回值】
- ****************************************************************/
- bool CViewMgr::showResView(UINT ResType)
- {
- CViewResBase* pView = NULL;
- if (m_ViewMap.Lookup(ResType, pView))
- {
- ASSERT(pView != NULL);
- pView->show();
- return true;
- }
- else
- return false;
- }
- /*****************************************************************
- **【函数名称】 onMessage
- **【函数功能】 消息事件处理函数
- **【参数】 MsgType: 消息事件类型
- lpContent: 消息内容
- **【返回值】
- ****************************************************************/
- void CViewMgr::onMessage(UINT MsgType, const PARAM lpContent)
- {
- if (lpContent == NULL) return;
- switch (MsgType)
- {
- case DEV_EVENT_RES_TYPE: // 设备资源类型
- {
- EventResType* pResType = (EventResType*)lpContent;
- #ifdef _USE_EHANGCOM
- AfxGetMainWnd()->PostMessage(WM_CORE_EVENT, CORE_EVENT_DEV_RES_TYPE, pResType->nResType);
- #else
- AfxGetMainWnd()->SendMessage(WM_CORE_EVENT, CORE_EVENT_DEV_RES_TYPE, pResType->nResType);
- #endif
- }
- break;
- case DEV_EVENT_RES_DETAIL: // 设备资源明细
- {
- EventResDetail* pResDetail = (EventResDetail*)lpContent;
- __procResDetail(pResDetail);
- }
- break;
- case DEV_EVENT_RES_STATUS: // 设备资源状态变化
- {
- EventResStatus* pResStatus = (EventResStatus*)lpContent;
- __procResState(pResStatus);
- }
- break;
- default:
- break;
- }
- }
|