CMainWnd.cpp 31 KB

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