CMainWnd.cpp 36 KB

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