CMainWnd.cpp 34 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211
  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* pGuige = static_cast<CLabelUI*>(pEle->FindSubControl(_T("setting_chufang_printer_guige")));
  403. if(newPrinter.guige == "58")
  404. {
  405. pGuige->SetText(L"58mm");
  406. }
  407. else
  408. {
  409. pGuige->SetText(L"80mm");
  410. }
  411. CLabelUI* pFendan = static_cast<CLabelUI*>(pEle->FindSubControl(_T("setting_chufang_printer_fendan")));
  412. if(newPrinter.fendan == "1")
  413. {
  414. pFendan->SetText(L"是");
  415. }
  416. else
  417. {
  418. pFendan->SetText(L"否");
  419. }
  420. CLabelUI* pFenlei = static_cast<CLabelUI*>(pEle->FindSubControl(_T("setting_chufang_printer_item_fenlei")));
  421. if(newPrinter.fenlei == "1")
  422. {
  423. pFenlei->SetText(L"是");
  424. }
  425. else
  426. {
  427. pFenlei->SetText(L"否");
  428. }
  429. pEle->AddCustomAttribute(L"date", CLewaimaiString::UTF8ToUnicode(newPrinter.date).c_str());
  430. pPrinterList->Add(pEle);
  431. }
  432. }
  433. }
  434. else if(name == _T("setting_is_auto_start"))
  435. {
  436. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_start")));
  437. if(box->IsSelected())
  438. {
  439. CSetting::SetParam("setting_is_auto_start", "0");
  440. }
  441. else
  442. {
  443. CSetting::SetParam("setting_is_auto_start", "1");
  444. }
  445. }
  446. else if(name == _T("setting_is_auto_login"))
  447. {
  448. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_login")));
  449. if(box->IsSelected())
  450. {
  451. CSetting::SetParam("setting_is_auto_login", "0");
  452. }
  453. else
  454. {
  455. CSetting::SetParam("setting_is_auto_login", "1");
  456. }
  457. }
  458. else if(name == _T("setting_is_close_min"))
  459. {
  460. CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_close_min")));
  461. if(box->IsSelected())
  462. {
  463. CSetting::SetParam("setting_is_close_min", "0");
  464. }
  465. else
  466. {
  467. CSetting::SetParam("setting_is_close_min", "1");
  468. }
  469. }
  470. else if (name == _T("setting_chufang_printer_item_delete_btn"))
  471. {
  472. CListUI* pPrinterList = static_cast<CListUI*>(m_pm.FindControl(_T("setting_chufang_printer_list")));
  473. CListContainerElementUI* pEle = static_cast<CListContainerElementUI*>(msg.pSender->GetParent()->GetParent()->GetParent());
  474. wstring date = pEle->GetCustomAttribute(L"date");
  475. //获得了ID,这个时候从内存和数据库中分别删除对应的记录
  476. CSetting::DelChufangPrinter(CLewaimaiString::UnicodeToUTF8(date));
  477. pPrinterList->Remove(pEle);
  478. }
  479. }
  480. void CMainWnd::HandleSelectChangeMsg(TNotifyUI& msg)
  481. {
  482. CDuiString name = msg.pSender->GetName();
  483. //先判断主页面的tab
  484. if(name == _T("main_waimai"))
  485. {
  486. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  487. if(pControl && pControl->GetCurSel() != 0)
  488. {
  489. pControl->SelectItem(0);
  490. }
  491. }
  492. else if(name == _T("main_setting"))
  493. {
  494. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  495. if(pControl && pControl->GetCurSel() != 2)
  496. {
  497. pControl->SelectItem(2);
  498. }
  499. }
  500. else if(name == _T("main_contact"))
  501. {
  502. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("switch")));
  503. if(pControl && pControl->GetCurSel() != 3)
  504. {
  505. pControl->SelectItem(3);
  506. }
  507. }
  508. //判断外卖的tab
  509. 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"))
  510. {
  511. OrderListUI* orderlist = static_cast<OrderListUI*>(m_pm.FindControl(_T("orderlist")));
  512. //切换状态全部重新开始从第1页
  513. orderlist->SetPage(1);
  514. if(name == _T("waimai_open_switch"))
  515. {
  516. orderlist->SetStatus(1);
  517. }
  518. else if(name == _T("waimai_confirmed_switch"))
  519. {
  520. orderlist->SetStatus(2);
  521. }
  522. else if(name == _T("waimai_delivery_switch"))
  523. {
  524. orderlist->SetStatus(3);
  525. }
  526. else if(name == _T("waimai_success_switch"))
  527. {
  528. orderlist->SetStatus(4);
  529. }
  530. else if(name == _T("waimai_fail_switch"))
  531. {
  532. orderlist->SetStatus(5);
  533. }
  534. else if(name == _T("waimai_cancel_switch"))
  535. {
  536. orderlist->SetStatus(6);
  537. }
  538. else if(name == _T("waimai_refund_switch"))
  539. {
  540. orderlist->SetStatus(7);
  541. }
  542. orderlist->Refresh();
  543. }
  544. //判断设置中心的tab
  545. else if(name == _T("setting_waimai_order_switch"))
  546. {
  547. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  548. pControl->SelectItem(0);
  549. }
  550. else if(name == _T("setting_printer_switch"))
  551. {
  552. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  553. pControl->SelectItem(1);
  554. }
  555. else if(name == _T("setting_chufang_printer_switch"))
  556. {
  557. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  558. pControl->SelectItem(2);
  559. }
  560. else if(name == _T("setting_system_switch"))
  561. {
  562. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  563. pControl->SelectItem(3);
  564. }
  565. else if(name == _T("setting_system_update"))
  566. {
  567. CTabLayoutUI* pControl = static_cast<CTabLayoutUI*>(m_pm.FindControl(_T("setting_switch")));
  568. pControl->SelectItem(4);
  569. }
  570. }
  571. void CMainWnd::HandleItemSelectMsg(TNotifyUI& msg)
  572. {
  573. CDuiString name = msg.pSender->GetName();
  574. if(name == _T("setting_printer_guige"))
  575. {
  576. CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_guige")));
  577. if(com->GetCurSel() == 0)
  578. {
  579. CSetting::SetParam("setting_printer_guige", "58");
  580. }
  581. else
  582. {
  583. CSetting::SetParam("setting_printer_guige", "80");
  584. }
  585. }
  586. else if(name == _T("setting_printer_lianshu"))
  587. {
  588. CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_lianshu")));
  589. if(com->GetCurSel() == 0)
  590. {
  591. CSetting::SetParam("setting_printer_lianshu", "1");
  592. }
  593. else if(com->GetCurSel() == 1)
  594. {
  595. CSetting::SetParam("setting_printer_lianshu", "2");
  596. }
  597. else if(com->GetCurSel() == 2)
  598. {
  599. CSetting::SetParam("setting_printer_lianshu", "3");
  600. }
  601. else if(com->GetCurSel() == 3)
  602. {
  603. CSetting::SetParam("setting_printer_lianshu", "4");
  604. }
  605. }
  606. }
  607. LRESULT CMainWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  608. {
  609. LRESULT lRes = 0;
  610. BOOL bHandled = TRUE;
  611. switch(uMsg)
  612. {
  613. case WM_CREATE:
  614. lRes = OnCreate(uMsg, wParam, lParam, bHandled);
  615. break;
  616. case WM_CLOSE:
  617. lRes = OnClose(uMsg, wParam, lParam, bHandled);
  618. break;
  619. case WM_DESTROY:
  620. lRes = OnDestroy(uMsg, wParam, lParam, bHandled);
  621. break;
  622. case WM_NCACTIVATE:
  623. lRes = OnNcActivate(uMsg, wParam, lParam, bHandled);
  624. break;
  625. case WM_NCCALCSIZE:
  626. lRes = OnNcCalcSize(uMsg, wParam, lParam, bHandled);
  627. break;
  628. case WM_NCPAINT:
  629. lRes = OnNcPaint(uMsg, wParam, lParam, bHandled);
  630. break;
  631. case WM_NCHITTEST:
  632. lRes = OnNcHitTest(uMsg, wParam, lParam, bHandled);
  633. break;
  634. case WM_SIZE:
  635. lRes = OnSize(uMsg, wParam, lParam, bHandled);
  636. break;
  637. case WM_GETMINMAXINFO:
  638. lRes = OnGetMinMaxInfo(uMsg, wParam, lParam, bHandled);
  639. break;
  640. case WM_SYSCOMMAND:
  641. lRes = OnSysCommand(uMsg, wParam, lParam, bHandled);
  642. break;
  643. default:
  644. bHandled = FALSE;
  645. }
  646. if(bHandled)
  647. {
  648. return lRes;
  649. }
  650. if(m_pm.MessageHandler(uMsg, wParam, lParam, lRes))
  651. {
  652. return lRes;
  653. }
  654. return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
  655. }
  656. LRESULT CMainWnd::OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  657. {
  658. // 有时会在收到WM_NCDESTROY后收到wParam为SC_CLOSE的WM_SYSCOMMAND
  659. if(wParam == SC_CLOSE)
  660. {
  661. ::PostQuitMessage(0L);
  662. bHandled = TRUE;
  663. return 0;
  664. }
  665. BOOL bZoomed = ::IsZoomed(*this);
  666. LRESULT lRes = CWindowWnd::HandleMessage(uMsg, wParam, lParam);
  667. if(::IsZoomed(*this) != bZoomed)
  668. {
  669. if(!bZoomed)
  670. {
  671. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("maxbtn")));
  672. if(pControl)
  673. {
  674. pControl->SetVisible(false);
  675. }
  676. pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("restorebtn")));
  677. if(pControl)
  678. {
  679. pControl->SetVisible(true);
  680. }
  681. }
  682. else
  683. {
  684. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("maxbtn")));
  685. if(pControl)
  686. {
  687. pControl->SetVisible(true);
  688. }
  689. pControl = static_cast<CControlUI*>(m_pm.FindControl(_T("restorebtn")));
  690. if(pControl)
  691. {
  692. pControl->SetVisible(false);
  693. }
  694. }
  695. }
  696. return lRes;
  697. }
  698. LRESULT CMainWnd::OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  699. {
  700. int primaryMonitorWidth = ::GetSystemMetrics(SM_CXSCREEN);
  701. int primaryMonitorHeight = ::GetSystemMetrics(SM_CYSCREEN);
  702. MONITORINFO oMonitor = {};
  703. oMonitor.cbSize = sizeof(oMonitor);
  704. ::GetMonitorInfo(::MonitorFromWindow(*this, MONITOR_DEFAULTTOPRIMARY), &oMonitor);
  705. CDuiRect rcWork = oMonitor.rcWork;
  706. rcWork.Offset(-oMonitor.rcMonitor.left, -oMonitor.rcMonitor.top);
  707. if(rcWork.right > primaryMonitorWidth)
  708. {
  709. rcWork.right = primaryMonitorWidth;
  710. }
  711. if(rcWork.bottom > primaryMonitorHeight)
  712. {
  713. rcWork.right = primaryMonitorHeight;
  714. }
  715. LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;
  716. lpMMI->ptMaxPosition.x = rcWork.left;
  717. lpMMI->ptMaxPosition.y = rcWork.top;
  718. lpMMI->ptMaxSize.x = rcWork.right;
  719. lpMMI->ptMaxSize.y = rcWork.bottom;
  720. bHandled = FALSE;
  721. return 0;
  722. }
  723. LRESULT CMainWnd::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  724. {
  725. SIZE szRoundCorner = m_pm.GetRoundCorner();
  726. if(!::IsIconic(*this) && (szRoundCorner.cx != 0 || szRoundCorner.cy != 0))
  727. {
  728. CDuiRect rcWnd;
  729. ::GetWindowRect(*this, &rcWnd);
  730. rcWnd.Offset(-rcWnd.left, -rcWnd.top);
  731. rcWnd.right++;
  732. rcWnd.bottom++;
  733. HRGN hRgn = ::CreateRoundRectRgn(rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, szRoundCorner.cx, szRoundCorner.cy);
  734. ::SetWindowRgn(*this, hRgn, TRUE);
  735. ::DeleteObject(hRgn);
  736. }
  737. bHandled = FALSE;
  738. return 0;
  739. }
  740. LRESULT CMainWnd::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  741. {
  742. POINT pt;
  743. pt.x = GET_X_LPARAM(lParam);
  744. pt.y = GET_Y_LPARAM(lParam);
  745. ::ScreenToClient(*this, &pt);
  746. RECT rcClient;
  747. ::GetClientRect(*this, &rcClient);
  748. if(!::IsZoomed(*this))
  749. {
  750. RECT rcSizeBox = m_pm.GetSizeBox();
  751. if(pt.y < rcClient.top + rcSizeBox.top)
  752. {
  753. if(pt.x < rcClient.left + rcSizeBox.left)
  754. {
  755. return HTTOPLEFT;
  756. }
  757. if(pt.x > rcClient.right - rcSizeBox.right)
  758. {
  759. return HTTOPRIGHT;
  760. }
  761. return HTTOP;
  762. }
  763. else if(pt.y > rcClient.bottom - rcSizeBox.bottom)
  764. {
  765. if(pt.x < rcClient.left + rcSizeBox.left)
  766. {
  767. return HTBOTTOMLEFT;
  768. }
  769. if(pt.x > rcClient.right - rcSizeBox.right)
  770. {
  771. return HTBOTTOMRIGHT;
  772. }
  773. return HTBOTTOM;
  774. }
  775. if(pt.x < rcClient.left + rcSizeBox.left)
  776. {
  777. return HTLEFT;
  778. }
  779. if(pt.x > rcClient.right - rcSizeBox.right)
  780. {
  781. return HTRIGHT;
  782. }
  783. }
  784. RECT rcCaption = m_pm.GetCaptionRect();
  785. if(pt.x >= rcClient.left + rcCaption.left && pt.x < rcClient.right - rcCaption.right \
  786. && pt.y >= rcCaption.top && pt.y < rcCaption.bottom)
  787. {
  788. CControlUI* pControl = static_cast<CControlUI*>(m_pm.FindControl(pt));
  789. if(pControl && _tcscmp(pControl->GetClass(), DUI_CTR_BUTTON) != 0 &&
  790. _tcscmp(pControl->GetClass(), DUI_CTR_OPTION) != 0 &&
  791. _tcscmp(pControl->GetClass(), DUI_CTR_TEXT) != 0)
  792. {
  793. return HTCAPTION;
  794. }
  795. }
  796. return HTCLIENT;
  797. }
  798. void CMainWnd::InitSettingStatus()
  799. {
  800. CCheckBoxUI* box = NULL;
  801. CComboUI* com = NULL;
  802. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_voice")));
  803. if(CSetting::GetParam("setting_is_new_waimai_voice") == "1")
  804. {
  805. box->Selected(true, false);
  806. }
  807. else
  808. {
  809. box->Selected(false, false);
  810. }
  811. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_autoconfirm")));
  812. if(CSetting::GetParam("setting_is_new_waimai_autoconfirm") == "1")
  813. {
  814. box->Selected(true, false);
  815. }
  816. else
  817. {
  818. box->Selected(false, false);
  819. }
  820. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_dialog")));
  821. if(CSetting::GetParam("setting_is_new_waimai_dialog") == "1")
  822. {
  823. box->Selected(true, false);
  824. }
  825. else
  826. {
  827. box->Selected(false, false);
  828. }
  829. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_printer")));
  830. if(CSetting::GetParam("setting_is_new_waimai_printer") == "1")
  831. {
  832. box->Selected(true, false);
  833. }
  834. else
  835. {
  836. box->Selected(false, false);
  837. }
  838. com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_guige")));
  839. if(CSetting::GetParam("setting_printer_guige") == "58")
  840. {
  841. com->SetInternVisible(true);
  842. com->SelectItem(0, false, false);
  843. }
  844. else
  845. {
  846. com->SetInternVisible(true);
  847. com->SelectItem(1, false, false);
  848. }
  849. com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_printer_lianshu")));
  850. std::string setting_printer_lianshu = CSetting::GetParam("setting_printer_lianshu");
  851. if(setting_printer_lianshu == "1")
  852. {
  853. com->SetInternVisible(true);
  854. com->SelectItem(0, false, false);
  855. com->SetText(L"1联");
  856. }
  857. else if(setting_printer_lianshu == "2")
  858. {
  859. com->SetInternVisible(true);
  860. com->SelectItem(1, false, false);
  861. com->SetText(L"2联");
  862. }
  863. else if(setting_printer_lianshu == "3")
  864. {
  865. com->SetInternVisible(true);
  866. com->SelectItem(2, false, false);
  867. com->SetText(L"3联");
  868. }
  869. else if(setting_printer_lianshu == "4")
  870. {
  871. com->SetInternVisible(true);
  872. com->SelectItem(3, false, false);
  873. com->SetText(L"4联");
  874. }
  875. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_chufang_printer")));
  876. if(CSetting::GetParam("setting_is_new_waimai_chufang_printer") == "1")
  877. {
  878. box->Selected(true, false);
  879. }
  880. else
  881. {
  882. box->Selected(false, false);
  883. }
  884. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_start")));
  885. if(CSetting::GetParam("setting_is_auto_start") == "1")
  886. {
  887. box->Selected(true, false);
  888. }
  889. else
  890. {
  891. box->Selected(false, false);
  892. }
  893. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_auto_login")));
  894. if(CSetting::GetParam("setting_is_auto_login") == "1")
  895. {
  896. box->Selected(true, false);
  897. }
  898. else
  899. {
  900. box->Selected(false, false);
  901. }
  902. box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_close_min")));
  903. if(CSetting::GetParam("setting_is_close_min") == "1")
  904. {
  905. box->Selected(true, false);
  906. }
  907. else
  908. {
  909. box->Selected(false, false);
  910. }
  911. //这里开始,初始化厨房打印机的设置
  912. CListUI* pPrinterList = static_cast<CListUI*>(m_pm.FindControl(_T("setting_chufang_printer_list")));
  913. //获取厨房打印机的集合
  914. std::vector<ChufangPrinter> printers = CSetting::getChufangPrints();
  915. for(std::vector<ChufangPrinter>::iterator it = printers.begin(); it != printers.end(); it++)
  916. {
  917. ChufangPrinter newPrinter = *it;
  918. CDialogBuilder builder;
  919. CListContainerElementUI* pEle = static_cast<CListContainerElementUI*>(builder.Create(_T("setting_chufang_printer_item.xml"), (UINT)0, NULL, &m_pm));
  920. CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("setting_chufang_printer_item_name")));
  921. pName->SetText(CLewaimaiString::UTF8ToUnicode(newPrinter.name).c_str());
  922. CLabelUI* pIP = static_cast<CLabelUI*>(pEle->FindSubControl(_T("setting_chufang_printer_item_ip")));
  923. pIP->SetText(CLewaimaiString::UTF8ToUnicode(newPrinter.ip).c_str());
  924. CLabelUI* pGuige = static_cast<CLabelUI*>(pEle->FindSubControl(_T("setting_chufang_printer_guige")));
  925. if(newPrinter.guige == "58")
  926. {
  927. pGuige->SetText(L"58mm");
  928. }
  929. else
  930. {
  931. pGuige->SetText(L"80mm");
  932. }
  933. CLabelUI* pFendan = static_cast<CLabelUI*>(pEle->FindSubControl(_T("setting_chufang_printer_fendan")));
  934. if(newPrinter.fendan == "1")
  935. {
  936. pFendan->SetText(L"是");
  937. }
  938. else
  939. {
  940. pFendan->SetText(L"否");
  941. }
  942. CLabelUI* pFenlei = static_cast<CLabelUI*>(pEle->FindSubControl(_T("setting_chufang_printer_item_fenlei")));
  943. if(newPrinter.fenlei == "1")
  944. {
  945. pFenlei->SetText(L"是");
  946. }
  947. else
  948. {
  949. pFenlei->SetText(L"否");
  950. }
  951. pEle->AddCustomAttribute(L"date", CLewaimaiString::UTF8ToUnicode(newPrinter.date).c_str());
  952. pPrinterList->Add(pEle);
  953. }
  954. }