CGengduoPageUI.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808
  1. #include "../pch/pch.h"
  2. #include "CGengduoPageUI.h"
  3. #include "../control/ControlEx.h"
  4. #include "../wnd/CHuiyuanChongzhiWnd.h"
  5. #include "../wnd/CHuiyuanAddWnd.h"
  6. CGengduoPageUI::CGengduoPageUI()
  7. {
  8. }
  9. CGengduoPageUI::~CGengduoPageUI()
  10. {
  11. }
  12. //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
  13. void CGengduoPageUI::InitShow()
  14. {
  15. //根据当前数据库里面对功能的配置,来初始化显示
  16. m_changyongString = CSetting::GetParam("setting_gongneng_changyong_string");
  17. m_gengduoString = CSetting::GetParam("setting_gongneng_gengduo_string");
  18. Refresh();
  19. }
  20. //处理按钮点击类事件
  21. void CGengduoPageUI::HandleClickMsg(TNotifyUI& msg)
  22. {
  23. CDuiString name = msg.pSender->GetName();
  24. if (name == L"front")
  25. {
  26. QianYi(msg.pSender);
  27. }
  28. else if (name == L"back")
  29. {
  30. HouYi(msg.pSender);
  31. }
  32. else if (name == L"exchange")
  33. {
  34. Jiaohuan(msg.pSender);
  35. }
  36. else if (name == L"gengduo_front")
  37. {
  38. GengduoQianYi(msg.pSender);
  39. }
  40. else if (name == L"gengduo_back")
  41. {
  42. GengduoHouYi(msg.pSender);
  43. }
  44. else if (name == L"gengduo_exchange")
  45. {
  46. GengduoJiaohuan(msg.pSender);
  47. }
  48. else if (name == L"gengduo_item_btn")
  49. {
  50. DianjiBtn(msg.pSender);
  51. }
  52. }
  53. //处理option切换事件
  54. void CGengduoPageUI::HandleSelectChangeMsg(TNotifyUI& msg)
  55. {
  56. }
  57. //处理下拉框、radio的切换事件
  58. void CGengduoPageUI::HandleItemSelectMsg(TNotifyUI& msg)
  59. {
  60. }
  61. //处理编辑框输入内容改变事件
  62. void CGengduoPageUI::HandleTextChangedMsg(TNotifyUI& msg)
  63. {
  64. DuiLib::CDuiString senderName = msg.pSender->GetName();
  65. if (senderName == L"huiyuan_page_shoujihao_edit")
  66. {
  67. }
  68. }
  69. //处理扫码枪捕捉到的扫码信息
  70. void CGengduoPageUI::HandleTextCapture(std::string content)
  71. {
  72. if (m_is_show_modal_wnd == true)
  73. {
  74. m_curModalWnd->HandleTextCapture(content);
  75. }
  76. }
  77. bool CGengduoPageUI::HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  78. {
  79. return false;
  80. }
  81. void CGengduoPageUI::Refresh()
  82. {
  83. //先渲染常用
  84. std::vector<string> changyongVector = CLewaimaiString::Split(m_changyongString, ",");
  85. CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
  86. changyongLayout->RemoveAll();
  87. for (std::vector<string>::iterator it = changyongVector.begin(); it != changyongVector.end(); it++)
  88. {
  89. CDialogBuilder builder;
  90. CDialogBuilderCallbackEx cb;
  91. CVerticalLayoutUI* pItem = static_cast<CVerticalLayoutUI*>(builder.Create(_T("gengduo_item.xml"), (UINT)0, &cb, m_pManager));
  92. CControlUI* pTitle = pItem->FindSubControl(L"title");
  93. CControlUI* pImage = pItem->FindSubControl(L"image");
  94. if (*it == "diandan")
  95. {
  96. pTitle->SetText(L"点单");
  97. pImage->SetBkImage(L"main_diandan.png");
  98. pItem->SetName(L"diandan");
  99. }
  100. else if (*it == "dingdan")
  101. {
  102. pTitle->SetText(L"订单");
  103. pImage->SetBkImage(L"main_waimai.png");
  104. pItem->SetName(L"dingdan");
  105. }
  106. else if (*it == "huiyuan")
  107. {
  108. pTitle->SetText(L"会员");
  109. pImage->SetBkImage(L"main_huiyuan.png");
  110. pItem->SetName(L"huiyuan");
  111. }
  112. else if (*it == "baobiao")
  113. {
  114. pTitle->SetText(L"报表");
  115. pImage->SetBkImage(L"main_baobiao.png");
  116. pItem->SetName(L"baobiao");
  117. }
  118. else if (*it == "jiaoban")
  119. {
  120. pTitle->SetText(L"交班");
  121. pImage->SetBkImage(L"main_jiaoban.png");
  122. pItem->SetName(L"jiaoban");
  123. }
  124. else if (*it == "setting")
  125. {
  126. pTitle->SetText(L"设置");
  127. pImage->SetBkImage(L"main_setting.png");
  128. pItem->SetName(L"setting");
  129. }
  130. else if (*it == "shangpin")
  131. {
  132. pTitle->SetText(L"商品");
  133. pImage->SetBkImage(L"main_shangpin.png");
  134. pItem->SetName(L"shangpin");
  135. }
  136. else if (*it == "kucun")
  137. {
  138. pTitle->SetText(L"库存");
  139. pImage->SetBkImage(L"main_kucun.png");
  140. pItem->SetName(L"kucun");
  141. }
  142. else if (*it == "caigou")
  143. {
  144. pTitle->SetText(L"采购");
  145. pImage->SetBkImage(L"main_caigou.png");
  146. pItem->SetName(L"caigou");
  147. }
  148. else if (*it == "zhengcan")
  149. {
  150. pTitle->SetText(L"桌台");
  151. pImage->SetBkImage(L"main_zhengcan.png");
  152. pItem->SetName(L"zhengcan");
  153. }
  154. else if (*it == "saomashouyin")
  155. {
  156. pTitle->SetText(L"收银");
  157. pImage->SetBkImage(L"main_saomashouyin.png");
  158. pItem->SetName(L"saomashouyin");
  159. }
  160. else
  161. {
  162. continue;
  163. }
  164. changyongLayout->Add(pItem);
  165. }
  166. //再渲染更多
  167. std::vector<string> gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
  168. CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
  169. gengduoLayout->RemoveAll();
  170. for (std::vector<string>::iterator it = gengduoVector.begin(); it != gengduoVector.end(); it++)
  171. {
  172. CDialogBuilder builder;
  173. CDialogBuilderCallbackEx cb;
  174. CVerticalLayoutUI* pItem = static_cast<CVerticalLayoutUI*>(builder.Create(_T("gengduo_item.xml"), (UINT)0, &cb, m_pManager));
  175. CControlUI* pTitle = pItem->FindSubControl(L"title");
  176. CControlUI* pImage = pItem->FindSubControl(L"image");
  177. CControlUI* pFront = pItem->FindSubControl(L"front");
  178. CControlUI* pBack = pItem->FindSubControl(L"back");
  179. CControlUI* pExchange = pItem->FindSubControl(L"exchange");
  180. if (*it == "diandan")
  181. {
  182. pTitle->SetText(L"点单");
  183. pImage->SetBkImage(L"main_diandan.png");
  184. pItem->SetName(L"diandan");
  185. pExchange->SetText(L"上移");
  186. pFront->SetName(L"gengduo_front");
  187. pBack->SetName(L"gengduo_back");
  188. pExchange->SetName(L"gengduo_exchange");
  189. }
  190. else if (*it == "dingdan")
  191. {
  192. pTitle->SetText(L"订单");
  193. pImage->SetBkImage(L"main_waimai.png");
  194. pItem->SetName(L"dingdan");
  195. pExchange->SetText(L"上移");
  196. pFront->SetName(L"gengduo_front");
  197. pBack->SetName(L"gengduo_back");
  198. pExchange->SetName(L"gengduo_exchange");
  199. }
  200. else if (*it == "huiyuan")
  201. {
  202. pTitle->SetText(L"会员");
  203. pImage->SetBkImage(L"main_huiyuan.png");
  204. pItem->SetName(L"huiyuan");
  205. pExchange->SetText(L"上移");
  206. pFront->SetName(L"gengduo_front");
  207. pBack->SetName(L"gengduo_back");
  208. pExchange->SetName(L"gengduo_exchange");
  209. }
  210. else if (*it == "baobiao")
  211. {
  212. pTitle->SetText(L"报表");
  213. pImage->SetBkImage(L"main_baobiao.png");
  214. pItem->SetName(L"baobiao");
  215. pExchange->SetText(L"上移");
  216. pFront->SetName(L"gengduo_front");
  217. pBack->SetName(L"gengduo_back");
  218. pExchange->SetName(L"gengduo_exchange");
  219. }
  220. else if (*it == "jiaoban")
  221. {
  222. pTitle->SetText(L"交班");
  223. pImage->SetBkImage(L"main_jiaoban.png");
  224. pItem->SetName(L"jiaoban");
  225. pExchange->SetText(L"上移");
  226. pFront->SetName(L"gengduo_front");
  227. pBack->SetName(L"gengduo_back");
  228. pExchange->SetName(L"gengduo_exchange");
  229. }
  230. else if (*it == "setting")
  231. {
  232. pTitle->SetText(L"设置");
  233. pImage->SetBkImage(L"main_setting.png");
  234. pItem->SetName(L"setting");
  235. pExchange->SetText(L"上移");
  236. pFront->SetName(L"gengduo_front");
  237. pBack->SetName(L"gengduo_back");
  238. pExchange->SetName(L"gengduo_exchange");
  239. }
  240. else if (*it == "shangpin")
  241. {
  242. pTitle->SetText(L"商品");
  243. pImage->SetBkImage(L"main_shangpin.png");
  244. pItem->SetName(L"shangpin");
  245. pExchange->SetText(L"上移");
  246. pFront->SetName(L"gengduo_front");
  247. pBack->SetName(L"gengduo_back");
  248. pExchange->SetName(L"gengduo_exchange");
  249. }
  250. else if (*it == "kucun")
  251. {
  252. pTitle->SetText(L"库存");
  253. pImage->SetBkImage(L"main_kucun.png");
  254. pItem->SetName(L"kucun");
  255. pExchange->SetText(L"上移");
  256. pFront->SetName(L"gengduo_front");
  257. pBack->SetName(L"gengduo_back");
  258. pExchange->SetName(L"gengduo_exchange");
  259. }
  260. else if (*it == "caigou")
  261. {
  262. pTitle->SetText(L"采购");
  263. pImage->SetBkImage(L"main_caigou.png");
  264. pItem->SetName(L"caigou");
  265. pExchange->SetText(L"上移");
  266. pFront->SetName(L"gengduo_front");
  267. pBack->SetName(L"gengduo_back");
  268. pExchange->SetName(L"gengduo_exchange");
  269. }
  270. else if (*it == "zhengcan")
  271. {
  272. pTitle->SetText(L"桌台");
  273. pImage->SetBkImage(L"main_zhengcan.png");
  274. pItem->SetName(L"zhengcan");
  275. pExchange->SetText(L"上移");
  276. pFront->SetName(L"gengduo_front");
  277. pBack->SetName(L"gengduo_back");
  278. pExchange->SetName(L"gengduo_exchange");
  279. }
  280. else if (*it == "saomashouyin")
  281. {
  282. pTitle->SetText(L"收银");
  283. pImage->SetBkImage(L"main_saomashouyin.png");
  284. pItem->SetName(L"saomashouyin");
  285. pExchange->SetText(L"上移");
  286. pFront->SetName(L"gengduo_front");
  287. pBack->SetName(L"gengduo_back");
  288. pExchange->SetName(L"gengduo_exchange");
  289. }
  290. else
  291. {
  292. continue;
  293. }
  294. gengduoLayout->Add(pItem);
  295. }
  296. UpdateItemPos();
  297. }
  298. void CGengduoPageUI::UpdateItemPos()
  299. {
  300. if (m_changyongString != "")
  301. {
  302. //先更新常用的位置
  303. CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
  304. int nWidth = m_nPageWidth;
  305. if (nWidth == 0)
  306. {
  307. return;
  308. }
  309. std::vector<string> changyongVector = CLewaimaiString::Split(m_changyongString, ",");
  310. //根据宽度计算每行显示的数量
  311. int nMeihangNum = (nWidth) / 135;
  312. if (nMeihangNum == 0)
  313. {
  314. nMeihangNum = 1;
  315. }
  316. int num = 0;
  317. for (size_t i = 0; i < changyongVector.size(); i++)
  318. {
  319. CVerticalLayoutUI* curItem = static_cast<CVerticalLayoutUI*>(changyongLayout->GetItemAt(i));
  320. int curRow = num / nMeihangNum + 1;
  321. int curCol = num % nMeihangNum + 1;
  322. RECT rect;
  323. rect.left = (curCol - 1) * 135 + 15;
  324. rect.right = rect.left + 120;
  325. rect.top = (curRow - 1) * 175 + 15;
  326. rect.bottom = rect.top + 160;
  327. curItem->SetFloat(true);
  328. curItem->SetPos(rect);
  329. num++;
  330. }
  331. //调整区域高度
  332. int lastRow = (num - 1) / nMeihangNum + 1;
  333. changyongLayout->SetFixedHeight(lastRow * 175 + 15);
  334. }
  335. if (m_gengduoString != "")
  336. {
  337. //再更新更多的位置
  338. CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
  339. int nWidth = m_nPageWidth;
  340. if (nWidth == 0)
  341. {
  342. return;
  343. }
  344. std::vector<string> gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
  345. //根据宽度计算每行显示的数量
  346. int nMeihangNum = (nWidth) / 135;
  347. if (nMeihangNum == 0)
  348. {
  349. nMeihangNum = 1;
  350. }
  351. int num = 0;
  352. for (size_t i = 0; i < gengduoVector.size(); i++)
  353. {
  354. CVerticalLayoutUI* curItem = static_cast<CVerticalLayoutUI*>(gengduoLayout->GetItemAt(i));
  355. int curRow = num / nMeihangNum + 1;
  356. int curCol = num % nMeihangNum + 1;
  357. RECT rect;
  358. rect.left = (curCol - 1) * 135 + 15;
  359. rect.right = rect.left + 120;
  360. rect.top = (curRow - 1) * 175 + 15;
  361. rect.bottom = rect.top + 160;
  362. curItem->SetFloat(true);
  363. curItem->SetPos(rect);
  364. num++;
  365. }
  366. //调整区域高度
  367. int lastRow = (num - 1) / nMeihangNum + 1;
  368. gengduoLayout->SetFixedHeight(lastRow * 175 + 15);
  369. }
  370. //还要调整左侧的显示
  371. }
  372. void CGengduoPageUI::SetPos(RECT rc, bool bNeedInvalidate)
  373. {
  374. m_nPageWidth = rc.right - rc.left;
  375. UpdateItemPos();
  376. CContainerUI::SetPos(rc, bNeedInvalidate);
  377. }
  378. void CGengduoPageUI::QianYi(CControlUI* pSender)
  379. {
  380. CControlUI* pItem = pSender->GetParent()->GetParent();
  381. std::wstring ws_name = pItem->GetName();
  382. std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
  383. std::vector<string> changyongVector = CLewaimaiString::Split(m_changyongString, ",");
  384. CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
  385. for (size_t i = 0; i < changyongVector.size(); i++)
  386. {
  387. if (changyongVector[i] == name)
  388. {
  389. if (i == 0)
  390. {
  391. //本来就是第一个了
  392. return;
  393. }
  394. //找到了当前点击的是这个
  395. changyongLayout->RemoveAt(i, true);
  396. //把控件添加到前面去
  397. changyongLayout->AddAt(pItem, i - 1);
  398. //修改vector
  399. std::string tmp = name;
  400. changyongVector[i] = changyongVector[i - 1];
  401. changyongVector[i - 1] = name;
  402. //然后修改字符串
  403. m_changyongString = CLewaimaiString::Merge(changyongVector, ",");
  404. break;
  405. }
  406. }
  407. //控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
  408. UpdateItemPos();
  409. Save();
  410. m_pMainWnd->UpdateGongnengDaohang();
  411. }
  412. void CGengduoPageUI::HouYi(CControlUI* pSender)
  413. {
  414. CControlUI* pItem = pSender->GetParent()->GetParent();
  415. std::wstring ws_name = pItem->GetName();
  416. std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
  417. std::vector<string> changyongVector = CLewaimaiString::Split(m_changyongString, ",");
  418. CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
  419. for (size_t i = 0; i < changyongVector.size(); i++)
  420. {
  421. if (changyongVector[i] == name)
  422. {
  423. if (i == changyongVector.size() - 1)
  424. {
  425. //本来就是最后一个了
  426. return;
  427. }
  428. //找到了当前点击的是这个
  429. changyongLayout->RemoveAt(i, true);
  430. //把控件添加到后面去
  431. changyongLayout->AddAt(pItem, i + 1);
  432. //修改vector
  433. std::string tmp = name;
  434. changyongVector[i] = changyongVector[i + 1];
  435. changyongVector[i + 1] = name;
  436. //然后修改字符串
  437. m_changyongString = CLewaimaiString::Merge(changyongVector, ",");
  438. break;
  439. }
  440. }
  441. //控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
  442. UpdateItemPos();
  443. Save();
  444. m_pMainWnd->UpdateGongnengDaohang();
  445. }
  446. void CGengduoPageUI::Jiaohuan(CControlUI* pSender)
  447. {
  448. CVerticalLayoutUI* pItem = static_cast<CVerticalLayoutUI*>(pSender->GetParent()->GetParent());
  449. std::wstring ws_name = pItem->GetName();
  450. std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
  451. std::vector<string> changyongVector = CLewaimaiString::Split(m_changyongString, ",");
  452. CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
  453. for (size_t i = 0; i < changyongVector.size(); i++)
  454. {
  455. if (changyongVector[i] == name)
  456. {
  457. //找到了当前点击的是这个,先从常用里面删除
  458. changyongLayout->RemoveAt(i, true);
  459. //然后把这个添加到更多的最下面去,添加之前先修改一些属性
  460. CControlUI* pFront = pItem->FindSubControl(L"front");
  461. CControlUI* pBack = pItem->FindSubControl(L"back");
  462. CControlUI* pExchange = pItem->FindSubControl(L"exchange");
  463. pExchange->SetText(L"上移");
  464. pFront->SetName(L"gengduo_front");
  465. pBack->SetName(L"gengduo_back");
  466. pExchange->SetName(L"gengduo_exchange");
  467. CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
  468. gengduoLayout->Add(pItem);
  469. //修改vector
  470. changyongVector.erase(changyongVector.begin() + i);
  471. std::vector<string> gengduoVector;
  472. if (m_gengduoString == "")
  473. {
  474. gengduoVector.push_back(name);
  475. }
  476. else
  477. {
  478. gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
  479. gengduoVector.push_back(name);
  480. }
  481. //然后修改字符串
  482. m_changyongString = CLewaimaiString::Merge(changyongVector, ",");
  483. m_gengduoString = CLewaimaiString::Merge(gengduoVector, ",");
  484. break;
  485. }
  486. }
  487. //控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
  488. UpdateItemPos();
  489. Save();
  490. m_pMainWnd->UpdateGongnengDaohang();
  491. }
  492. void CGengduoPageUI::GengduoQianYi(CControlUI* pSender)
  493. {
  494. CControlUI* pItem = pSender->GetParent()->GetParent();
  495. std::wstring ws_name = pItem->GetName();
  496. std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
  497. std::vector<string> gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
  498. CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
  499. for (size_t i = 0; i < gengduoVector.size(); i++)
  500. {
  501. if (gengduoVector[i] == name)
  502. {
  503. if (i == 0)
  504. {
  505. //本来就是第一个了
  506. return;
  507. }
  508. //找到了当前点击的是这个
  509. gengduoLayout->RemoveAt(i, true);
  510. //把控件添加到前面去
  511. gengduoLayout->AddAt(pItem, i - 1);
  512. //修改vector
  513. std::string tmp = name;
  514. gengduoVector[i] = gengduoVector[i - 1];
  515. gengduoVector[i - 1] = name;
  516. //然后修改字符串
  517. m_gengduoString = CLewaimaiString::Merge(gengduoVector, ",");
  518. break;
  519. }
  520. }
  521. //控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
  522. UpdateItemPos();
  523. Save();
  524. }
  525. void CGengduoPageUI::GengduoHouYi(CControlUI* pSender)
  526. {
  527. CControlUI* pItem = pSender->GetParent()->GetParent();
  528. std::wstring ws_name = pItem->GetName();
  529. std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
  530. std::vector<string> gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
  531. CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
  532. for (size_t i = 0; i < gengduoVector.size(); i++)
  533. {
  534. if (gengduoVector[i] == name)
  535. {
  536. if (i == gengduoVector.size() - 1)
  537. {
  538. //本来就是最后一个了
  539. return;
  540. }
  541. //找到了当前点击的是这个
  542. gengduoLayout->RemoveAt(i, true);
  543. //把控件添加到后面去
  544. gengduoLayout->AddAt(pItem, i + 1);
  545. //修改vector
  546. std::string tmp = name;
  547. gengduoVector[i] = gengduoVector[i + 1];
  548. gengduoVector[i + 1] = name;
  549. //然后修改字符串
  550. m_gengduoString = CLewaimaiString::Merge(gengduoVector, ",");
  551. break;
  552. }
  553. }
  554. //控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
  555. UpdateItemPos();
  556. Save();
  557. }
  558. void CGengduoPageUI::GengduoJiaohuan(CControlUI* pSender)
  559. {
  560. {
  561. std::vector<string> changyongVector;
  562. if (m_changyongString == "")
  563. {
  564. }
  565. else
  566. {
  567. changyongVector = CLewaimaiString::Split(m_changyongString, ",");
  568. }
  569. if (changyongVector.size() >= 6)
  570. {
  571. m_pMainWnd->ShowToast(L"常用功能最多只能设置6个");
  572. return;
  573. }
  574. }
  575. CVerticalLayoutUI* pItem = static_cast<CVerticalLayoutUI*>(pSender->GetParent()->GetParent());
  576. std::wstring ws_name = pItem->GetName();
  577. std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
  578. std::vector<string> gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
  579. CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
  580. for (size_t i = 0; i < gengduoVector.size(); i++)
  581. {
  582. if (gengduoVector[i] == name)
  583. {
  584. //找到了当前点击的是这个,先从常用里面删除
  585. gengduoLayout->RemoveAt(i, true);
  586. //然后把这个添加到更多的最下面去,添加之前先修改一些属性
  587. CControlUI* pFront = pItem->FindSubControl(L"gengduo_front");
  588. CControlUI* pBack = pItem->FindSubControl(L"gengduo_back");
  589. CControlUI* pExchange = pItem->FindSubControl(L"gengduo_exchange");
  590. pExchange->SetText(L"下移");
  591. pFront->SetName(L"front");
  592. pBack->SetName(L"back");
  593. pExchange->SetName(L"exchange");
  594. CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
  595. changyongLayout->Add(pItem);
  596. //修改vector
  597. gengduoVector.erase(gengduoVector.begin() + i);
  598. std::vector<string> changyongVector;
  599. if (m_changyongString == "")
  600. {
  601. changyongVector.push_back(name);
  602. }
  603. else
  604. {
  605. changyongVector = CLewaimaiString::Split(m_changyongString, ",");
  606. changyongVector.push_back(name);
  607. }
  608. //然后修改字符串
  609. m_changyongString = CLewaimaiString::Merge(changyongVector, ",");
  610. m_gengduoString = CLewaimaiString::Merge(gengduoVector, ",");
  611. break;
  612. }
  613. }
  614. //控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
  615. UpdateItemPos();
  616. Save();
  617. m_pMainWnd->UpdateGongnengDaohang();
  618. }
  619. void CGengduoPageUI::Save()
  620. {
  621. CSetting::SetParam("setting_gongneng_changyong_string", m_changyongString);
  622. CSetting::SetParam("setting_gongneng_gengduo_string", m_gengduoString);
  623. }
  624. void CGengduoPageUI::DianjiBtn(CControlUI* pSender)
  625. {
  626. std::wstring name = pSender->GetParent()->GetParent()->GetName();
  627. name = L"main_" + name;
  628. //把name发到mainWnd去处理
  629. m_pMainWnd->SwitchPageByName(name);
  630. }