ChassisConfigDlg.cpp 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. // ChassisConfigDlg.cpp: 实现文件
  2. //
  3. #include "pch.h"
  4. #include "TCL Copy Tool.h"
  5. #include "ChassisConfigDlg.h"
  6. #include "afxdialogex.h"
  7. // CChassisConfigDlg 对话框
  8. IMPLEMENT_DYNAMIC(CChassisConfigDlg, CDialogEx)
  9. CChassisConfigDlg::CChassisConfigDlg(CWnd *pParent /*=nullptr*/)
  10. : CDialogEx(IDD_CONFIG_DIALOG, pParent)
  11. {
  12. }
  13. CChassisConfigDlg::~CChassisConfigDlg()
  14. {
  15. }
  16. void CChassisConfigDlg::DoDataExchange(CDataExchange *pDX)
  17. {
  18. CDialogEx::DoDataExchange(pDX);
  19. DDX_Control(pDX, IDC_COMBO_CHASSIS, m_cb_chassis);
  20. DDX_Control(pDX, IDC_CHECK_MTK_INIT, m_check_mtk_init);
  21. DDX_Control(pDX, IDC_CHECK_WB_INIT, m_check_wb_init);
  22. DDX_Control(pDX, IDC_CHECK_WRITE_PID, m_check_pid);
  23. DDX_Control(pDX, IDC_CHECK_COPY_DID, m_check_did);
  24. DDX_Control(pDX, IDC_CHECK_COPY_MAC, m_check_mac);
  25. DDX_Control(pDX, IDC_CHECK_COPY_HDCP, m_check_hdcp);
  26. DDX_Control(pDX, IDC_CHECK_COPY_ESN, m_check_esn);
  27. DDX_Control(pDX, IDC_CHECK_COPY_WIDI, m_check_widi);
  28. DDX_Control(pDX, IDC_CHECK_COPY_WIDEVINE, m_check_widevine);
  29. DDX_Control(pDX, IDC_CHECK_COPY_HDCP2, m_check_hdcp2);
  30. DDX_Control(pDX, IDC_CHECK_COPY_CIKEY, m_check_cikey);
  31. DDX_Control(pDX, IDC_CHECK_COPY_CHANNEL, m_check_channel);
  32. DDX_Control(pDX, IDC_CHECK_COPY_OSDLANG, m_check_osd_lang);
  33. DDX_Control(pDX, IDC_CHECK_COPY_SHOPLANG, m_check_shop_lang);
  34. DDX_Control(pDX, IDC_CHECK_COPY_WB, m_check_wb);
  35. }
  36. BEGIN_MESSAGE_MAP(CChassisConfigDlg, CDialogEx)
  37. ON_CBN_SELCHANGE(IDC_COMBO_CHASSIS, &CChassisConfigDlg::OnCbnSelchangeComboChassis)
  38. ON_BN_CLICKED(BTN_ADD_CHASSIS, &CChassisConfigDlg::OnBnClickedAddChassis)
  39. END_MESSAGE_MAP()
  40. // CChassisConfigDlg 消息处理程序
  41. BOOL CChassisConfigDlg::OnInitDialog()
  42. {
  43. CDialogEx::OnInitDialog();
  44. SetDlgItemInt(EDIT_WARN_COUNT, 200);
  45. // TODO: 在此添加额外的初始化
  46. CWnd *pWnd = GetDlgItem(EDIT_CHASSIS_NAME);
  47. if (Global::g_tConfig.mode < 2)
  48. { // 显示下拉框;
  49. CRect rcWnd;
  50. pWnd->ShowWindow(SW_HIDE);
  51. pWnd->GetWindowRect(rcWnd);
  52. ScreenToClient(rcWnd);
  53. m_cb_chassis.MoveWindow(rcWnd);
  54. m_cb_chassis.ShowWindow(SW_SHOW);
  55. GetDlgItem(BTN_ADD_CHASSIS)->ShowWindow(SW_SHOW);
  56. for (auto it : Global::g_tConfig.chassislist)
  57. {
  58. m_cb_chassis.AddString(it.first.c_str());
  59. }
  60. #if SAVE_AUTO_ONLINE
  61. if (!IsChassisExsit(Global::g_AutoOnlineChassis.name))
  62. m_cb_chassis.AddString(Global::g_AutoOnlineChassis.name.c_str());
  63. m_cb_chassis.SelectString(0, Global::g_AutoOnlineChassis.name.c_str());
  64. #else
  65. m_cb_chassis.SelectString(0, Global::g_tConfig.chassis.c_str());
  66. #endif
  67. }
  68. #if SAVE_AUTO_ONLINE
  69. if ( Global::g_tConfig.mode < 2 )
  70. FillData2Wnd(Global::g_AutoOnlineChassis);
  71. else if (Global::g_tConfig.chassislist.find(Global::g_tConfig.chassis.c_str()) != Global::g_tConfig.chassislist.end())
  72. FillData2Wnd(Global::g_tConfig.chassislist.find(Global::g_tConfig.chassis.c_str())->second);
  73. #else
  74. if (Global::g_tConfig.chassislist.find(Global::g_tConfig.chassis.c_str()) != Global::g_tConfig.chassislist.end())
  75. {
  76. FillData2Wnd(Global::g_tConfig.chassislist.find(Global::g_tConfig.chassis.c_str())->second);
  77. }
  78. #endif
  79. return TRUE; // return TRUE unless you set the focus to a control
  80. // 异常: OCX 属性页应返回 FALSE
  81. }
  82. void CChassisConfigDlg::OnOK()
  83. {
  84. // TODO: 在此添加专用代码和/或调用基类
  85. CString strChassis;
  86. if (GetDlgItem(BTN_ADD_CHASSIS)->IsWindowVisible())
  87. {
  88. int nCurSel = m_cb_chassis.GetCurSel();
  89. if (nCurSel != CB_ERR)
  90. {
  91. m_cb_chassis.GetLBText(nCurSel, strChassis);
  92. }
  93. }
  94. else
  95. {
  96. GetDlgItemText(EDIT_CHASSIS_NAME, strChassis);
  97. }
  98. if ( strChassis.IsEmpty() )
  99. {
  100. MessageBox(_T("Chassis name can't empty!"), _T("Warnnig"), MB_OK | MB_ICONERROR);
  101. return;
  102. }
  103. SaveChange2Config();
  104. CDialogEx::OnOK();
  105. }
  106. void CChassisConfigDlg::FillData2Wnd(Global::TChassis &chassis)
  107. {
  108. #if SAVE_AUTO_ONLINE
  109. if (Global::g_tConfig.mode < 2)
  110. {
  111. SetDlgItemText(EDIT_CHASSIS_NAME, Global::g_AutoOnlineChassis.name.c_str());
  112. SetDlgItemText(EDIT_URL, Global::g_AutoOnlineChassis.url.c_str());
  113. }
  114. else
  115. {
  116. SetDlgItemText(EDIT_CHASSIS_NAME, Global::g_tConfig.chassis.c_str());
  117. SetDlgItemText(EDIT_URL, Global::g_tConfig.serverurl.c_str());
  118. }
  119. #else
  120. SetDlgItemText(EDIT_CHASSIS_NAME, Global::g_tConfig.chassis.c_str());
  121. SetDlgItemText(EDIT_URL, Global::g_tConfig.serverurl.c_str());
  122. #endif
  123. SetDlgItemInt(EDIT_WARN_COUNT, Global::g_tConfig.warncount);
  124. // check box
  125. m_check_mtk_init.SetCheck(chassis.IsMTKInit);
  126. m_check_wb_init.SetCheck(chassis.IsWBInit);
  127. m_check_pid.SetCheck(chassis.IsWritePID);
  128. m_check_did.SetCheck(chassis.IsCopyDID);
  129. m_check_mac.SetCheck(chassis.IsCopyMAC);
  130. m_check_hdcp.SetCheck(chassis.IsCopyKEY);
  131. m_check_esn.SetCheck(chassis.IsCopyESN);
  132. m_check_widi.SetCheck(chassis.IsCopyWiDi);
  133. m_check_widevine.SetCheck(chassis.IsCopyWidevine);
  134. m_check_hdcp2.SetCheck(chassis.IsCopyKEY2_2);
  135. m_check_cikey.SetCheck(chassis.IsCopyCikey);
  136. m_check_channel.SetCheck(chassis.IsCopyChannel);
  137. m_check_osd_lang.SetCheck(chassis.IsOsdLanguage);
  138. m_check_shop_lang.SetCheck(chassis.IsShopLanguage);
  139. m_check_wb.SetCheck(chassis.IsCopyWB);
  140. SetDlgItemText(IDC_EDIT_WBFILE, chassis.WBFile.c_str());
  141. SetDlgItemText(IDC_EDIT_CHANNEL, chassis.Channel.c_str());
  142. SetDlgItemText(IDC_EDIT_OSD_LANG, chassis.OsdLanguage.c_str());
  143. SetDlgItemText(IDC_EDIT_SHOP_LANG, chassis.ShopLanguage.c_str());
  144. SetDlgItemInt(IDC_EDIT_PID, chassis.ProjectID);
  145. SetDlgItemText(IDC_EDIT_DID_TYPE, chassis.ClientType.c_str());
  146. SetDlgItemText(IDC_EDIT_MAC_TYPE, chassis.MACType.c_str());
  147. SetDlgItemText(IDC_EDIT_HDCP_TYPE, chassis.HDCPKeyType.c_str());
  148. SetDlgItemText(IDC_EDIT_HDCP2_TYPE, chassis.HDCPKey22Type.c_str());
  149. SetDlgItemText(IDC_EDIT_WIDI_TYPE, chassis.WiDiType.c_str());
  150. SetDlgItemText(IDC_EDIT_WIDEVINE_TYPE, chassis.WidevineType.c_str());
  151. SetDlgItemText(IDC_EDIT_ESN_TYPE, chassis.ESNType.c_str());
  152. SetDlgItemText(IDC_EDIT_CIKEY_TYPE, chassis.CIKeyType.c_str());
  153. SetDlgItemInt(EDIT_DELAY, chassis.Delay);
  154. SetDlgItemText(EDIT_CHECKSTRING, chassis.CheckString.c_str());
  155. }
  156. void CChassisConfigDlg::SaveChange2Config()
  157. {
  158. UpdateData();
  159. CString strChassis = _T(""), strURL = _T("");
  160. GetDlgItemText(EDIT_URL, strURL);
  161. int WarnCount = GetDlgItemInt(EDIT_WARN_COUNT);
  162. if (GetDlgItem(BTN_ADD_CHASSIS)->IsWindowVisible())
  163. {
  164. int nCurSel = m_cb_chassis.GetCurSel();
  165. if (nCurSel != CB_ERR)
  166. {
  167. m_cb_chassis.GetLBText(nCurSel, strChassis);
  168. }
  169. }
  170. else
  171. {
  172. GetDlgItemText(EDIT_CHASSIS_NAME, strChassis);
  173. }
  174. Global::g_tConfig.warncount = WarnCount;
  175. Global::g_tConfig.serverurl = strURL.GetString();
  176. Global::TChassis tchassis;
  177. // check box
  178. tchassis.IsWBInit = m_check_wb_init.GetCheck();
  179. tchassis.IsWritePID = m_check_pid.GetCheck();
  180. tchassis.IsCopyDID = m_check_did.GetCheck();
  181. tchassis.IsCopyMAC = m_check_mac.GetCheck();
  182. tchassis.IsCopyKEY = m_check_hdcp.GetCheck();
  183. tchassis.IsCopyESN = m_check_esn.GetCheck();
  184. tchassis.IsCopyWiDi = m_check_widi.GetCheck();
  185. tchassis.IsCopyWidevine = m_check_widevine.GetCheck();
  186. tchassis.IsCopyKEY2_2 = m_check_hdcp2.GetCheck();
  187. tchassis.IsCopyCikey = m_check_cikey.GetCheck();
  188. tchassis.IsCopyChannel = m_check_channel.GetCheck();
  189. tchassis.IsOsdLanguage = m_check_osd_lang.GetCheck();
  190. tchassis.IsShopLanguage = m_check_shop_lang.GetCheck();
  191. tchassis.IsCopyWB = m_check_wb.GetCheck();
  192. tchassis.IsMTKInit = m_check_mtk_init.GetCheck();
  193. CString strData = _T("");
  194. GetDlgItemText(IDC_EDIT_WBFILE, strData);
  195. tchassis.WBFile = strData.GetString();
  196. GetDlgItemText(IDC_EDIT_CHANNEL, strData);
  197. tchassis.Channel = strData.GetString();
  198. GetDlgItemText(IDC_EDIT_OSD_LANG, strData);
  199. tchassis.OsdLanguage = strData.GetString();
  200. GetDlgItemText(IDC_EDIT_SHOP_LANG, strData);
  201. tchassis.ShopLanguage = strData.GetString();
  202. tchassis.ProjectID = GetDlgItemInt(IDC_EDIT_PID);
  203. GetDlgItemText(IDC_EDIT_DID_TYPE, strData);
  204. tchassis.ClientType = strData.GetString();
  205. GetDlgItemText(IDC_EDIT_MAC_TYPE, strData);
  206. tchassis.MACType = strData.GetString();
  207. GetDlgItemText(IDC_EDIT_HDCP_TYPE, strData);
  208. tchassis.HDCPKeyType = strData.GetString();
  209. GetDlgItemText(IDC_EDIT_HDCP2_TYPE, strData);
  210. tchassis.HDCPKey22Type = strData.GetString();
  211. GetDlgItemText(IDC_EDIT_WIDI_TYPE, strData);
  212. tchassis.WiDiType = strData.GetString();
  213. GetDlgItemText(IDC_EDIT_WIDEVINE_TYPE, strData);
  214. tchassis.WidevineType = strData.GetString();
  215. GetDlgItemText(IDC_EDIT_ESN_TYPE, strData);
  216. tchassis.ESNType = strData.GetString();
  217. GetDlgItemText(IDC_EDIT_CIKEY_TYPE, strData);
  218. tchassis.CIKeyType = strData.GetString();
  219. tchassis.Delay = GetDlgItemInt(EDIT_DELAY);
  220. GetDlgItemText(EDIT_CHECKSTRING, strData);
  221. tchassis.CheckString = strData.GetString();
  222. // 此Chassis是否存在于列表中;
  223. std::map<std::string, Global::TChassis>::iterator it = Global::g_tConfig.chassislist.find(strChassis.GetString());
  224. if (it != Global::g_tConfig.chassislist.end())
  225. {
  226. it->second = tchassis;
  227. }
  228. else
  229. {
  230. Global::g_tConfig.chassislist.insert(pair<std::string, Global::TChassis>(strChassis.GetString(), tchassis));
  231. }
  232. Global::SetConfig();
  233. }
  234. BOOL CChassisConfigDlg::IsChassisExsit(std::string chassis)
  235. {
  236. BOOL bExsit = FALSE;
  237. CString strChassis;
  238. int nCount = m_cb_chassis.GetCount();
  239. for ( int i= 0; i < nCount; i++ )
  240. {
  241. m_cb_chassis.GetLBText(i, strChassis);
  242. if ( _tcsicmp(chassis.c_str(), strChassis.GetString() ) == 0 )
  243. {
  244. bExsit = TRUE;
  245. break;
  246. }
  247. }
  248. return bExsit;
  249. }
  250. void CChassisConfigDlg::OnCbnSelchangeComboChassis()
  251. {
  252. // TODO: 在此添加控件通知处理程序代码
  253. int nCurSel = m_cb_chassis.GetCurSel();
  254. if (nCurSel != CB_ERR)
  255. {
  256. CString strChassis;
  257. m_cb_chassis.GetLBText(nCurSel, strChassis);
  258. FillData2Wnd(Global::g_tConfig.chassislist.find(strChassis.GetString())->second);
  259. }
  260. }
  261. void CChassisConfigDlg::OnBnClickedAddChassis()
  262. {
  263. // TODO: 在此添加控件通知处理程序代码
  264. if (Global::g_tConfig.mode < 2)
  265. {
  266. // 隐藏combobox;
  267. int nCurSel = m_cb_chassis.GetCurSel();
  268. if (nCurSel != CB_ERR)
  269. {
  270. CString strChassis;
  271. m_cb_chassis.GetLBText(nCurSel, strChassis);
  272. SetDlgItemText(EDIT_CHASSIS_NAME, strChassis);
  273. }
  274. m_cb_chassis.ShowWindow(SW_HIDE);
  275. GetDlgItem(EDIT_CHASSIS_NAME)->ShowWindow(SW_SHOW);
  276. GetDlgItem(BTN_ADD_CHASSIS)->ShowWindow(SW_HIDE);
  277. }
  278. }