uiEntry.c 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. /*
  2. UI具体界面在此文件中实现
  3. */
  4. #include "includes.h"
  5. /********************************UI状态机记录操作功能*************************/
  6. UI_STACKDEF uiStack;
  7. UI_STACKDEF *getStackStruct(void){return &uiStack;}
  8. static void uiStackInit(void){
  9. memset((unsigned char *)&uiStack, 0, sizeof(uiStack));
  10. uiStack.ok_back=0;
  11. uiStack.top=-1;
  12. uiStack.FastUiChange=0;
  13. }
  14. short uiPushStack(unsigned char data){
  15. if(uiStack.top==4) return 1;
  16. uiStack.top ++;
  17. uiStack.sta[uiStack.top]=data;
  18. return 0;
  19. }
  20. short uiPullStack(void){
  21. unsigned char tmp;
  22. if(uiStack.top<0) return -1;
  23. else{
  24. tmp=uiStack.sta[uiStack.top];
  25. uiStack.top--;
  26. return tmp;
  27. }
  28. }
  29. /********************************UI状态切换功能*********************************/
  30. UI_STATUSDEF sutUIstatus;
  31. void uISetNextStatus(unsigned char status){
  32. sutUIstatus.LastStatus=sutUIstatus.NextStatus;
  33. sutUIstatus.NextStatus=status;
  34. }
  35. void uiDataInit(void){
  36. memset((unsigned char *)&sutUIstatus, 0, sizeof(UI_STATUSDEF));
  37. uISetNextStatus(UIS_STANDBY);
  38. }
  39. void uiLoop(unsigned int exeInterval){
  40. char StatusUpdate=0;
  41. if(sutUIstatus.Status!=sutUIstatus.NextStatus){
  42. sutUIstatus.LastStatus=sutUIstatus.Status;
  43. sutUIstatus.Status=sutUIstatus.NextStatus;
  44. sutUIstatus.ItemRefresh=1;
  45. StatusUpdate=1;
  46. }
  47. uiShowStatusBar(StatusUpdate,exeInterval);
  48. switch(sutUIstatus.Status){
  49. /***********0级:待机界面显示入口*************/
  50. case UIS_STANDBY:
  51. uiStackInit();
  52. uiShowMainInterface(StatusUpdate,exeInterval);
  53. break;
  54. /***********1级:主菜单界面显示入口*************/
  55. case UIS_MENU_MAIN:
  56. uiShowMenuMain(StatusUpdate);
  57. break;
  58. /***********1.1级:学习任务界面显示入口*************/
  59. case UIS_MENU_TASK_SEL:
  60. uiShowLearnTask(StatusUpdate);
  61. break;
  62. /***********1.2级:学习排名界面显示入口*************/
  63. case UIS_MENU_RANK_SEL:
  64. uiShowLearnRank(StatusUpdate);
  65. break;
  66. /***********1.3级:班级选择界面显示入口*************/
  67. case UIS_MENU_CLASS_SEL:
  68. uiShowGUSel(StatusUpdate,exeInterval,0);
  69. break;
  70. /***********1.4级:同学选择界面显示入口*************/
  71. case UIS_MENU_STUDENT_SEL:
  72. uiShowGUSel(StatusUpdate,exeInterval,1);
  73. break;
  74. /***********1.5级:定位设置界面显示入口*************/
  75. case UIS_MENU_LOCATION_SEL:
  76. uiShowMenuLocationSel(StatusUpdate);
  77. break;
  78. /***********1.6级:系统设置界面显示入口*************/
  79. case UIS_MENU_SYS_SEL:
  80. uiShowMenuSysSetup(StatusUpdate);
  81. break;
  82. /****************1.3.1文本消息菜单-消息读界面显示入口*/
  83. case UIS_MENU_MAIL_READ:
  84. MessageReadShow(StatusUpdate);
  85. break;
  86. /****************1.3.2文本消息菜单-消息选项界面显示入口*/
  87. case UIS_MENU_MAIL_OPTION:
  88. MessageOptionShow(StatusUpdate);
  89. break;
  90. /****************1.3.2.1文本消息菜单-消息删除界面显示入口*/
  91. case UIS_MENU_MAIL_DEL:
  92. MessageDeletShow(StatusUpdate);
  93. break;
  94. /****************1.3.2.2文本消息菜单-消息格式化界面显示入口*/
  95. case UIS_MENU_MAIL_FORMAT:
  96. MessageFormatShow(StatusUpdate);
  97. break;
  98. /***********1.4.1级:系统设置-LCD设置界面显示入口*************/
  99. case UIS_MENU_SYS_LCD:
  100. uiShowLcdSel(StatusUpdate);
  101. break;
  102. /***********1.4.2级:系统设置-网络设置界面显示入口*************/
  103. case UIS_MENU_SYS_NET:
  104. uiShowNetSel(StatusUpdate);
  105. break;
  106. /***********1.4.3级:系统设置-卡设置界面显示入口*************/
  107. case UIS_MENU_SYS_SIM:
  108. uiShowSimSel(StatusUpdate);
  109. break;
  110. /***********1.4.4级:系统设置-功耗设置界面显示入口*************/
  111. case UIS_MENU_SYS_PWR:
  112. uiShowPwrSel(StatusUpdate);
  113. break;
  114. /***********1.4.5.1级:系统设置-服务器密码设置界面显示入口*************/
  115. case UIS_MENU_SYS_SERVERPASS:
  116. uiShowServerPassSel(StatusUpdate);
  117. break;
  118. /***********1.4.5.2级:系统设置-服务器设置界面显示入口*************/
  119. case UIS_MENU_SYS_SERVER:
  120. uiShowServerSel(StatusUpdate);
  121. break;
  122. /***********1.4.6级:系统设置-版本设置界面显示入口*************/
  123. case UIS_MENU_SYS_VERSION:
  124. uiShowVersionSel(StatusUpdate);
  125. break;
  126. /***********1.4.7级:系统设置-提示音设置界面显示入口*****************/
  127. case UIS_MENU_SYS_NOTE:
  128. uiShowNoteSel(StatusUpdate);
  129. break;
  130. /***********1.4.8级:系统设置-终端信息界面显示入口*************/
  131. case UIS_MENU_SYS_INFO:
  132. uiShowInformation(StatusUpdate);
  133. break;
  134. /***********1.4.9级:系统设置-SD卡检测界面显示入口*************/
  135. case UIS_MENU_SYS_SD:
  136. uiShowSD(StatusUpdate);
  137. break;
  138. /***********1.4.10级:留音记录界面显示入口*************/
  139. case UIS_MENU_SYS_VOICE:
  140. uiShowVoiceInfo(StatusUpdate);
  141. break;
  142. case UIS_MENU_SYS_ANT:
  143. uiShowANT(StatusUpdate);
  144. break;
  145. case UIS_MENU_SYS_PA:
  146. uiShowPA(StatusUpdate);
  147. break;
  148. case UIS_MENU_SYS_PASS:
  149. uiShowPassword(StatusUpdate);
  150. break;
  151. #ifdef MENU_TEST
  152. case UIS_MENU_SYS_TEST:
  153. uiTest(StatusUpdate);
  154. break;
  155. #endif
  156. /****************1.1.1(学习任务)任务查看*/
  157. case UIS_MENU_TASK_QUERY:
  158. uiShowLearnTaskDetail(StatusUpdate);
  159. break;
  160. /****************1.2.1(学习排名)月/周查看*/
  161. case UIS_MENU_RANK_DETAIL:
  162. uiShowLearnRankDetail(StatusUpdate);
  163. break;
  164. /****************课程表************************/
  165. case UIS_MENU_LOCATION_CLASS:
  166. uiShowLearnClassDetail(StatusUpdate);
  167. break;
  168. /****************消息通知************************/
  169. case UIS_MENU_LOCATION_NOTICE:
  170. uiShowLearnNoticeDetail(StatusUpdate);
  171. break;
  172. /****************消息通知详情************************/
  173. case UIS_MENU_LOCATION_NOTICE_DETAIL:
  174. uiShowLearnNoticeDetailShow(StatusUpdate);
  175. break;
  176. case UIS_MENU_SHUT_UI:
  177. uiShowShutOption(StatusUpdate);
  178. break;
  179. }
  180. }
  181. /********************************UI响应功能********************************/
  182. void uiResponse(unsigned int exeInterval){
  183. unsigned short key;
  184. // if(0 != sutApp.gtTMode) return;
  185. if(!isKeyPress()) return;
  186. /* not finished yet
  187. if(getKeyValue()==KEY_INFO){
  188. if(g_uslockflag==1)return;
  189. uiStack.FastUiChange=1;
  190. UISetNextStatus(UIS_MENU_GROUP_SEL);
  191. }else if(getKeyValue()==KEY_FUNC){
  192. if(g_uslockflag==1)return;
  193. uiStack.FastUiChange=1;
  194. UISetNextStatus(UIS_MENU_USER_SEL);
  195. }
  196. */
  197. switch(sutUIstatus.Status){
  198. /****************0级:待机界面响应******************/
  199. case UIS_STANDBY:
  200. switch(getKeyValue()){
  201. case MKEY_VALUE_MENU:
  202. uISetNextStatus(UIS_MENU_MAIN);
  203. break;
  204. case MKEY_VALUE_ESC:
  205. if(sutPocStatus.danHuStatus!=0) msgAtSend("AT+POC=500000\r\n");
  206. break;
  207. }
  208. break;
  209. /****************1级:主菜单界面响应***************/
  210. case UIS_MENU_MAIN:
  211. MenuMainResponse();
  212. break;
  213. /****************1.1级:学习任务界面响应*************/
  214. case UIS_MENU_TASK_SEL:
  215. LearnTaskSelResponse();
  216. break;
  217. /****************1.2级:学习排名界面响应*************/
  218. case UIS_MENU_RANK_SEL:
  219. LearnRankSelResponse();
  220. break;
  221. /****************1.3级:班级选择界面响应*************/
  222. case UIS_MENU_CLASS_SEL:
  223. GroupSelResponse();
  224. break;
  225. /****************1.4级:同学选择界面响应*************/
  226. case UIS_MENU_STUDENT_SEL:
  227. UserSelResponse();
  228. break;
  229. /****************1.5级:定位设置界面响应*/
  230. case UIS_MENU_LOCATION_SEL:
  231. loationSetResponse();
  232. break;
  233. /****************1.6级:系统设置界面响应*/
  234. case UIS_MENU_SYS_SEL:
  235. sysTemSetResponse();
  236. break;
  237. /****************1.3级:文本消息界面响应*************/
  238. case UIS_MENU_MAIL_SEL:
  239. MessageResponse();
  240. break;
  241. /****************1.3.1文本消息菜单-消息读响应*/
  242. case UIS_MENU_MAIL_READ:
  243. MessageReadResponse();
  244. break;
  245. /****************1.3.2文本消息菜单-消息选项响应*/
  246. case UIS_MENU_MAIL_OPTION:
  247. MessageOptionResponse();
  248. break;
  249. /****************1.3.2.1文本消息菜单-消息删除响应*/
  250. case UIS_MENU_MAIL_DEL:
  251. MessageDeletResponse();
  252. break;
  253. /****************1.3.2.2文本消息菜单-消息格式化响应*/
  254. case UIS_MENU_MAIL_FORMAT:
  255. MessageFormatResponse();
  256. break;
  257. /****************1.4.1系统设置子菜单-LCD设置响应*/
  258. case UIS_MENU_SYS_LCD:
  259. uiShowLcdSelResponse();
  260. break;
  261. /****************1.4.2系统设置子菜单-网络设置响应*/
  262. case UIS_MENU_SYS_NET:
  263. uiShowNetSelResponse();
  264. break;
  265. /****************1.4.3系统设置子菜单-卡设置响应*/
  266. case UIS_MENU_SYS_SIM:
  267. uiShowSimSelResponse();
  268. break;
  269. /****************1.4.4系统设置子菜单-功耗设置响应*/
  270. case UIS_MENU_SYS_PWR:
  271. uiShowPwrSelResponse();
  272. break;
  273. /****************1.4.5.1系统设置子菜单-服务器密码设置响应*/
  274. case UIS_MENU_SYS_SERVERPASS:
  275. uiShowServerSelPassResponse();
  276. break;
  277. /****************1.4.5.2系统设置子菜单-服务器设置响应*/
  278. case UIS_MENU_SYS_SERVER:
  279. uiShowServerSelResponse();
  280. break;
  281. /****************1.4.6系统设置子菜单-版本设置响应*/
  282. case UIS_MENU_SYS_VERSION:
  283. uiShowVersionSelResponse();
  284. break;
  285. /****************1.4.7系统设置子菜单-提示音设置响应*/
  286. case UIS_MENU_SYS_NOTE:
  287. uiShowNoteSelResponse();
  288. break;
  289. /****************1.4.8级:系统设置子菜单-终端信息界面响应*/
  290. case UIS_MENU_SYS_INFO:
  291. uiShowInformationResponse();
  292. break;
  293. /***********1.4.10级:留音记录信息界面响应*************/
  294. case UIS_MENU_SYS_VOICE:
  295. uiShowVoiceInfoResponse();
  296. break;
  297. case UIS_MENU_SYS_ANT:
  298. uiShowANTResponse();
  299. break;
  300. case UIS_MENU_SYS_PA:
  301. uiShowPAResponse();
  302. break;
  303. case UIS_MENU_SYS_PASS:
  304. uiShowPasswordResponse();
  305. break;
  306. #ifdef MENU_TEST
  307. case UIS_MENU_SYS_TEST:
  308. uiTestResponse();
  309. break;
  310. #endif
  311. /****************1.1.1(学习任务)任务查看*/
  312. case UIS_MENU_TASK_QUERY:
  313. uiShowLearnTaskDetailResponse();
  314. break;
  315. /****************1.2.1(学习排名)月/周排名查看*/
  316. case UIS_MENU_RANK_DETAIL:
  317. LearnRankDetailSelResponse();
  318. break;
  319. /****************课程表************************/
  320. case UIS_MENU_LOCATION_CLASS:
  321. LearnClassDetailResponse();
  322. break;
  323. /****************消息通知************************/
  324. case UIS_MENU_LOCATION_NOTICE:
  325. LearnNoticeResponse();
  326. break;
  327. /****************消息通知详情************************/
  328. case UIS_MENU_LOCATION_NOTICE_DETAIL:
  329. LearnNoticeDetailResponse();
  330. break;
  331. case UIS_MENU_SHUT_UI:
  332. uiShowShutOptionResponse();
  333. break;
  334. }
  335. }
  336. /**********************其它通用接口***********************************/
  337. void uiMenuShowBottomLine(void){
  338. guiDrawHLine(0,GLCD_WIDTH-1,UI_BOTTOM_LINE_Y,1,COLOR_STATUS_BAR);
  339. }
  340. void uiMenuShowBottomIndacitor(const char *infoLF, const char *infoRI){
  341. short x,y;
  342. unsigned short len;
  343. y=UI_NOTE_LOCATION_Y;
  344. guiClearRect(0,y, GLCD_WIDTH-1, GLCD_HEIGHT-1,guiGetBackColor());
  345. if(NULL != infoLF){
  346. x=2;
  347. guiShowStr(x, y,infoLF, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  348. }
  349. if(NULL != infoRI){
  350. len=strlen(infoRI)*8;
  351. x=GLCD_WIDTH-1-len;
  352. guiShowStr(x, y,infoRI, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  353. }
  354. }