promptLogic.cc 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. #pragma once
  2. #include "uart/ProtocolSender.h"
  3. #include "core/utilities.h"
  4. #include "base/strings.hpp"
  5. #include "service/BusinessConfig.h"
  6. #include "restclient-cpp/restclient.h"
  7. /*
  8. *此文件由GUI工具生成
  9. *文件功能:用于处理用户的逻辑相应代码
  10. *功能说明:
  11. *========================onButtonClick_XXXX
  12. 当页面中的按键按下后系统会调用对应的函数,XXX代表GUI工具里面的[ID值]名称,
  13. 如Button1,当返回值为false的时候系统将不再处理这个按键,返回true的时候系统将会继续处理此按键。比如SYS_BACK.
  14. *========================onSlideWindowItemClick_XXXX(int index)
  15. 当页面中存在滑动窗口并且用户点击了滑动窗口的图标后系统会调用此函数,XXX代表GUI工具里面的[ID值]名称,
  16. 如slideWindow1;index 代表按下图标的偏移值
  17. *========================onSeekBarChange_XXXX(int progress)
  18. 当页面中存在滑动条并且用户改变了进度后系统会调用此函数,XXX代表GUI工具里面的[ID值]名称,
  19. 如SeekBar1;progress 代表当前的进度值
  20. *========================ogetListItemCount_XXXX()
  21. 当页面中存在滑动列表的时候,更新的时候系统会调用此接口获取列表的总数目,XXX代表GUI工具里面的[ID值]名称,
  22. 如List1;返回值为当前列表的总条数
  23. *========================oobtainListItemData_XXXX(ZKListView::ZKListItem *pListItem, int index)
  24. 当页面中存在滑动列表的时候,更新的时候系统会调用此接口获取列表当前条目下的内容信息,XXX代表GUI工具里面的[ID值]名称,
  25. 如List1;pListItem 是贴图中的单条目对象,index是列表总目的偏移量。具体见函数说明
  26. *========================常用接口===============
  27. *LOGD(...) 打印调试信息的接口
  28. *mTextXXXPtr->setText("****") 在控件TextXXX上显示文字****
  29. *mButton1Ptr->setSelected(true); 将控件mButton1设置为选中模式,图片会切换成选中图片,按钮文字会切换为选中后的颜色
  30. *mSeekBarPtr->setProgress(12) 在控件mSeekBar上将进度调整到12
  31. *mListView1Ptr->refreshListView() 让mListView1 重新刷新,当列表数据变化后调用
  32. *mDashbroadView1Ptr->setTargetAngle(120) 在控件mDashbroadView1上指针显示角度调整到120度
  33. *
  34. * 在Eclipse编辑器中 使用 “alt + /” 快捷键可以打开智能提示
  35. */
  36. Json::Value promptList;
  37. static string promptText = LANGUAGEMANAGER->getValue("BeQuiet");
  38. static int promptTime = 10;
  39. static int chooseId = 0;
  40. static int promptTimeItId = 0;
  41. #define PROMPT_TIME_HANDLE 11 // 提示语
  42. void setPromptTimeItId(int id) {
  43. promptTimeItId = id;
  44. }
  45. void sendPromptQuit(int id) {
  46. TcpModel tcpModel;
  47. tcpModel.tid = base::format("t%d", TimeHelper::getCurrentTime());
  48. tcpModel.type = TcpType::SCREEN_TIP;
  49. tcpModel.action = ScreenTipAction::QUIT;
  50. tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
  51. tcpModel.to_id = 0;
  52. tcpModel.data = to_string(id);
  53. sendTcpModel(tcpModel);
  54. promptTimeItId = 0;
  55. }
  56. void promptStrat(string text, int time) {
  57. mPromptTextViewPtr->setText(text);
  58. mCustomInputEditTextPtr->setText("");
  59. mActivityPtr->registerUserTimer(PROMPT_TIME_HANDLE, time * 1000);
  60. mSetPromptWindowPtr->hideWnd();
  61. mPromptWindowPtr->showWnd();
  62. }
  63. static void getPromptList() {
  64. string url = getHttpGateway() + "/deviceRoom/getPartScreenTips/" + StoragePreferences::getString(STORE_PARTID, "");
  65. LOGD("请求科室屏幕提示语配置列表. url = %s", url.c_str());
  66. //发起HTTP GET请求
  67. RestClient::Response r = RestClient::get(url);
  68. LOGD("获得科室屏幕提示语配置列表. result = %s", r.body.c_str());
  69. //解析json
  70. Json::Reader reader;
  71. Json::Value root;
  72. if (reader.parse(r.body, root, false)){
  73. if (root.size() > 0) {
  74. promptList = root;
  75. }
  76. }
  77. }
  78. /**
  79. * 注册定时器
  80. * 填充数组用于注册定时器
  81. * 注意:id不能重复
  82. */
  83. static S_ACTIVITY_TIMEER REGISTER_ACTIVITY_TIMER_TAB[] = {
  84. //{0, 6000}, //定时器id=0, 时间间隔6秒
  85. //{1, 1000},
  86. };
  87. /**
  88. * 当界面构造时触发
  89. */
  90. static void onUI_init(){
  91. //Tips :添加 UI初始化的显示代码到这里,如:mText1Ptr->setText("123");
  92. }
  93. /**
  94. * 当切换到该界面时触发
  95. */
  96. static void onUI_intent(const Intent *intentPtr) {
  97. if (intentPtr != NULL) {
  98. //TODO
  99. string _promptText = intentPtr->getExtra(promptText2);
  100. string _time = intentPtr->getExtra(promptTime2);
  101. promptStrat(_promptText, std::atoi(_time.c_str()));
  102. }
  103. }
  104. /*
  105. * 当界面显示时触发
  106. */
  107. static void onUI_show() {
  108. mCustomInputEditTextPtr->setText("");
  109. promptList[0]["show_text"] = LANGUAGEMANAGER->getValue("BeQuiet");
  110. promptList[1]["show_text"] = LANGUAGEMANAGER->getValue("DoNotDisturb");
  111. promptList[2]["show_text"] = LANGUAGEMANAGER->getValue("KeepQuiet");
  112. promptList[3]["show_text"] = LANGUAGEMANAGER->getValue("DoNotVisit");
  113. promptList[4]["show_text"] = LANGUAGEMANAGER->getValue("InRestroom");
  114. promptList[5]["show_text"] = LANGUAGEMANAGER->getValue("DoNotGather");
  115. getPromptList();
  116. chooseId = 0;
  117. }
  118. /*
  119. * 当界面隐藏时触发
  120. */
  121. static void onUI_hide() {
  122. }
  123. /*
  124. * 当界面完全退出时触发
  125. */
  126. static void onUI_quit() {
  127. }
  128. /**
  129. * 串口数据回调接口
  130. */
  131. static void onProtocolDataUpdate(const SProtocolData &data) {
  132. }
  133. /**
  134. * 定时器触发函数
  135. * 不建议在此函数中写耗时操作,否则将影响UI刷新
  136. * 参数: id
  137. * 当前所触发定时器的id,与注册时的id相同
  138. * 返回值: true
  139. * 继续运行当前定时器
  140. * false
  141. * 停止运行当前定时器
  142. */
  143. static bool onUI_Timer(int id){
  144. switch (id) {
  145. case PROMPT_TIME_HANDLE:
  146. {
  147. mPromptWindowPtr->hideWnd();
  148. mSetPromptWindowPtr->showWnd();
  149. if (promptTimeItId != 0) {
  150. sendPromptQuit(promptTimeItId);
  151. }
  152. logoutMedicalCare();
  153. goHome();
  154. EASYUICONTEXT->closeActivity("promptActivity");
  155. return false;
  156. break;
  157. }
  158. default:
  159. break;
  160. }
  161. return true;
  162. }
  163. /**
  164. * 有新的触摸事件时触发
  165. * 参数:ev
  166. * 新的触摸事件
  167. * 返回值:true
  168. * 表示该触摸事件在此被拦截,系统不再将此触摸事件传递到控件上
  169. * false
  170. * 触摸事件将继续传递到控件上
  171. */
  172. static bool onpromptActivityTouchEvent(const MotionEvent &ev) {
  173. switch (ev.mActionStatus) {
  174. case MotionEvent::E_ACTION_DOWN://触摸按下
  175. //LOGD("时刻 = %ld 坐标 x = %d, y = %d", ev.mEventTime, ev.mX, ev.mY);
  176. break;
  177. case MotionEvent::E_ACTION_MOVE://触摸滑动
  178. break;
  179. case MotionEvent::E_ACTION_UP: //触摸抬起
  180. break;
  181. default:
  182. break;
  183. }
  184. return false;
  185. }
  186. static void onEditTextChanged_CustomInputEditText(const std::string &text) {
  187. //LOGD(" onEditTextChanged_ CustomInputEditText %s !!!\n", text.c_str());
  188. }
  189. static int getListItemCount_QuickPromptListView(const ZKListView *pListView) {
  190. //LOGD("getListItemCount_QuickPromptListView !\n");
  191. if (promptList.size() != 0) {
  192. return promptList.size();
  193. }
  194. return 6;
  195. }
  196. static void obtainListItemData_QuickPromptListView(ZKListView *pListView,ZKListView::ZKListItem *pListItem, int index) {
  197. //LOGD(" obtainListItemData_ QuickPromptListView !!!\n");
  198. if (promptList.size() != 0) {
  199. pListItem->setText(promptList[index]["show_text"].asCString());
  200. }
  201. if (index == chooseId) {
  202. pListItem->setSelected(true);
  203. promptText = promptList[index]["show_text"].asCString();
  204. }
  205. else {
  206. pListItem->setSelected(false);
  207. }
  208. }
  209. static void onListItemClick_QuickPromptListView(ZKListView *pListView, int index, int id) {
  210. //LOGD(" onListItemClick_ QuickPromptListView !!!\n");
  211. chooseId = index;
  212. }
  213. static void onCheckedChanged_SetPromptTimeRadioGroup(ZKRadioGroup* pRadioGroup, int checkedID) {
  214. LOGD(" RadioGroup SetPromptTimeRadioGroup checked %d", checkedID);
  215. switch (checkedID) {
  216. case ID_PROMPT_SetPromptTimeRadioButton1:
  217. promptTime = 10;
  218. break;
  219. case ID_PROMPT_SetPromptTimeRadioButton2:
  220. promptTime = 15;
  221. break;
  222. case ID_PROMPT_SetPromptTimeRadioButton3:
  223. promptTime = 30;
  224. break;
  225. case ID_PROMPT_SetPromptTimeRadioButton4:
  226. promptTime = 60;
  227. break;
  228. case ID_PROMPT_SetPromptTimeRadioButton5:
  229. promptTime = 90;
  230. break;
  231. case ID_PROMPT_SetPromptTimeRadioButton6:
  232. promptTime = 120;
  233. break;
  234. }
  235. }
  236. static bool onButtonClick_StartPromptButton(ZKButton *pButton) {
  237. LOGD(" ButtonClick StartPromptButton !!!\n");
  238. if (mCustomInputEditTextPtr->getText() != "") {
  239. promptText = mCustomInputEditTextPtr->getText();
  240. }
  241. promptStrat(promptText, promptTime * 60);
  242. Json::Value json;
  243. json["passNo"] = getClerkPassNo();
  244. json["operationData"]["tips"] = promptText;
  245. json["operationData"]["seconds"] = promptTime * 60;
  246. TcpModel tcpModel;
  247. tcpModel.tid = base::format("t%d", TimeHelper::getCurrentTime());
  248. tcpModel.type = TcpType::SCREEN_TIP;
  249. tcpModel.action = ScreenTipAction::START;
  250. tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
  251. tcpModel.to_id = 0;
  252. tcpModel.json = json;
  253. sendTcpModel(tcpModel);
  254. return false;
  255. }
  256. static bool onButtonClick_sys_back(ZKButton *pButton) {
  257. LOGD(" ButtonClick sys_back !!!\n");
  258. return false;
  259. }
  260. static bool onButtonClick_ExitPromptButton(ZKButton *pButton) {
  261. LOGD(" ButtonClick ExitPromptButton !!!\n");
  262. mActivityPtr->unregisterUserTimer(PROMPT_TIME_HANDLE);
  263. mPromptWindowPtr->hideWnd();
  264. mSetPromptWindowPtr->showWnd();
  265. if (promptTimeItId != 0) {
  266. sendPromptQuit(promptTimeItId);
  267. }
  268. return false;
  269. }