// DialogSysCfg.cpp : 实现文件 // #include "stdafx.h" #include "FirstStep.h" #include "DialogCfgSys.h" #include "Config.h" // CDialogSysCfg 对话框 IMPLEMENT_DYNAMIC(CDialogCfgSys, CCfgDialog) CDialogCfgSys::CDialogCfgSys(CWnd* pParent /*=NULL*/) : CCfgDialog(2, CDialogCfgSys::IDD, pParent) { } CDialogCfgSys::~CDialogCfgSys() { } bool CDialogCfgSys::__isIvrFlowExisted( const CString& IvrFlow ) { CString FlowName; for(int i = 0; i < m_ListFlow.GetCount(); ++i) { m_ListFlow.GetText(i, FlowName); if(FlowName == IvrFlow) return true; } return false; } void CDialogCfgSys::DoDataExchange(CDataExchange* pDX) { CCfgDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDTEX_RCD_PATH, m_EdtexRcdPath); DDX_Control(pDX, IDC_CMB_DEV_TYPE, m_CmbDevType); DDX_Control(pDX, IDC_CMB_PP_TYPE, m_CmbPPType); DDX_Control(pDX, IDC_CMB_QUEUE_TYPE, m_CmbQueueType); DDX_Control(pDX, IDC_CMB_RCD_TYPE, m_CmbRcdType); DDX_Control(pDX, IDC_EDT_ACD_PORT, m_EdtAcdPort); DDX_Control(pDX, IDC_EDT_AGENT_LOCK_PERIOD, m_EdtAgentLockPeriod); DDX_Control(pDX, IDC_EDT_CTI_PORT, m_EdtCtiPort); DDX_Control(pDX, IDC_EDT_FLOW_COUNT, m_EdtFlowCount); DDX_Control(pDX, IDC_EDT_PPT, m_EdtPpt); DDX_Control(pDX, IDC_EDTEX_FLOW, m_EdtexFlowPath); DDX_Control(pDX, IDC_EDTEX_LEAVEWORD, m_EdtexLeaveword); DDX_Control(pDX, IDC_EDTEX_LOG_PATH, m_EdtexLogPath); DDX_Control(pDX, IDC_IPADDR_CTI, m_AddrCti); DDX_Control(pDX, IDC_LIST_FLOW, m_ListFlow); DDX_Control(pDX, IDC_CMB_TTS_TYPE, m_CmbTtsType); DDX_Control(pDX, IDC_EDT_MAX_CONCURRENCY, m_EdtMaxConcurrency); DDX_Control(pDX, IDC_EDTEX_TTS_BUF_PATH, m_EdtexTtsBufPath); DDX_Control(pDX, IDC_CMB_RCD_FORMAT, m_CmdRcdFormat); } BEGIN_MESSAGE_MAP(CDialogCfgSys, CCfgDialog) ON_WM_SHOWWINDOW() ON_BN_CLICKED(IDC_BTN_ADD, &CDialogCfgSys::OnBnClickedBtnAdd) ON_BN_CLICKED(IDC_BTN_DEL, &CDialogCfgSys::OnBnClickedBtnDel) END_MESSAGE_MAP() // CDialogSysCfg 消息处理程序 BOOL CDialogCfgSys::OnInitDialog() { CCfgDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 CConfig& config = CConfig::GetInstance(); // CTI配置 m_AddrCti.SetWindowText(config.ctiAddr()); m_EdtCtiPort.SetWindowText(config.ctiPort()); m_CmbRcdType.InsertString(0, RCD_TYPE_TRUNK); m_CmbRcdType.InsertString(1, RCD_TYPE_PARALLEL); m_CmbRcdType.SetCurSel(config.recType()); m_EdtexRcdPath.SetWindowText(config.recPath()); m_CmdRcdFormat.InsertString(0, _T("mp3")); m_CmdRcdFormat.InsertString(1, _T("wav")); m_CmdRcdFormat.SetCurSel(config.recFormat()); m_CmbDevType.InsertString(DEV_TYPE_IPO, DEVICE_TYPE_IPO); m_CmbDevType.InsertString(DEV_TYPE_EHANGCOM, DEVICE_TYPE_EHANGCOM); m_CmbDevType.InsertString(DEV_TYPE_FS, DEVICE_TYPE_FS); m_CmbDevType.SetCurSel(config.devType()); // ACD配置 m_EdtAcdPort.SetWindowText(config.acdPort()); m_EdtAgentLockPeriod.SetWindowText(config.agentLockedPeriod()); m_CmbPPType.InsertString(0, PP_TYPE_AUTO); m_CmbPPType.InsertString(1, PP_TYPE_MANUAL); m_CmbPPType.SetCurSel(config.ppTriggeredType()); m_EdtPpt.SetWindowText(config.ppTime()); m_CmbQueueType.InsertString(0, QUEUE_TYPE_VIP); m_CmbQueueType.InsertString(1, QUEUE_TYPE_FIFS); m_CmbQueueType.SetCurSel(config.queueType()); // IVR配置 m_EdtexLeaveword.SetWindowText(config.leaveWordPath()); m_EdtFlowCount.SetWindowText(config.ivrFlowCount()); IvrFlowList& List = config.ivrFlowList(); POSITION Pos = List.GetHeadPosition(); while(Pos != NULL) { m_ListFlow.AddString(List.GetNext(Pos)); } // 其他配置 m_EdtexLogPath.SetWindowText(config.logFilePath()); m_EdtMaxConcurrency.SetWindowText(config.maxConcurrency()); m_CmbTtsType.InsertString(TTS_NONE, TTS_TYPE_NONE); m_CmbTtsType.InsertString(TTS_IFLY, TTS_TYPE_IFLY); m_CmbTtsType.InsertString(TTS_JT, TTS_TYPE_JT); m_CmbTtsType.InsertString(TTS_IBM, TTS_TYPE_IBM); m_CmbTtsType.SetCurSel(config.ttsType()); m_EdtexTtsBufPath.SetWindowText(config.ttsBufferPath()); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CDialogCfgSys::OnShowWindow(BOOL bShow, UINT nStatus) { CCfgDialog::OnShowWindow(bShow, nStatus); // TODO: 在此处添加消息处理程序代码 if(bShow) m_AddrCti.SetFocus(); } void CDialogCfgSys::OnBnClickedBtnAdd() { // TODO: 在此添加控件通知处理程序代码 CString FlowName; m_EdtexFlowPath.GetWindowText(FlowName); if(!FlowName.IsEmpty()) { if(__isIvrFlowExisted(FlowName)) { MessageBox(_T("该流程已添加"), MSGBOX_TIP_CAPTION); } else { m_ListFlow.AddString(FlowName); m_EdtexFlowPath.SetWindowText(_T("")); } } } void CDialogCfgSys::OnBnClickedBtnDel() { // TODO: 在此添加控件通知处理程序代码 CString FlowName; int Sel = m_ListFlow.GetCurSel(); if(Sel == LB_ERR) return; m_ListFlow.DeleteString(Sel); } BOOL CDialogCfgSys::PreTranslateMessage(MSG* pMsg) { // TODO: 在此添加专用代码和/或调用基类 if((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN)) return TRUE; return CCfgDialog::PreTranslateMessage(pMsg); } /***************************************************************** **【函数名称】 upload **【函数功能】 上传配置项 **【参数】 **【返回值】 ****************************************************************/ void CDialogCfgSys::upload( void ) { CString CfgInfo; CConfig& config = CConfig::GetInstance(); // CTI m_AddrCti.GetWindowText(CfgInfo); config.ctiAddr() = CfgInfo; m_EdtCtiPort.GetWindowText(CfgInfo); config.ctiPort() = CfgInfo; config.recType() = (RecordType)m_CmbRcdType.GetCurSel(); config.recFormat() = (RecordFormat)m_CmdRcdFormat.GetCurSel(); m_EdtexRcdPath.GetWindowText(CfgInfo); config.recPath() = CfgInfo; config.devType() = (DEV_TYPE)m_CmbDevType.GetCurSel(); // ACD m_EdtAcdPort.GetWindowText(CfgInfo); config.acdPort() = CfgInfo; m_EdtAgentLockPeriod.GetWindowText(CfgInfo); config.agentLockedPeriod() = CfgInfo; config.ppTriggeredType() = (PPTriggeredType)m_CmbPPType.GetCurSel(); m_EdtPpt.GetWindowText(CfgInfo); config.ppTime() = CfgInfo; config.queueType() = (QUEUE_TYPE)m_CmbQueueType.GetCurSel(); // IVR m_EdtexLeaveword.GetWindowText(CfgInfo); config.leaveWordPath() = CfgInfo; m_EdtFlowCount.GetWindowText(CfgInfo); config.ivrFlowCount() = CfgInfo; config.ivrFlowList().RemoveAll(); for(int i = 0; i < m_ListFlow.GetCount(); ++i) { m_ListFlow.GetText(i, CfgInfo); config.ivrFlowList().AddTail(CfgInfo); } // other m_EdtexLogPath.GetWindowText(CfgInfo); config.logFilePath() = CfgInfo; m_EdtMaxConcurrency.GetWindowText(CfgInfo); config.maxConcurrency() = CfgInfo; m_EdtexTtsBufPath.GetWindowText(CfgInfo); config.ttsBufferPath() = CfgInfo; config.ttsType() = (TTS_TYPE)m_CmbTtsType.GetCurSel(); }