中间件标准版5.1git,去除基础模块

DialogCfgIpo.cpp 9.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. // DialogCfgIpo.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "FirstStep.h"
  5. #include "DialogCfgIpo.h"
  6. #include "Config.h"
  7. // CDialogCfgIpo 对话框
  8. IMPLEMENT_DYNAMIC(CDialogCfgIpo, CDialogEx)
  9. CDialogCfgIpo::CDialogCfgIpo(CWnd* pParent /*=NULL*/)
  10. : CCfgDialog(2, CDialogCfgIpo::IDD, pParent)
  11. {
  12. }
  13. CDialogCfgIpo::~CDialogCfgIpo()
  14. {
  15. }
  16. /*****************************************************************
  17. **【函数名称】 __initUIControl
  18. **【函数功能】 初始化控件
  19. **【参数】
  20. **【返回值】
  21. ****************************************************************/
  22. void CDialogCfgIpo::__initUIControl( void )
  23. {
  24. m_ComboIpoExtType.InsertString(0, CONST_IPO_LINE_TYPE_EXT);
  25. m_ComboIpoExtType.InsertString(1, CONST_IPO_LINE_TYPE_IVR);
  26. m_ComboIpoExtType.InsertString(2, CONST_IPO_LINE_TYPE_FAX);
  27. m_ComboIpoExtType.SetCurSel(0);
  28. m_ComboIpoTrunkType.InsertString(0, CONST_IPO_LINE_TYPE_DT);
  29. m_ComboIpoTrunkType.InsertString(1, CONST_IPO_LINE_TYPE_H323);
  30. m_ComboIpoTrunkType.InsertString(2, CONST_IPO_LINE_TYPE_SIP);
  31. m_ComboIpoTrunkType.SetCurSel(0);
  32. CRect Rect;
  33. m_ListIpoExt.GetClientRect(&Rect);
  34. int length = Rect.right - Rect.left;
  35. m_ListIpoExt.InsertColumn(0, _T("线路号"), LVCFMT_LEFT, length / 3);
  36. m_ListIpoExt.InsertColumn(1, _T("线路类型"), LVCFMT_LEFT, length / 3);
  37. m_ListIpoExt.InsertColumn(2, _T("关联VS线路"), LVCFMT_LEFT, length / 3);
  38. m_ListIpoTrunk.GetClientRect(&Rect);
  39. length = Rect.right - Rect.left;
  40. m_ListIpoTrunk.InsertColumn(0, _T("线路号"), LVCFMT_LEFT, length / 3);
  41. m_ListIpoTrunk.InsertColumn(1, _T("线路类型"), LVCFMT_LEFT, length / 3);
  42. m_ListIpoTrunk.InsertColumn(2, _T("关联VS线路"), LVCFMT_LEFT, length / 3);
  43. }
  44. /*****************************************************************
  45. **【函数名称】 __loadIpoLineCfg
  46. **【函数功能】 加载IPO线路配置
  47. **【参数】
  48. **【返回值】
  49. ****************************************************************/
  50. void CDialogCfgIpo::__loadIpoLineCfg( void )
  51. {
  52. // IPO分机线路
  53. CIpoLineList& IpoLineList = CConfig::GetInstance().ipoLineList();
  54. POSITION Pos = IpoLineList.GetHeadPosition();
  55. while(Pos)
  56. {
  57. IpoLine* pLine = IpoLineList.GetNext(Pos);
  58. ASSERT(pLine != NULL);
  59. if(pLine->LineType == CONST_IPO_LINE_TYPE_EXT
  60. || pLine->LineType == CONST_IPO_LINE_TYPE_IVR
  61. || pLine->LineType == CONST_IPO_LINE_TYPE_FAX)
  62. {
  63. int Index = m_ListIpoExt.GetItemCount();
  64. m_ListIpoExt.InsertItem(Index, pLine->LineNO);
  65. m_ListIpoExt.SetItemText(Index, 1, pLine->LineType);
  66. m_ListIpoExt.SetItemText(Index, 2, pLine->AssoVsLineNO);
  67. }
  68. else
  69. {
  70. int Index = m_ListIpoTrunk.GetItemCount();
  71. m_ListIpoTrunk.InsertItem(Index, pLine->LineNO);
  72. m_ListIpoTrunk.SetItemText(Index, 1, pLine->LineType);
  73. m_ListIpoTrunk.SetItemText(Index, 2, pLine->AssoVsLineNO);
  74. }
  75. }
  76. }
  77. /*****************************************************************
  78. **【函数名称】 __uploadIpoLineCfg
  79. **【函数功能】 上传IPO线路配置
  80. **【参数】
  81. **【返回值】
  82. ****************************************************************/
  83. void CDialogCfgIpo::__uploadIpoLineCfg( void )
  84. {
  85. // IPO分机线路
  86. CIpoLineList& IpoLineList = CConfig::GetInstance().ipoLineList();
  87. IpoLineList.Free();
  88. int Count = m_ListIpoExt.GetItemCount();
  89. for(int i = 0; i < Count; ++i)
  90. {
  91. IpoLine* pExten = new IpoLine;
  92. ASSERT(pExten != NULL);
  93. pExten->LineNO = m_ListIpoExt.GetItemText(i, 0);
  94. pExten->LineType = m_ListIpoExt.GetItemText(i, 1);
  95. pExten->AssoVsLineNO = m_ListIpoExt.GetItemText(i, 2);
  96. IpoLineList.AddTail(pExten);
  97. }
  98. // IPO中继线路
  99. Count = m_ListIpoTrunk.GetItemCount();
  100. for(int i = 0; i < Count; ++i)
  101. {
  102. IpoLine* pTrunk = new IpoLine;
  103. ASSERT(pTrunk != NULL);
  104. pTrunk->LineNO = m_ListIpoTrunk.GetItemText(i, 0);
  105. pTrunk->LineType = m_ListIpoTrunk.GetItemText(i, 1);
  106. pTrunk->AssoVsLineNO = m_ListIpoTrunk.GetItemText(i, 2);
  107. IpoLineList.AddTail(pTrunk);
  108. }
  109. }
  110. void CDialogCfgIpo::DoDataExchange(CDataExchange* pDX)
  111. {
  112. CDialogEx::DoDataExchange(pDX);
  113. DDX_Control(pDX, IDC_COMBO_IPO_EXT_TYPE, m_ComboIpoExtType);
  114. DDX_Control(pDX, IDC_LIST_IPO_EXT, m_ListIpoExt);
  115. DDX_Control(pDX, IDC_LIST_IPO_TRUNK, m_ListIpoTrunk);
  116. DDX_Control(pDX, IDC_IPADDR_IPO, m_AddrIpo);
  117. DDX_Control(pDX, IDC_EDT_IPO_PWD, m_EdtIpoPwd);
  118. DDX_Control(pDX, IDC_EDT_IPOLINK_PORT, m_EdtIpoLinkPort);
  119. DDX_Control(pDX, IDC_COMBO_IPO_TRUNK_TYPE, m_ComboIpoTrunkType);
  120. }
  121. /*****************************************************************
  122. **【函数名称】 upload
  123. **【函数功能】 上传配置项
  124. **【参数】
  125. **【返回值】
  126. ****************************************************************/
  127. void CDialogCfgIpo::upload( void )
  128. {
  129. CString CfgInfo;
  130. CConfig& config = CConfig::GetInstance();
  131. m_AddrIpo.GetWindowText(CfgInfo);
  132. config.ipoAddr() = CfgInfo;
  133. m_EdtIpoPwd.GetWindowText(CfgInfo);
  134. config.ipoPwd() = CfgInfo;
  135. m_EdtIpoLinkPort.GetWindowText(CfgInfo);
  136. config.ipoLinkPort() = CfgInfo;
  137. __uploadIpoLineCfg();
  138. }
  139. BEGIN_MESSAGE_MAP(CDialogCfgIpo, CCfgDialog)
  140. ON_WM_SHOWWINDOW()
  141. ON_BN_CLICKED(IDC_BTN_IPO_EXT_ADD, &CDialogCfgIpo::OnBnClickedBtnIpoExtAdd)
  142. ON_BN_CLICKED(IDC_BTN_IPO_EXT_DEL, &CDialogCfgIpo::OnBnClickedBtnIpoExtDel)
  143. ON_BN_CLICKED(IDC_BTN_IPO_TRUNK_ADD, &CDialogCfgIpo::OnBnClickedBtnIpoTrunkAdd)
  144. ON_BN_CLICKED(IDC_BTN_IPO_TRUNK_DEL, &CDialogCfgIpo::OnBnClickedBtnIpoTrunkDel)
  145. END_MESSAGE_MAP()
  146. // CDialogCfgIpo 消息处理程序
  147. BOOL CDialogCfgIpo::OnInitDialog()
  148. {
  149. CCfgDialog::OnInitDialog();
  150. // TODO: 在此添加额外的初始化
  151. __initUIControl();
  152. CConfig& config = CConfig::GetInstance();
  153. m_AddrIpo.SetWindowText(config.ipoAddr());
  154. m_EdtIpoPwd.SetWindowText(config.ipoPwd());
  155. m_EdtIpoLinkPort.SetWindowText(config.ipoLinkPort());
  156. __loadIpoLineCfg();
  157. return TRUE; // return TRUE unless you set the focus to a control
  158. // 异常: OCX 属性页应返回 FALSE
  159. }
  160. BOOL CDialogCfgIpo::PreTranslateMessage( MSG* pMsg )
  161. {
  162. // TODO: 在此添加专用代码和/或调用基类
  163. if((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN))
  164. return TRUE;
  165. return CCfgDialog::PreTranslateMessage(pMsg);
  166. }
  167. void CDialogCfgIpo::OnShowWindow( BOOL bShow, UINT nStatus )
  168. {
  169. CCfgDialog::OnShowWindow(bShow, nStatus);
  170. // TODO: 在此处添加消息处理程序代码
  171. if(bShow)
  172. m_AddrIpo.SetFocus();
  173. }
  174. void CDialogCfgIpo::OnBnClickedBtnIpoExtAdd()
  175. {
  176. // TODO: 在此添加控件通知处理程序代码
  177. UINT ExtStartId = GetDlgItemInt(IDC_EDT_IPO_EXT_START_NUM);
  178. if(ExtStartId == 0)
  179. {
  180. MessageBox(_T("请输入起始分机线路号!"));
  181. GetDlgItem(IDC_EDT_IPO_EXT_START_NUM)->SetFocus();
  182. return;
  183. }
  184. UINT Count = GetDlgItemInt(IDC_EDT_IPO_EXT_COUNT);
  185. if(Count < 1 || Count > 99)
  186. {
  187. MessageBox(_T("分机线路数需在1至99之间!"));
  188. GetDlgItem(IDC_EDT_IPO_EXT_COUNT)->SetFocus();
  189. return;
  190. }
  191. CString strAssoVsLineNoStart;
  192. GetDlgItemText(IDC_EDT_IPO_EXT_ASSO_LINE, strAssoVsLineNoStart);
  193. UINT nAssoVsLineNoStart = 0;
  194. sscanf_s(strAssoVsLineNoStart, _T("%u"), &nAssoVsLineNoStart);
  195. CString LineType;
  196. m_ComboIpoExtType.GetWindowText(LineType);
  197. CString LineNo;
  198. CString AssoVsLineNo;
  199. for(UINT i = 0; i < Count; ++i)
  200. {
  201. LineNo.Format(_T("%u"), ExtStartId + i);
  202. if(!strAssoVsLineNoStart.IsEmpty())
  203. AssoVsLineNo.Format(_T("%u"), nAssoVsLineNoStart + i);
  204. int Index = m_ListIpoExt.GetIndexByContent(0, LineNo);
  205. if(Index == -1)
  206. {
  207. Index = m_ListIpoExt.GetItemCount();
  208. m_ListIpoExt.InsertItem(Index, LineNo);
  209. m_ListIpoExt.SetItemText(Index, 1, LineType);
  210. m_ListIpoExt.SetItemText(Index, 2, AssoVsLineNo);
  211. }
  212. else
  213. {
  214. m_ListIpoExt.SetItemText(Index, 1, LineType);
  215. m_ListIpoExt.SetItemText(Index, 2, AssoVsLineNo);
  216. }
  217. }
  218. }
  219. void CDialogCfgIpo::OnBnClickedBtnIpoExtDel()
  220. {
  221. // TODO: 在此添加控件通知处理程序代码
  222. m_ListIpoExt.RemoveSelection();
  223. }
  224. void CDialogCfgIpo::OnBnClickedBtnIpoTrunkAdd()
  225. {
  226. // TODO: 在此添加控件通知处理程序代码
  227. CString TrunkStartId;
  228. GetDlgItemText(IDC_EDT_IPO_TRUNK_START_NUM, TrunkStartId);
  229. if(TrunkStartId.IsEmpty())
  230. {
  231. MessageBox(_T("请输入起始中继线路号!"));
  232. GetDlgItem(IDC_EDT_IPO_EXT_START_NUM)->SetFocus();
  233. return;
  234. }
  235. CString LineType;
  236. m_ComboIpoTrunkType.GetWindowText(LineType);
  237. UINT Count = GetDlgItemInt(IDC_EDT_IPO_TRUNK_COUNT);
  238. if(LineType == CONST_IPO_LINE_TYPE_DT)
  239. {
  240. if(Count < 1 || Count > 30)
  241. {
  242. MessageBox(_T("数字中继线路数需在1至30之间!"));
  243. GetDlgItem(IDC_EDT_IPO_TRUNK_COUNT)->SetFocus();
  244. return;
  245. }
  246. }
  247. int TrunkBegin = 0;
  248. int PcmBegin = 0;
  249. sscanf_s(TrunkStartId, "%d.%d", &TrunkBegin, &PcmBegin);
  250. CString strAssoVsLineNoStart;
  251. GetDlgItemText(IDC_EDT_IPO_TRUNK_ASSO_LINE, strAssoVsLineNoStart);
  252. UINT nAssoVsLineNoStart = 0;
  253. sscanf_s(strAssoVsLineNoStart, _T("%u"), &nAssoVsLineNoStart);
  254. CString LineNo;
  255. CString AssoVsLineNo;
  256. for(UINT i = 0; i < Count; ++i)
  257. {
  258. if(PcmBegin == 0) // 模拟中继
  259. {
  260. LineNo.Format(_T("%d"), TrunkBegin + i);
  261. }
  262. else // 数字、VOIP中继
  263. {
  264. LineNo.Format(_T("%d.%d"), TrunkBegin, PcmBegin + i);
  265. } // end if
  266. if(!strAssoVsLineNoStart.IsEmpty())
  267. AssoVsLineNo.Format(_T("%u"), nAssoVsLineNoStart + i);
  268. int Index = m_ListIpoTrunk.GetIndexByContent(0, LineNo);
  269. if(Index == -1)
  270. {
  271. Index = m_ListIpoTrunk.GetItemCount();
  272. m_ListIpoTrunk.InsertItem(Index, LineNo);
  273. m_ListIpoTrunk.SetItemText(Index, 1, LineType);
  274. m_ListIpoTrunk.SetItemText(Index, 2, AssoVsLineNo);
  275. }
  276. else
  277. {
  278. m_ListIpoTrunk.SetItemText(Index, 1, LineType);
  279. m_ListIpoTrunk.SetItemText(Index, 2, AssoVsLineNo);
  280. }
  281. }
  282. }
  283. void CDialogCfgIpo::OnBnClickedBtnIpoTrunkDel()
  284. {
  285. // TODO: 在此添加控件通知处理程序代码
  286. m_ListIpoTrunk.RemoveSelection();
  287. }