CMainWnd.cpp 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089
  1. #include "../pch/pch.h"
  2. #include "CMainWnd.h"
  3. #include "../control/ControlEx.h"
  4. #include "../control/CWaimaiOrderInfoUI.h"
  5. #include "../tool/CSetting.h"
  6. void CMainWnd::Init()
  7. {
  8. m_pCloseBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("closebtn")));
  9. m_pMaxBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("maxbtn")));
  10. m_pRestoreBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("restorebtn")));
  11. m_pMinBtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("minbtn")));
  12. }
  13. LRESULT CMainWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  14. {
  15. LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
  16. styleValue &= ~WS_CAPTION;
  17. ::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
  18. m_pm.Init(m_hWnd);
  19. CDialogBuilder builder;
  20. CDialogBuilderCallbackEx cb;
  21. CControlUI* pRoot = builder.Create(_T("main.xml"), (UINT)0, &cb, &m_pm);
  22. ASSERT(pRoot && "Failed to parse XML");
  23. m_pm.AttachDialog(pRoot);
  24. m_pm.AddNotifier(this);
  25. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  26. orderlist->Refresh();
  27. Init();
  28. return 0;
  29. }
  30. void CMainWnd::Notify(TNotifyUI& msg)
  31. {
  32. if(msg.sType == _T("windowinit"))
  33. {
  34. OnPrepare();
  35. }
  36. else if(msg.sType == _T("click"))
  37. {
  38. HandleClickMsg(msg);
  39. }
  40. else if(msg.sType == _T("selectchanged"))
  41. {
  42. HandleSelectChangeMsg(msg);
  43. }
  44. else if(msg.sType == _T("itemclick"))
  45. {
  46. }
  47. else if(msg.sType == _T("itemactivate"))
  48. {
  49. }
  50. else if(msg.sType == _T("itemselect"))
  51. {
  52. HandleItemSelectMsg(msg);
  53. }
  54. }
  55. void CMainWnd::HandleClickMsg(TNotifyUI& msg)
  56. {
  57. if(msg.pSender == m_pCloseBtn)
  58. {
  59. COptionUI* pControl = static_cast<COptionUI*>(m_pm.FindControl(_T("hallswitch")));
  60. if(pControl && pControl->IsSelected() == false)
  61. {
  62. CControlUI* pFadeControl = m_pm.FindControl(_T("fadeEffect"));
  63. if(pFadeControl)
  64. {
  65. pFadeControl->SetVisible(true);
  66. }
  67. }
  68. else
  69. {
  70. /*Close()*/PostQuitMessage(0); // 因为activex的原因,使用close可能会出现错误
  71. }
  72. return;
  73. }
  74. else if(msg.pSender == m_pMinBtn)
  75. {
  76. SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);
  77. return;
  78. }
  79. else if(msg.pSender == m_pMaxBtn)
  80. {
  81. SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, 0);
  82. return;
  83. }
  84. else if(msg.pSender == m_pRestoreBtn)
  85. {
  86. SendMessage(WM_SYSCOMMAND, SC_RESTORE, 0);
  87. return;
  88. }
  89. CDuiString name = msg.pSender->GetName();
  90. if(name == _T("quitbtn"))
  91. {
  92. /*Close()*/PostQuitMessage(0); // 因为activex的原因,使用close可能会出现错误
  93. }
  94. else if(name == _T("waimai_order_list_print"))
  95. {
  96. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  97. std::string waimai_order_id = item->getOrderID();
  98. std::string waimai_order_no = item->getOrderNo();
  99. CWaimaiOrder order;
  100. order.InitData(waimai_order_id, waimai_order_no);
  101. CPosPrinter printer;
  102. printer.PrintWaimaiOrder(order);
  103. }
  104. else if(name == _T("waimai_order_list_confirme"))
  105. {
  106. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  107. std::string waimai_order_id = item->getOrderID();
  108. CWaimaiOrder order;
  109. bool ret = order.ConfirmeOrder(waimai_order_id);
  110. if(ret)
  111. {
  112. //如果确认成功,将被确认的订单删除掉
  113. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  114. int index = orderlist->GetItemIndex(item);
  115. orderlist->RemoveAt(index);
  116. }
  117. }
  118. else if(name == _T("waimai_order_list_success"))
  119. {
  120. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  121. std::string waimai_order_id = item->getOrderID();
  122. CWaimaiOrder order;
  123. bool ret = order.SuccessOrder(waimai_order_id);
  124. if(ret)
  125. {
  126. //如果确认成功,将被确认的订单删除掉
  127. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  128. int index = orderlist->GetItemIndex(item);
  129. orderlist->RemoveAt(index);
  130. }
  131. }
  132. else if(name == _T("waimai_order_list_fail"))
  133. {
  134. //外卖订单的打印
  135. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  136. std::string waimai_order_id = item->getOrderID();
  137. CWaimaiOrder order;
  138. bool ret = order.FailOrder(waimai_order_id, "windows收银机测试");
  139. if(ret)
  140. {
  141. //如果设为失败成功,将被设为失败的订单删除掉
  142. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  143. int index = orderlist->GetItemIndex(item);
  144. orderlist->RemoveAt(index);
  145. }
  146. }
  147. else if(name == _T("waimai_order_list_agree"))
  148. {
  149. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  150. std::string waimai_order_id = item->getOrderID();
  151. CWaimaiOrder order;
  152. bool ret = order.AgreeRefund(waimai_order_id);
  153. if(ret)
  154. {
  155. //同意退款之后,订单变为失败状态
  156. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  157. int index = orderlist->GetItemIndex(item);
  158. orderlist->RemoveAt(index);
  159. }
  160. }
  161. else if(name == _T("waimai_order_list_disagree"))
  162. {
  163. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  164. std::string waimai_order_id = item->getOrderID();
  165. CWaimaiOrder order;
  166. bool ret = order.DisagreeRefund(waimai_order_id);
  167. if(ret)
  168. {
  169. //不同意退款,订单还是退款中,等待第三方客服处理
  170. //OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  171. //int index = orderlist->GetItemIndex(item);
  172. //orderlist->RemoveAt(index);
  173. }
  174. }
  175. else if(name == _T("waimai_order_list_info"))
  176. {
  177. CWaimaiOrderItemUI* item = static_cast<CWaimaiOrderItemUI*>(msg.pSender->GetParent()->GetParent());
  178. std::string waimai_order_id = item->getOrderID();
  179. std::string waimai_order_no = item->getOrderNo();
  180. //请求服务器,获取订单数据
  181. CWaimaiOrder order;
  182. order.InitData(waimai_order_id, waimai_order_no);
  183. //刷新订单详情页数据
  184. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  185. order_info_page->SetDate(order);
  186. order_info_page->Refresh(order);
  187. //显示订单详情页的内容
  188. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  189. if(pControl && pControl->GetCurSel() != 1)
  190. {
  191. pControl->SelectItem(1);
  192. }
  193. }
  194. else if(name == _T("waimai_order_list_last"))
  195. {
  196. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  197. orderlist->LastPage();
  198. }
  199. else if(name == _T("waimai_order_list_next"))
  200. {
  201. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  202. orderlist->NextPage();
  203. }
  204. else if(name == _T("waimai_order_list_refresh"))
  205. {
  206. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  207. orderlist->Refresh();
  208. }
  209. else if(name == _T("waimai_order_info_page_return"))
  210. {
  211. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  212. if(pControl && pControl->GetCurSel() != 0)
  213. {
  214. pControl->SelectItem(0);
  215. }
  216. //刷新当前列表
  217. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  218. orderlist->Refresh();
  219. }
  220. else if(name == _T("waimai_order_info_page_print"))
  221. {
  222. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  223. CPosPrinter printer;
  224. printer.PrintWaimaiOrder(order_info_page->m_order);
  225. }
  226. else if(name == _T("waimai_order_info_page_confirme"))
  227. {
  228. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  229. std::string waimai_order_id = order_info_page->m_order.m_order_id;
  230. std::string waimai_order_no = order_info_page->m_order.m_order_no;
  231. CWaimaiOrder order;
  232. bool ret = order.ConfirmeOrder(waimai_order_id);
  233. if(ret)
  234. {
  235. //确认成功,这里怎么处理
  236. //请求服务器,获取订单数据
  237. CWaimaiOrder new_order;
  238. new_order.InitData(waimai_order_id, waimai_order_no);
  239. //刷新订单详情页数据
  240. order_info_page->SetDate(new_order);
  241. order_info_page->Refresh(new_order);
  242. }
  243. }
  244. else if(name == _T("waimai_order_info_page_success"))
  245. {
  246. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  247. std::string waimai_order_id = order_info_page->m_order.m_order_id;
  248. std::string waimai_order_no = order_info_page->m_order.m_order_no;
  249. CWaimaiOrder order;
  250. bool ret = order.SuccessOrder(waimai_order_id);
  251. if(ret)
  252. {
  253. //订单设为成功,这里怎么处理
  254. //请求服务器,获取订单数据
  255. CWaimaiOrder new_order;
  256. new_order.InitData(waimai_order_id, waimai_order_no);
  257. //刷新订单详情页数据
  258. order_info_page->SetDate(new_order);
  259. order_info_page->Refresh(new_order);
  260. }
  261. }
  262. else if(name == _T("waimai_order_info_page_fail"))
  263. {
  264. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  265. std::string waimai_order_id = order_info_page->m_order.m_order_id;
  266. std::string waimai_order_no = order_info_page->m_order.m_order_no;
  267. CWaimaiOrder order;
  268. bool ret = order.FailOrder(waimai_order_id, "Windwos收银机测试");
  269. if(ret)
  270. {
  271. //订单设为失败,这里怎么处理
  272. //请求服务器,获取订单数据
  273. CWaimaiOrder new_order;
  274. new_order.InitData(waimai_order_id, waimai_order_no);
  275. //刷新订单详情页数据
  276. order_info_page->SetDate(new_order);
  277. order_info_page->Refresh(new_order);
  278. }
  279. }
  280. else if(name == _T("waimai_order_info_page_agree"))
  281. {
  282. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  283. std::string waimai_order_id = order_info_page->m_order.m_order_id;
  284. std::string waimai_order_no = order_info_page->m_order.m_order_no;
  285. CWaimaiOrder order;
  286. bool ret = order.AgreeRefund(waimai_order_id);
  287. if(ret)
  288. {
  289. //订单设为成功,这里怎么处理
  290. //请求服务器,获取订单数据
  291. CWaimaiOrder new_order;
  292. new_order.InitData(waimai_order_id, waimai_order_no);
  293. //刷新订单详情页数据
  294. order_info_page->SetDate(new_order);
  295. order_info_page->Refresh(new_order);
  296. }
  297. }
  298. else if(name == _T("waimai_order_info_page_disagree"))
  299. {
  300. CWaimaiOrderInfoUI* order_info_page = static_cast<CWaimaiOrderInfoUI*>(m_pm.FindControl(_T("waimaiorder_info_page")));
  301. std::string waimai_order_id = order_info_page->m_order.m_order_id;
  302. std::string waimai_order_no = order_info_page->m_order.m_order_no;
  303. CWaimaiOrder order;
  304. bool ret = order.DisagreeRefund(waimai_order_id);
  305. if(ret)
  306. {
  307. //订单设为成功,这里怎么处理
  308. //请求服务器,获取订单数据
  309. CWaimaiOrder new_order;
  310. new_order.InitData(waimai_order_id, waimai_order_no);
  311. //刷新订单详情页数据
  312. order_info_page->SetDate(new_order);
  313. order_info_page->Refresh(new_order);
  314. }
  315. }
  316. //开始处理设置页面的
  317. else if(name == _T("setting_is_new_waimai_voice"))
  318. {
  319. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_voice")));
  320. if(box->IsSelected())
  321. {
  322. CSetting::SetParam("setting_is_new_waimai_voice", "1");
  323. }
  324. else
  325. {
  326. CSetting::SetParam("setting_is_new_waimai_voice", "0");
  327. }
  328. }
  329. else if(name == _T("setting_is_new_waimai_autoconfirm"))
  330. {
  331. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_autoconfirm")));
  332. if(box->IsSelected())
  333. {
  334. CSetting::SetParam("setting_is_new_waimai_autoconfirm", "1");
  335. }
  336. else
  337. {
  338. CSetting::SetParam("setting_is_new_waimai_autoconfirm", "0");
  339. }
  340. }
  341. else if(name == _T("setting_is_new_waimai_dialog"))
  342. {
  343. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_dialog")));
  344. if(box->IsSelected())
  345. {
  346. CSetting::SetParam("setting_is_new_waimai_dialog", "1");
  347. }
  348. else
  349. {
  350. CSetting::SetParam("setting_is_new_waimai_dialog", "0");
  351. }
  352. }
  353. else if(name == _T("setting_is_new_waimai_printer"))
  354. {
  355. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_printer")));
  356. if(box->IsSelected())
  357. {
  358. CSetting::SetParam("setting_is_new_waimai_printer", "1");
  359. }
  360. else
  361. {
  362. CSetting::SetParam("setting_is_new_waimai_printer", "0");
  363. }
  364. }
  365. else if(name == _T("setting_is_new_waimai_chufang_printer"))
  366. {
  367. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_chufang_printer")));
  368. if(box->IsSelected())
  369. {
  370. CSetting::SetParam("setting_is_new_waimai_chufang_printer", "1");
  371. }
  372. else
  373. {
  374. CSetting::SetParam("setting_is_new_waimai_chufang_printer", "0");
  375. }
  376. }
  377. else if(name == _T("setting_is_auto_start"))
  378. {
  379. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_start")));
  380. if(box->IsSelected())
  381. {
  382. CSetting::SetParam("setting_is_auto_start", "1");
  383. }
  384. else
  385. {
  386. CSetting::SetParam("setting_is_auto_start", "0");
  387. }
  388. }
  389. else if(name == _T("setting_is_auto_login"))
  390. {
  391. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_login")));
  392. if(box->IsSelected())
  393. {
  394. CSetting::SetParam("setting_is_auto_login", "1");
  395. }
  396. else
  397. {
  398. CSetting::SetParam("setting_is_auto_login", "0");
  399. }
  400. }
  401. else if(name == _T("setting_is_close_min"))
  402. {
  403. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_close_min")));
  404. if(box->IsSelected())
  405. {
  406. CSetting::SetParam("setting_is_close_min", "1");
  407. }
  408. else
  409. {
  410. CSetting::SetParam("setting_is_close_min", "0");
  411. }
  412. }
  413. }
  414. void CMainWnd::HandleSelectChangeMsg(TNotifyUI& msg)
  415. {
  416. CDuiString name = msg.pSender->GetName();
  417. //先判断主页面的tab
  418. if(name == _T("main_waimai"))
  419. {
  420. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  421. if(pControl && pControl->GetCurSel() != 0)
  422. {
  423. pControl->SelectItem(0);
  424. }
  425. }
  426. else if(name == _T("main_setting"))
  427. {
  428. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  429. if(pControl && pControl->GetCurSel() != 2)
  430. {
  431. pControl->SelectItem(2);
  432. }
  433. }
  434. else if(name == _T("main_contact"))
  435. {
  436. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  437. if(pControl && pControl->GetCurSel() != 3)
  438. {
  439. pControl->SelectItem(3);
  440. }
  441. }
  442. //判断外卖的tab
  443. else if(name == _T("waimai_open_switch") || name == _T("waimai_confirmed_switch") || name == _T("waimai_delivery_switch") || name == _T("waimai_success_switch") || name == _T("waimai_fail_switch") || name == _T("waimai_cancel_switch") || name == _T("waimai_refund_switch"))
  444. {
  445. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  446. //切换状态全部重新开始从第1页
  447. orderlist->SetPage(1);
  448. if(name == _T("waimai_open_switch"))
  449. {
  450. orderlist->SetStatus(1);
  451. }
  452. else if(name == _T("waimai_confirmed_switch"))
  453. {
  454. orderlist->SetStatus(2);
  455. }
  456. else if(name == _T("waimai_delivery_switch"))
  457. {
  458. orderlist->SetStatus(3);
  459. }
  460. else if(name == _T("waimai_success_switch"))
  461. {
  462. orderlist->SetStatus(4);
  463. }
  464. else if(name == _T("waimai_fail_switch"))
  465. {
  466. orderlist->SetStatus(5);
  467. }
  468. else if(name == _T("waimai_cancel_switch"))
  469. {
  470. orderlist->SetStatus(6);
  471. }
  472. else if(name == _T("waimai_refund_switch"))
  473. {
  474. orderlist->SetStatus(7);
  475. }
  476. orderlist->Refresh();
  477. }
  478. //判断设置中心的tab
  479. else if(name == _T("setting_waimai_order_switch"))
  480. {
  481. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  482. pControl->SelectItem(0);
  483. InitSettingStatus();
  484. }
  485. else if(name == _T("setting_printer_switch"))
  486. {
  487. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  488. pControl->SelectItem(1);
  489. InitSettingStatus();
  490. }
  491. else if(name == _T("setting_chufang_printer_switch"))
  492. {
  493. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  494. pControl->SelectItem(2);
  495. InitSettingStatus();
  496. }
  497. else if(name == _T("setting_system_switch"))
  498. {
  499. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  500. pControl->SelectItem(3);
  501. InitSettingStatus();
  502. }
  503. else if(name == _T("setting_system_update"))
  504. {
  505. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  506. pControl->SelectItem(4);
  507. InitSettingStatus();
  508. }
  509. }
  510. void CMainWnd::HandleItemSelectMsg(TNotifyUI& msg)
  511. {
  512. CDuiString name = msg.pSender->GetName();
  513. if(name == _T("setting_printer_guige"))
  514. {
  515. CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_guige")));
  516. if(com->GetCurSel() == 0)
  517. {
  518. CSetting::SetParam("setting_printer_guige", "58");
  519. }
  520. else
  521. {
  522. CSetting::SetParam("setting_printer_guige", "80");
  523. }
  524. }
  525. else if(name == _T("setting_printer_lianshu"))
  526. {
  527. CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_lianshu")));
  528. if(com->GetCurSel() == 0)
  529. {
  530. CSetting::SetParam("setting_printer_lianshu", "1");
  531. }
  532. else if(com->GetCurSel() == 1)
  533. {
  534. CSetting::SetParam("setting_printer_lianshu", "2");
  535. }
  536. else if(com->GetCurSel() == 2)
  537. {
  538. CSetting::SetParam("setting_printer_lianshu", "3");
  539. }
  540. else if(com->GetCurSel() == 3)
  541. {
  542. CSetting::SetParam("setting_printer_lianshu", "4");
  543. }
  544. }
  545. else if(name == _T("setting_chufang_printer_guige"))
  546. {
  547. CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_chufang_printer_guige")));
  548. if(com->GetCurSel() == 0)
  549. {
  550. CSetting::SetParam("setting_chufang_printer_guige", "58");
  551. }
  552. else
  553. {
  554. CSetting::SetParam("setting_chufang_printer_guige", "80");
  555. }
  556. }
  557. }
  558. LRESULT CMainWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  559. {
  560. LRESULT lRes = 0;
  561. BOOL bHandled = TRUE;
  562. switch(uMsg)
  563. {
  564. case WM_CREATE:
  565. lRes = OnCreate(uMsg, wParam, lParam, bHandled);
  566. break;
  567. case WM_CLOSE:
  568. lRes = OnClose(uMsg, wParam, lParam, bHandled);
  569. break;
  570. case WM_DESTROY:
  571. lRes = OnDestroy(uMsg, wParam, lParam, bHandled);
  572. break;
  573. case WM_NCACTIVATE:
  574. lRes = OnNcActivate(uMsg, wParam, lParam, bHandled);
  575. break;
  576. case WM_NCCALCSIZE:
  577. lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);
  578. break;
  579. case WM_NCPAINT:
  580. lRes = OnNcPaint(uMsg, wParam, lParam, bHandled);
  581. break;
  582. case WM_NCHITTEST:
  583. lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled);
  584. break;
  585. case WM_SIZE:
  586. lRes = OnSize(uMsg, wParam, lParam, bHandled);
  587. break;
  588. case WM_GETMINMAXINFO:
  589. lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled);
  590. break;
  591. case WM_SYSCOMMAND:
  592. lRes = OnSysCommand(uMsg, wParam, lParam, bHandled);
  593. break;
  594. default:
  595. bHandled = FALSE;
  596. }
  597. if(bHandled)
  598. {
  599. return lRes;
  600. }
  601. if(m_pm.MessageHandler(uMsg, wParam, lParam, lRes))
  602. {
  603. return lRes;
  604. }
  605. return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
  606. }
  607. LRESULT CMainWnd::OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  608. {
  609. // 有时会在收到WM_NCDESTROY后收到wParam为SC_CLOSE的WM_SYSCOMMAND
  610. if(wParam == SC_CLOSE)
  611. {
  612. ::PostQuitMessage(0L);
  613. bHandled = TRUE;
  614. return 0;
  615. }
  616. BOOL bZoomed = ::IsZoomed(*this);
  617. LRESULT lRes = CWindowWnd::HandleMessage(uMsg, wParam, lParam);
  618. if(::IsZoomed(*this) != bZoomed)
  619. {
  620. if(!bZoomed)
  621. {
  622. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("maxbtn")));
  623. if(pControl)
  624. {
  625. pControl->SetVisible(false);
  626. }
  627. pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("restorebtn")));
  628. if(pControl)
  629. {
  630. pControl->SetVisible(true);
  631. }
  632. }
  633. else
  634. {
  635. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("maxbtn")));
  636. if(pControl)
  637. {
  638. pControl->SetVisible(true);
  639. }
  640. pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("restorebtn")));
  641. if(pControl)
  642. {
  643. pControl->SetVisible(false);
  644. }
  645. }
  646. }
  647. return lRes;
  648. }
  649. LRESULT CMainWnd::OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  650. {
  651. int primaryMonitorWidth = ::GetSystemMetrics(SM_CXSCREEN);
  652. int primaryMonitorHeight = ::GetSystemMetrics(SM_CYSCREEN);
  653. MONITORINFO oMonitor = {};
  654. oMonitor.cbSize = sizeof(oMonitor);
  655. ::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTOPRIMARY), &oMonitor);
  656. CDuiRect rcWork = oMonitor.rcWork;
  657. rcWork.Offset(-oMonitor.rcMonitor.left, -oMonitor.rcMonitor.top);
  658. if(rcWork.right > primaryMonitorWidth)
  659. {
  660. rcWork.right = primaryMonitorWidth;
  661. }
  662. if(rcWork.bottom > primaryMonitorHeight)
  663. {
  664. rcWork.right = primaryMonitorHeight;
  665. }
  666. LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;
  667. lpMMI->ptMaxPosition.x = rcWork.left;
  668. lpMMI->ptMaxPosition.y = rcWork.top;
  669. lpMMI->ptMaxSize.x = rcWork.right;
  670. lpMMI->ptMaxSize.y = rcWork.bottom;
  671. bHandled = FALSE;
  672. return 0;
  673. }
  674. LRESULT CMainWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  675. {
  676. SIZE szRoundCorner = m_pm.GetRoundCorner();
  677. if(!::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0))
  678. {
  679. CDuiRect rcWnd;
  680. ::GetWindowRect(*this, &rcWnd);
  681. rcWnd.Offset(-rcWnd.left, -rcWnd.top);
  682. rcWnd.right++;
  683. rcWnd.bottom++;
  684. HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
  685. ::SetWindowRgn(*this, hRgn, TRUE);
  686. ::DeleteObject(hRgn);
  687. }
  688. bHandled = FALSE;
  689. return 0;
  690. }
  691. LRESULT CMainWnd::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  692. {
  693. POINT pt;
  694. pt.x = GET_X_LPARAM(lParam);
  695. pt.y = GET_Y_LPARAM(lParam);
  696. ::ScreenToClient(*this, &pt);
  697. RECT rcClient;
  698. ::GetClientRect(*this, &rcClient);
  699. if(!::IsZoomed(*this))
  700. {
  701. RECT rcSizeBox = m_pm.GetSizeBox();
  702. if(pt.y < rcClient.top + rcSizeBox.top)
  703. {
  704. if(pt.x < rcClient.left + rcSizeBox.left)
  705. {
  706. return HTTOPLEFT;
  707. }
  708. if(pt.x > rcClient.right - rcSizeBox.right)
  709. {
  710. return HTTOPRIGHT;
  711. }
  712. return HTTOP;
  713. }
  714. else if(pt.y > rcClient.bottom - rcSizeBox.bottom)
  715. {
  716. if(pt.x < rcClient.left + rcSizeBox.left)
  717. {
  718. return HTBOTTOMLEFT;
  719. }
  720. if(pt.x > rcClient.right - rcSizeBox.right)
  721. {
  722. return HTBOTTOMRIGHT;
  723. }
  724. return HTBOTTOM;
  725. }
  726. if(pt.x < rcClient.left + rcSizeBox.left)
  727. {
  728. return HTLEFT;
  729. }
  730. if(pt.x > rcClient.right - rcSizeBox.right)
  731. {
  732. return HTRIGHT;
  733. }
  734. }
  735. RECT rcCaption = m_pm.GetCaptionRect();
  736. if(pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
  737. && pt.y >= rcCaption.top && pt.y < rcCaption.bottom)
  738. {
  739. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(pt));
  740. if(pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0 &&
  741. _tcscmp(pControl->GetClass(), DUI_CTR_OPTION) != 0 &&
  742. _tcscmp(pControl->GetClass(), DUI_CTR_TEXT) != 0)
  743. {
  744. return HTCAPTION;
  745. }
  746. }
  747. return HTCLIENT;
  748. }
  749. void CMainWnd::InitSettingStatus()
  750. {
  751. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  752. int sel = pControl->GetCurSel();
  753. CCheckBoxUI* box = NULL;
  754. CComboUI* com = NULL;
  755. if (sel == 0)
  756. {
  757. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_voice")));
  758. if (CSetting::GetParam("setting_is_new_waimai_voice") == "1")
  759. {
  760. box->Selected(true, false);
  761. }
  762. else
  763. {
  764. box->Selected(false, false);
  765. }
  766. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_autoconfirm")));
  767. if (CSetting::GetParam("setting_is_new_waimai_autoconfirm") == "1")
  768. {
  769. box->Selected(true, false);
  770. }
  771. else
  772. {
  773. box->Selected(false, false);
  774. }
  775. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_dialog")));
  776. if (CSetting::GetParam("setting_is_new_waimai_dialog") == "1")
  777. {
  778. box->Selected(true, false);
  779. }
  780. else
  781. {
  782. box->Selected(false, false);
  783. }
  784. }
  785. else if (sel == 1)
  786. {
  787. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_printer")));
  788. if (CSetting::GetParam("setting_is_new_waimai_printer") == "1")
  789. {
  790. box->Selected(true, false);
  791. }
  792. else
  793. {
  794. box->Selected(false, false);
  795. }
  796. com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_guige")));
  797. if (CSetting::GetParam("setting_printer_guige") == "58")
  798. {
  799. com->SelectItem(0, false, false);
  800. com->SetText(L"58mm");
  801. }
  802. else
  803. {
  804. com->SelectItem(1, false, false);
  805. com->SetText(L"80mm");
  806. }
  807. com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_lianshu")));
  808. std::string setting_printer_lianshu = CSetting::GetParam("setting_printer_lianshu");
  809. if (setting_printer_lianshu == "1")
  810. {
  811. com->SelectItem(0, false, false);
  812. com->SetText(L"1联");
  813. }
  814. else if (setting_printer_lianshu == "2")
  815. {
  816. com->SelectItem(1, false, false);
  817. com->SetText(L"2联");
  818. }
  819. else if (setting_printer_lianshu == "3")
  820. {
  821. com->SelectItem(2, false, false);
  822. com->SetText(L"3联");
  823. }
  824. else if (setting_printer_lianshu == "4")
  825. {
  826. com->SelectItem(3, false, false);
  827. com->SetText(L"4联");
  828. }
  829. }
  830. else if (sel == 2)
  831. {
  832. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_chufang_printer")));
  833. if (CSetting::GetParam("setting_is_new_waimai_chufang_printer") == "1")
  834. {
  835. box->Selected(true, false);
  836. com->SetText(L"58mm");
  837. }
  838. else
  839. {
  840. box->Selected(false, false);
  841. com->SetText(L"80mm");
  842. }
  843. com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_chufang_printer_guige")));
  844. if (CSetting::GetParam("setting_chufang_printer_guige") == "58")
  845. {
  846. com->SelectItem(0, false, false);
  847. }
  848. else
  849. {
  850. com->SelectItem(1, false, false);
  851. }
  852. }
  853. else if (sel == 3)
  854. {
  855. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_start")));
  856. if (CSetting::GetParam("setting_is_auto_start") == "1")
  857. {
  858. box->Selected(true, false);
  859. }
  860. else
  861. {
  862. box->Selected(false, false);
  863. }
  864. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_login")));
  865. if (CSetting::GetParam("setting_is_auto_login") == "1")
  866. {
  867. box->Selected(true, false);
  868. }
  869. else
  870. {
  871. box->Selected(false, false);
  872. }
  873. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_close_min")));
  874. if (CSetting::GetParam("setting_is_close_min") == "1")
  875. {
  876. box->Selected(true, false);
  877. }
  878. else
  879. {
  880. box->Selected(false, false);
  881. }
  882. }
  883. }