uiEntry.c 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  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;//-1
  12. uiStack.FastUiChange=0;
  13. uiStack.ESCflag=0;
  14. }
  15. short uiPushStack(unsigned char data){
  16. if(uiStack.top==4) return 1;
  17. //MSG_INFO(1,"push queque ----data==%d----\r\n",data);
  18. uiStack.top ++;
  19. uiStack.sta[uiStack.top]=data;
  20. return 0;
  21. }
  22. short uiPullStack(void){
  23. unsigned char tmp;
  24. if(uiStack.top<0) return -1;
  25. else{
  26. tmp=uiStack.sta[uiStack.top];
  27. uiStack.top--;
  28. //MSG_INFO(1,"pull queque ----tmp==%d----\r\n",tmp);
  29. return tmp;
  30. }
  31. }
  32. /********************************UI状态切换功能*********************************/
  33. UI_STATUSDEF sutUIstatus;
  34. void uISetNextStatus(unsigned char status){
  35. sutUIstatus.LastStatus=sutUIstatus.NextStatus;
  36. sutUIstatus.NextStatus=status;
  37. }
  38. void uiDataInit(void){
  39. memset((unsigned char *)&sutUIstatus, 0, sizeof(UI_STATUSDEF));
  40. uISetNextStatus(UIS_STANDBY);
  41. }
  42. void uiLoop(unsigned int exeInterval){
  43. char StatusUpdate=0;
  44. if(sutUIstatus.Status!=sutUIstatus.NextStatus){
  45. sutUIstatus.LastStatus=sutUIstatus.Status;
  46. sutUIstatus.Status=sutUIstatus.NextStatus;
  47. sutUIstatus.ItemRefresh=1;
  48. StatusUpdate=1;
  49. }
  50. if(sutApp.forceUiFlash!=0){
  51. StatusUpdate=1;
  52. sutApp.forceUiFlash=0;
  53. }
  54. uiShowStatusBar(StatusUpdate,exeInterval);
  55. switch(sutUIstatus.Status){
  56. /***********0级:待机界面显示入口*************/
  57. case UIS_STANDBY:
  58. uiStackInit();
  59. uiShowMainInterface(StatusUpdate,exeInterval);
  60. break;
  61. /***********1级:主菜单界面显示入口*************/
  62. case UIS_MENU_MAIN:
  63. uiShowMenuMain(StatusUpdate);
  64. break;
  65. /***********1.1级:群组选择界面显示入口*************/
  66. case UIS_MENU_GROUP_SEL:
  67. uiShowGUSel(StatusUpdate,exeInterval,0);
  68. break;
  69. /***********1.2级:成员选择界面显示入口*************/
  70. case UIS_MENU_USER_SEL:
  71. uiShowGUSel(StatusUpdate,exeInterval,1);
  72. break;
  73. /***********1.3级:文本信息界面显示入口*************/
  74. case UIS_MENU_MAIL_SEL:
  75. uiShowMailBox(StatusUpdate);
  76. break;
  77. /***********1.4级:系统设置界面显示入口*************/
  78. case UIS_MENU_SYS_SEL:
  79. uiShowMenuSysSetup(StatusUpdate);
  80. break;
  81. /***********1.5级:定位设置界面显示入口*************/
  82. case UIS_MENU_LOCATION_SEL:
  83. uiShowMenuLocationSel(StatusUpdate);
  84. break;
  85. /***********1.6级:终端信息界面显示入口*************/
  86. case UIS_MENU_INFO_SEL:
  87. uiShowInformation(StatusUpdate);
  88. break;
  89. /****************1.3.1文本消息菜单-消息读界面显示入口*/
  90. case UIS_MENU_MAIL_READ:
  91. MessageReadShow(StatusUpdate);
  92. break;
  93. /****************1.3.2文本消息菜单-消息选项界面显示入口*/
  94. case UIS_MENU_MAIL_OPTION:
  95. MessageOptionShow(StatusUpdate);
  96. break;
  97. /****************1.3.2.1文本消息菜单-消息删除界面显示入口*/
  98. case UIS_MENU_MAIL_DEL:
  99. MessageDeletShow(StatusUpdate);
  100. break;
  101. /****************1.3.2.2文本消息菜单-消息格式化界面显示入口*/
  102. case UIS_MENU_MAIL_FORMAT:
  103. MessageFormatShow(StatusUpdate);
  104. break;
  105. /***********1.4.1级:系统设置-LCD设置界面显示入口*************/
  106. case UIS_MENU_SYS_LCD:
  107. uiShowLcdSel(StatusUpdate);
  108. break;
  109. /***********1.4.2级:系统设置-网络设置界面显示入口*************/
  110. case UIS_MENU_SYS_NET:
  111. uiShowNetSel(StatusUpdate);
  112. break;
  113. /***********1.4.3级:系统设置-卡设置界面显示入口*************/
  114. case UIS_MENU_SYS_SIM:
  115. uiShowSimSel(StatusUpdate);
  116. break;
  117. /***********1.4.4级:系统设置-功耗设置界面显示入口*************/
  118. case UIS_MENU_SYS_PWR:
  119. uiShowPwrSel(StatusUpdate);
  120. break;
  121. /***********1.4.5.1级:系统设置-服务器密码设置界面显示入口*************/
  122. case UIS_MENU_SYS_SERVERPASS:
  123. uiShowServerPassSel(StatusUpdate);
  124. break;
  125. /***********1.4.5.2级:系统设置-服务器设置界面显示入口*************/
  126. case UIS_MENU_SYS_SERVER:
  127. uiShowServerSel(StatusUpdate);
  128. break;
  129. /***********1.4.6级:系统设置-版本设置界面显示入口*************/
  130. case UIS_MENU_SYS_VERSION:
  131. uiShowVersionSel(StatusUpdate);
  132. break;
  133. /***********1.4.7级:系统设置-提示音设置界面显示入口*****************/
  134. case UIS_MENU_SYS_NOTE:
  135. uiShowNoteSel(StatusUpdate);
  136. break;
  137. case UIS_MENU_SYS_MICCU:
  138. uiShowMiccugainUISel(StatusUpdate);
  139. break;
  140. case UIS_MENU_SYS_MICXI:
  141. uiShowMiccugainUISel(StatusUpdate);
  142. break;
  143. case UIS_MENU_SYS_PLAT:
  144. uiShowPingTaiSel(StatusUpdate);
  145. break;
  146. case UIS_MENU_SYS_VOICEQC:
  147. uiShowVoiceSel(StatusUpdate);
  148. break;
  149. }
  150. }
  151. /********************************UI响应功能********************************/
  152. void uiResponse(unsigned int exeInterval){
  153. unsigned short key;
  154. if(0 != sutApp.gtTMode) return;
  155. if(!isKeyPress()) return;
  156. switch(sutUIstatus.Status){
  157. /****************0级:待机界面响应******************/
  158. case UIS_STANDBY:
  159. switch(getKeyValue()){
  160. case MKEY_VALUE_MENU:
  161. uISetNextStatus(UIS_MENU_MAIN);
  162. break;
  163. case MKEY_VALUE_ESC:
  164. if(sutPocStatus.danHuStatus!=0) msgAtSend("AT+POC=0A000000000000\r\n");
  165. break;
  166. }
  167. break;
  168. /****************1级:主菜单界面响应***************/
  169. case UIS_MENU_MAIN:
  170. MenuMainResponse();
  171. break;
  172. /****************1.1级:群组选择界面响应*************/
  173. case UIS_MENU_GROUP_SEL:
  174. GroupSelResponse();
  175. break;
  176. /****************1.2级:成员选择界面响应*************/
  177. case UIS_MENU_USER_SEL:
  178. UserSelResponse();
  179. break;
  180. /****************1.3级:文本消息界面响应*************/
  181. case UIS_MENU_MAIL_SEL:
  182. MessageResponse();
  183. break;
  184. /****************1.4级:系统设置界面响应*/
  185. case UIS_MENU_SYS_SEL:
  186. sysTemSetResponse();
  187. break;
  188. /****************1.5级:定位设置界面响应*/
  189. case UIS_MENU_LOCATION_SEL:
  190. loationSetResponse();
  191. break;
  192. /****************1.6级:终端信息界面响应*/
  193. case UIS_MENU_INFO_SEL:
  194. uiShowInformationResponse();
  195. break;
  196. /****************1.3.1文本消息菜单-消息读响应*/
  197. case UIS_MENU_MAIL_READ:
  198. MessageReadResponse();
  199. break;
  200. /****************1.3.2文本消息菜单-消息选项响应*/
  201. case UIS_MENU_MAIL_OPTION:
  202. MessageOptionResponse();
  203. break;
  204. /****************1.3.2.1文本消息菜单-消息删除响应*/
  205. case UIS_MENU_MAIL_DEL:
  206. MessageDeletResponse();
  207. break;
  208. /****************1.3.2.2文本消息菜单-消息格式化响应*/
  209. case UIS_MENU_MAIL_FORMAT:
  210. MessageFormatResponse();
  211. break;
  212. /****************1.4.1系统设置子菜单-LCD设置响应*/
  213. case UIS_MENU_SYS_LCD:
  214. uiShowLcdSelResponse();
  215. break;
  216. /****************1.4.2系统设置子菜单-网络设置响应*/
  217. case UIS_MENU_SYS_NET:
  218. uiShowNetSelResponse();
  219. break;
  220. /****************1.4.3系统设置子菜单-卡设置响应*/
  221. case UIS_MENU_SYS_SIM:
  222. uiShowSimSelResponse();
  223. break;
  224. /****************1.4.4系统设置子菜单-功耗设置响应*/
  225. case UIS_MENU_SYS_PWR:
  226. uiShowPwrSelResponse();
  227. break;
  228. /****************1.4.5.1系统设置子菜单-服务器密码设置响应*/
  229. case UIS_MENU_SYS_SERVERPASS:
  230. uiShowServerSelPassResponse();
  231. break;
  232. /****************1.4.5.2系统设置子菜单-服务器设置响应*/
  233. case UIS_MENU_SYS_SERVER:
  234. uiShowServerSelResponse();
  235. break;
  236. /****************1.4.6系统设置子菜单-版本设置响应*/
  237. case UIS_MENU_SYS_VERSION:
  238. uiShowVersionSelResponse();
  239. break;
  240. /****************1.4.7系统设置子菜单-提示音设置响应*/
  241. case UIS_MENU_SYS_NOTE:
  242. uiShowNoteSelResponse();
  243. break;
  244. case UIS_MENU_SYS_MICCU:
  245. uiShowMicCuSelResponse();
  246. break;
  247. case UIS_MENU_SYS_MICXI:
  248. uiShowMicCuSelResponse();
  249. break;
  250. case UIS_MENU_SYS_PLAT:
  251. uiShowPingTaiSelResponse();
  252. break;
  253. case UIS_MENU_SYS_VOICEQC:
  254. uiShowVoiceSelResponse();
  255. break;
  256. }
  257. if(getKeyValue()==MKEY_VALUE_ESC)uiStack.ESCflag=1;
  258. else uiStack.ESCflag=0;
  259. }
  260. /**********************其它通用接口***********************************/
  261. void uiMenuShowBottomLine(void){
  262. guiDrawHLine(0,GLCD_WIDTH-1,UI_BOTTOM_LINE_Y,1,COLOR_STATUS_BAR);
  263. }
  264. void uiMenuShowBottomIndacitor(const char *infoLF, const char *infoRI){
  265. short x,y;
  266. unsigned short len;
  267. y=UI_NOTE_LOCATION_Y;
  268. guiClearRect(0,y, GLCD_WIDTH-1, GLCD_HEIGHT-1,guiGetBackColor());
  269. if(NULL != infoLF){
  270. x=2;
  271. guiShowStr(x, y,infoLF, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  272. }
  273. if(NULL != infoRI){
  274. len=strlen(infoRI)*8;
  275. x=GLCD_WIDTH-1-len;
  276. guiShowStr(x, y,infoRI, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  277. }
  278. }