| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- // DialogCfgIpo.cpp : 实现文件
- //
- #include "stdafx.h"
- #include "FirstStep.h"
- #include "DialogCfgIpo.h"
- #include "Config.h"
- // CDialogCfgIpo 对话框
- IMPLEMENT_DYNAMIC(CDialogCfgIpo, CDialogEx)
- CDialogCfgIpo::CDialogCfgIpo(CWnd* pParent /*=NULL*/)
- : CCfgDialog(2, CDialogCfgIpo::IDD, pParent)
- {
- }
- CDialogCfgIpo::~CDialogCfgIpo()
- {
- }
- /*****************************************************************
- **【函数名称】 __initUIControl
- **【函数功能】 初始化控件
- **【参数】
- **【返回值】
- ****************************************************************/
- void CDialogCfgIpo::__initUIControl( void )
- {
- m_ComboIpoExtType.InsertString(0, CONST_IPO_LINE_TYPE_EXT);
- m_ComboIpoExtType.InsertString(1, CONST_IPO_LINE_TYPE_IVR);
- m_ComboIpoExtType.InsertString(2, CONST_IPO_LINE_TYPE_FAX);
- m_ComboIpoExtType.SetCurSel(0);
- m_ComboIpoTrunkType.InsertString(0, CONST_IPO_LINE_TYPE_DT);
- m_ComboIpoTrunkType.InsertString(1, CONST_IPO_LINE_TYPE_H323);
- m_ComboIpoTrunkType.InsertString(2, CONST_IPO_LINE_TYPE_SIP);
- m_ComboIpoTrunkType.SetCurSel(0);
- CRect Rect;
- m_ListIpoExt.GetClientRect(&Rect);
- int length = Rect.right - Rect.left;
- m_ListIpoExt.InsertColumn(0, _T("线路号"), LVCFMT_LEFT, length / 3);
- m_ListIpoExt.InsertColumn(1, _T("线路类型"), LVCFMT_LEFT, length / 3);
- m_ListIpoExt.InsertColumn(2, _T("关联VS线路"), LVCFMT_LEFT, length / 3);
- m_ListIpoTrunk.GetClientRect(&Rect);
- length = Rect.right - Rect.left;
- m_ListIpoTrunk.InsertColumn(0, _T("线路号"), LVCFMT_LEFT, length / 3);
- m_ListIpoTrunk.InsertColumn(1, _T("线路类型"), LVCFMT_LEFT, length / 3);
- m_ListIpoTrunk.InsertColumn(2, _T("关联VS线路"), LVCFMT_LEFT, length / 3);
- }
- /*****************************************************************
- **【函数名称】 __loadIpoLineCfg
- **【函数功能】 加载IPO线路配置
- **【参数】
- **【返回值】
- ****************************************************************/
- void CDialogCfgIpo::__loadIpoLineCfg( void )
- {
- // IPO分机线路
- CIpoLineList& IpoLineList = CConfig::GetInstance().ipoLineList();
- POSITION Pos = IpoLineList.GetHeadPosition();
- while(Pos)
- {
- IpoLine* pLine = IpoLineList.GetNext(Pos);
- ASSERT(pLine != NULL);
- if(pLine->LineType == CONST_IPO_LINE_TYPE_EXT
- || pLine->LineType == CONST_IPO_LINE_TYPE_IVR
- || pLine->LineType == CONST_IPO_LINE_TYPE_FAX)
- {
- int Index = m_ListIpoExt.GetItemCount();
- m_ListIpoExt.InsertItem(Index, pLine->LineNO);
- m_ListIpoExt.SetItemText(Index, 1, pLine->LineType);
- m_ListIpoExt.SetItemText(Index, 2, pLine->AssoVsLineNO);
- }
- else
- {
- int Index = m_ListIpoTrunk.GetItemCount();
- m_ListIpoTrunk.InsertItem(Index, pLine->LineNO);
- m_ListIpoTrunk.SetItemText(Index, 1, pLine->LineType);
- m_ListIpoTrunk.SetItemText(Index, 2, pLine->AssoVsLineNO);
- }
- }
- }
- /*****************************************************************
- **【函数名称】 __uploadIpoLineCfg
- **【函数功能】 上传IPO线路配置
- **【参数】
- **【返回值】
- ****************************************************************/
- void CDialogCfgIpo::__uploadIpoLineCfg( void )
- {
- // IPO分机线路
- CIpoLineList& IpoLineList = CConfig::GetInstance().ipoLineList();
- IpoLineList.Free();
- int Count = m_ListIpoExt.GetItemCount();
- for(int i = 0; i < Count; ++i)
- {
- IpoLine* pExten = new IpoLine;
- ASSERT(pExten != NULL);
- pExten->LineNO = m_ListIpoExt.GetItemText(i, 0);
- pExten->LineType = m_ListIpoExt.GetItemText(i, 1);
- pExten->AssoVsLineNO = m_ListIpoExt.GetItemText(i, 2);
- IpoLineList.AddTail(pExten);
- }
- // IPO中继线路
- Count = m_ListIpoTrunk.GetItemCount();
- for(int i = 0; i < Count; ++i)
- {
- IpoLine* pTrunk = new IpoLine;
- ASSERT(pTrunk != NULL);
- pTrunk->LineNO = m_ListIpoTrunk.GetItemText(i, 0);
- pTrunk->LineType = m_ListIpoTrunk.GetItemText(i, 1);
- pTrunk->AssoVsLineNO = m_ListIpoTrunk.GetItemText(i, 2);
- IpoLineList.AddTail(pTrunk);
- }
- }
- void CDialogCfgIpo::DoDataExchange(CDataExchange* pDX)
- {
- CDialogEx::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_COMBO_IPO_EXT_TYPE, m_ComboIpoExtType);
- DDX_Control(pDX, IDC_LIST_IPO_EXT, m_ListIpoExt);
- DDX_Control(pDX, IDC_LIST_IPO_TRUNK, m_ListIpoTrunk);
- DDX_Control(pDX, IDC_IPADDR_IPO, m_AddrIpo);
- DDX_Control(pDX, IDC_EDT_IPO_PWD, m_EdtIpoPwd);
- DDX_Control(pDX, IDC_EDT_IPOLINK_PORT, m_EdtIpoLinkPort);
- DDX_Control(pDX, IDC_COMBO_IPO_TRUNK_TYPE, m_ComboIpoTrunkType);
- }
- /*****************************************************************
- **【函数名称】 upload
- **【函数功能】 上传配置项
- **【参数】
- **【返回值】
- ****************************************************************/
- void CDialogCfgIpo::upload( void )
- {
- CString CfgInfo;
- CConfig& config = CConfig::GetInstance();
- m_AddrIpo.GetWindowText(CfgInfo);
- config.ipoAddr() = CfgInfo;
- m_EdtIpoPwd.GetWindowText(CfgInfo);
- config.ipoPwd() = CfgInfo;
- m_EdtIpoLinkPort.GetWindowText(CfgInfo);
- config.ipoLinkPort() = CfgInfo;
- __uploadIpoLineCfg();
- }
- BEGIN_MESSAGE_MAP(CDialogCfgIpo, CCfgDialog)
- ON_WM_SHOWWINDOW()
- ON_BN_CLICKED(IDC_BTN_IPO_EXT_ADD, &CDialogCfgIpo::OnBnClickedBtnIpoExtAdd)
- ON_BN_CLICKED(IDC_BTN_IPO_EXT_DEL, &CDialogCfgIpo::OnBnClickedBtnIpoExtDel)
- ON_BN_CLICKED(IDC_BTN_IPO_TRUNK_ADD, &CDialogCfgIpo::OnBnClickedBtnIpoTrunkAdd)
- ON_BN_CLICKED(IDC_BTN_IPO_TRUNK_DEL, &CDialogCfgIpo::OnBnClickedBtnIpoTrunkDel)
- END_MESSAGE_MAP()
- // CDialogCfgIpo 消息处理程序
- BOOL CDialogCfgIpo::OnInitDialog()
- {
- CCfgDialog::OnInitDialog();
- // TODO: 在此添加额外的初始化
- __initUIControl();
- CConfig& config = CConfig::GetInstance();
- m_AddrIpo.SetWindowText(config.ipoAddr());
- m_EdtIpoPwd.SetWindowText(config.ipoPwd());
- m_EdtIpoLinkPort.SetWindowText(config.ipoLinkPort());
- __loadIpoLineCfg();
- return TRUE; // return TRUE unless you set the focus to a control
- // 异常: OCX 属性页应返回 FALSE
- }
- BOOL CDialogCfgIpo::PreTranslateMessage( MSG* pMsg )
- {
- // TODO: 在此添加专用代码和/或调用基类
- if((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN))
- return TRUE;
- return CCfgDialog::PreTranslateMessage(pMsg);
- }
- void CDialogCfgIpo::OnShowWindow( BOOL bShow, UINT nStatus )
- {
- CCfgDialog::OnShowWindow(bShow, nStatus);
- // TODO: 在此处添加消息处理程序代码
- if(bShow)
- m_AddrIpo.SetFocus();
- }
- void CDialogCfgIpo::OnBnClickedBtnIpoExtAdd()
- {
- // TODO: 在此添加控件通知处理程序代码
- UINT ExtStartId = GetDlgItemInt(IDC_EDT_IPO_EXT_START_NUM);
- if(ExtStartId == 0)
- {
- MessageBox(_T("请输入起始分机线路号!"));
- GetDlgItem(IDC_EDT_IPO_EXT_START_NUM)->SetFocus();
- return;
- }
- UINT Count = GetDlgItemInt(IDC_EDT_IPO_EXT_COUNT);
- if(Count < 1 || Count > 99)
- {
- MessageBox(_T("分机线路数需在1至99之间!"));
- GetDlgItem(IDC_EDT_IPO_EXT_COUNT)->SetFocus();
- return;
- }
- CString strAssoVsLineNoStart;
- GetDlgItemText(IDC_EDT_IPO_EXT_ASSO_LINE, strAssoVsLineNoStart);
- UINT nAssoVsLineNoStart = 0;
- sscanf_s(strAssoVsLineNoStart, _T("%u"), &nAssoVsLineNoStart);
- CString LineType;
- m_ComboIpoExtType.GetWindowText(LineType);
- CString LineNo;
- CString AssoVsLineNo;
- for(UINT i = 0; i < Count; ++i)
- {
- LineNo.Format(_T("%u"), ExtStartId + i);
- if(!strAssoVsLineNoStart.IsEmpty())
- AssoVsLineNo.Format(_T("%u"), nAssoVsLineNoStart + i);
- int Index = m_ListIpoExt.GetIndexByContent(0, LineNo);
- if(Index == -1)
- {
- Index = m_ListIpoExt.GetItemCount();
- m_ListIpoExt.InsertItem(Index, LineNo);
- m_ListIpoExt.SetItemText(Index, 1, LineType);
- m_ListIpoExt.SetItemText(Index, 2, AssoVsLineNo);
- }
- else
- {
- m_ListIpoExt.SetItemText(Index, 1, LineType);
- m_ListIpoExt.SetItemText(Index, 2, AssoVsLineNo);
- }
- }
- }
- void CDialogCfgIpo::OnBnClickedBtnIpoExtDel()
- {
- // TODO: 在此添加控件通知处理程序代码
- m_ListIpoExt.RemoveSelection();
- }
- void CDialogCfgIpo::OnBnClickedBtnIpoTrunkAdd()
- {
- // TODO: 在此添加控件通知处理程序代码
- CString TrunkStartId;
- GetDlgItemText(IDC_EDT_IPO_TRUNK_START_NUM, TrunkStartId);
- if(TrunkStartId.IsEmpty())
- {
- MessageBox(_T("请输入起始中继线路号!"));
- GetDlgItem(IDC_EDT_IPO_EXT_START_NUM)->SetFocus();
- return;
- }
- CString LineType;
- m_ComboIpoTrunkType.GetWindowText(LineType);
- UINT Count = GetDlgItemInt(IDC_EDT_IPO_TRUNK_COUNT);
- if(LineType == CONST_IPO_LINE_TYPE_DT)
- {
- if(Count < 1 || Count > 30)
- {
- MessageBox(_T("数字中继线路数需在1至30之间!"));
- GetDlgItem(IDC_EDT_IPO_TRUNK_COUNT)->SetFocus();
- return;
- }
- }
- int TrunkBegin = 0;
- int PcmBegin = 0;
- sscanf_s(TrunkStartId, "%d.%d", &TrunkBegin, &PcmBegin);
- CString strAssoVsLineNoStart;
- GetDlgItemText(IDC_EDT_IPO_TRUNK_ASSO_LINE, strAssoVsLineNoStart);
- UINT nAssoVsLineNoStart = 0;
- sscanf_s(strAssoVsLineNoStart, _T("%u"), &nAssoVsLineNoStart);
- CString LineNo;
- CString AssoVsLineNo;
- for(UINT i = 0; i < Count; ++i)
- {
- if(PcmBegin == 0) // 模拟中继
- {
- LineNo.Format(_T("%d"), TrunkBegin + i);
- }
- else // 数字、VOIP中继
- {
- LineNo.Format(_T("%d.%d"), TrunkBegin, PcmBegin + i);
- } // end if
- if(!strAssoVsLineNoStart.IsEmpty())
- AssoVsLineNo.Format(_T("%u"), nAssoVsLineNoStart + i);
- int Index = m_ListIpoTrunk.GetIndexByContent(0, LineNo);
- if(Index == -1)
- {
- Index = m_ListIpoTrunk.GetItemCount();
- m_ListIpoTrunk.InsertItem(Index, LineNo);
- m_ListIpoTrunk.SetItemText(Index, 1, LineType);
- m_ListIpoTrunk.SetItemText(Index, 2, AssoVsLineNo);
- }
- else
- {
- m_ListIpoTrunk.SetItemText(Index, 1, LineType);
- m_ListIpoTrunk.SetItemText(Index, 2, AssoVsLineNo);
- }
- }
- }
- void CDialogCfgIpo::OnBnClickedBtnIpoTrunkDel()
- {
- // TODO: 在此添加控件通知处理程序代码
- m_ListIpoTrunk.RemoveSelection();
- }
|