uiEntry.c 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  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. if(sutApp.forceUiFlash!=0){
  48. StatusUpdate=1;
  49. sutApp.forceUiFlash=0;
  50. }
  51. uiShowStatusBar(StatusUpdate,exeInterval);
  52. switch(sutUIstatus.Status){
  53. /***********0级:待机界面显示入口*************/
  54. case UIS_STANDBY:
  55. uiStackInit();
  56. uiShowMainInterface(StatusUpdate,exeInterval);
  57. break;
  58. /***********1级:主菜单界面显示入口*************/
  59. case UIS_MENU_MAIN:
  60. uiShowMenuMain(StatusUpdate);
  61. //broad_request_lbs_info(128,128,(double)0, (double)0);
  62. break;
  63. /***********1.1级:群组选择界面显示入口*************/
  64. case UIS_MENU_GROUP_SEL:
  65. uiShowGUSel(StatusUpdate,exeInterval,0);
  66. break;
  67. /***********1.2级:成员选择界面显示入口*************/
  68. case UIS_MENU_USER_SEL:
  69. uiShowGUSel(StatusUpdate,exeInterval,1);
  70. break;
  71. /***********1.3级:文本信息界面显示入口*************/
  72. case UIS_MENU_MAIL_SEL:
  73. uiShowMailBox(StatusUpdate);
  74. break;
  75. /***********1.4级:系统设置界面显示入口*************/
  76. case UIS_MENU_SYS_SEL:
  77. uiShowMenuSysSetup(StatusUpdate);
  78. break;
  79. /***********1.5级:定位设置界面显示入口*************/
  80. case UIS_MENU_LOCATION_SEL:
  81. if(newPara.newold_plam)uiShowLBS_MAP(StatusUpdate);
  82. else uiShowMenuLocationSel(StatusUpdate);
  83. break;
  84. /***********1.6级:终端信息界面显示入口*************/
  85. case UIS_MENU_INFO_SEL:
  86. uiShowInformation(StatusUpdate);
  87. break;
  88. /****************1.3.1文本消息菜单-消息读界面显示入口*/
  89. case UIS_MENU_MAIL_READ:
  90. MessageReadShow(StatusUpdate);
  91. break;
  92. /****************1.3.2文本消息菜单-消息选项界面显示入口*/
  93. case UIS_MENU_MAIL_OPTION:
  94. MessageOptionShow(StatusUpdate);
  95. break;
  96. /****************1.3.2.1文本消息菜单-消息删除界面显示入口*/
  97. case UIS_MENU_MAIL_DEL:
  98. MessageDeletShow(StatusUpdate);
  99. break;
  100. /****************1.3.2.2文本消息菜单-消息格式化界面显示入口*/
  101. case UIS_MENU_MAIL_FORMAT:
  102. MessageFormatShow(StatusUpdate);
  103. break;
  104. /***********1.4.1级:系统设置-LCD设置界面显示入口*************/
  105. case UIS_MENU_SYS_LCD:
  106. uiShowLcdSel(StatusUpdate);
  107. break;
  108. /***********1.4.2级:系统设置-网络设置界面显示入口*************/
  109. case UIS_MENU_SYS_NET:
  110. uiShowNetSel(StatusUpdate);
  111. break;
  112. /***********1.4.3级:系统设置-卡设置界面显示入口*************/
  113. case UIS_MENU_SYS_SIM:
  114. uiShowSimSel(StatusUpdate);
  115. break;
  116. /***********1.4.4级:系统设置-功耗设置界面显示入口*************/
  117. case UIS_MENU_SYS_PWR:
  118. uiShowPwrSel(StatusUpdate);
  119. break;
  120. /***********1.4.5.1级:系统设置-服务器密码设置界面显示入口*************/
  121. case UIS_MENU_SYS_SERVERPASS:
  122. uiShowServerPassSel(StatusUpdate);
  123. break;
  124. /***********1.4.5.2级:系统设置-服务器设置界面显示入口*************/
  125. case UIS_MENU_SYS_SERVER:
  126. uiShowServerSel(StatusUpdate);
  127. break;
  128. /***********1.4.6级:系统设置-版本设置界面显示入口*************/
  129. case UIS_MENU_SYS_VERSION:
  130. uiShowVersionSel(StatusUpdate);
  131. break;
  132. /***********1.4.7级:系统设置-提示音设置界面显示入口*****************/
  133. case UIS_MENU_SYS_NOTE:
  134. uiShowNoteSel(StatusUpdate);
  135. break;
  136. case UIS_MENU_SYS_PLAT:
  137. uiShowPingTaiSel(StatusUpdate);
  138. break;
  139. case UIS_MENU_SHUT_PWR:
  140. uiShowShutDown(StatusUpdate);
  141. break;
  142. case UIS_MENU_LBS_MAP:
  143. break;
  144. case UIS_MENU_SYS_WEATHER:
  145. uiShowWeatherSel(StatusUpdate);
  146. break;
  147. }
  148. }
  149. /********************************UI响应功能********************************/
  150. void uiResponse(unsigned int exeInterval){
  151. unsigned short key;
  152. if(0 != sutApp.gtTMode) return;
  153. if(!isKeyPress()) return;
  154. switch(sutUIstatus.Status){
  155. /****************0级:待机界面响应******************/
  156. case UIS_STANDBY:
  157. switch(getKeyValue()){
  158. case MKEY_VALUE_MENU:
  159. uISetNextStatus(UIS_MENU_MAIN);
  160. break;
  161. case MKEY_VALUE_UP:
  162. sutApp.voluemUpdate=1;
  163. break;
  164. case MKEY_VALUE_DOWN:
  165. sutApp.voluemUpdate=2;
  166. break;
  167. case MKEY_VALUE_ESC:
  168. if(sutPocStatus.danHuStatus!=0) broad_leavegroup();
  169. break;
  170. }
  171. break;
  172. /****************1级:主菜单界面响应***************/
  173. case UIS_MENU_MAIN:
  174. MenuMainResponse();
  175. break;
  176. /****************1.1级:群组选择界面响应*************/
  177. case UIS_MENU_GROUP_SEL:
  178. GroupSelResponse();
  179. break;
  180. /****************1.2级:成员选择界面响应*************/
  181. case UIS_MENU_USER_SEL:
  182. UserSelResponse();
  183. break;
  184. /****************1.3级:文本消息界面响应*************/
  185. case UIS_MENU_MAIL_SEL:
  186. MessageResponse();
  187. break;
  188. /****************1.4级:系统设置界面响应*/
  189. case UIS_MENU_SYS_SEL:
  190. sysTemSetResponse();
  191. break;
  192. /****************1.5级:定位设置界面响应*/
  193. case UIS_MENU_LOCATION_SEL:
  194. if(newPara.newold_plam)uiShowLBS_MAPResponse();
  195. else
  196. loationSetResponse();
  197. break;
  198. /****************1.6级:终端信息界面响应*/
  199. case UIS_MENU_INFO_SEL:
  200. uiShowInformationResponse();
  201. break;
  202. /****************1.3.1文本消息菜单-消息读响应*/
  203. case UIS_MENU_MAIL_READ:
  204. MessageReadResponse();
  205. break;
  206. /****************1.3.2文本消息菜单-消息选项响应*/
  207. case UIS_MENU_MAIL_OPTION:
  208. MessageOptionResponse();
  209. break;
  210. /****************1.3.2.1文本消息菜单-消息删除响应*/
  211. case UIS_MENU_MAIL_DEL:
  212. MessageDeletResponse();
  213. break;
  214. /****************1.3.2.2文本消息菜单-消息格式化响应*/
  215. case UIS_MENU_MAIL_FORMAT:
  216. MessageFormatResponse();
  217. break;
  218. /****************1.4.1系统设置子菜单-LCD设置响应*/
  219. case UIS_MENU_SYS_LCD:
  220. uiShowLcdSelResponse();
  221. break;
  222. /****************1.4.2系统设置子菜单-网络设置响应*/
  223. case UIS_MENU_SYS_NET:
  224. uiShowNetSelResponse();
  225. break;
  226. /****************1.4.3系统设置子菜单-卡设置响应*/
  227. case UIS_MENU_SYS_SIM:
  228. uiShowSimSelResponse();
  229. break;
  230. /****************1.4.4系统设置子菜单-功耗设置响应*/
  231. case UIS_MENU_SYS_PWR:
  232. uiShowPwrSelResponse();
  233. break;
  234. /****************1.4.5.1系统设置子菜单-服务器密码设置响应*/
  235. case UIS_MENU_SYS_SERVERPASS:
  236. uiShowServerSelPassResponse();
  237. break;
  238. /****************1.4.5.2系统设置子菜单-服务器设置响应*/
  239. case UIS_MENU_SYS_SERVER:
  240. uiShowServerSelResponse();
  241. break;
  242. /****************1.4.6系统设置子菜单-版本设置响应*/
  243. case UIS_MENU_SYS_VERSION:
  244. uiShowVersionSelResponse();
  245. break;
  246. /****************1.4.7系统设置子菜单-提示音设置响应*/
  247. case UIS_MENU_SYS_NOTE:
  248. uiShowNoteSelResponse();
  249. break;
  250. case UIS_MENU_SYS_PLAT:
  251. uiShowPingTaiSelResponse();
  252. break;
  253. case UIS_MENU_SHUT_PWR:
  254. uiShowShutDownResponse();
  255. break;
  256. case UIS_MENU_SYS_WEATHER:
  257. uiShowWeatherSelResponse();
  258. break;
  259. }
  260. }
  261. /**********************其它通用接口***********************************/
  262. void uiMenuShowBottomLine(void){
  263. guiDrawHLine(0,GLCD_WIDTH-1,UI_BOTTOM_LINE_Y,1,COLOR_STATUS_BAR);
  264. }
  265. void uiMenuShowBottomIndacitor(const char *infoLF, const char *infoRI){
  266. short x,y;
  267. unsigned short len;
  268. y=UI_NOTE_LOCATION_Y;
  269. guiClearRect(0,y, GLCD_WIDTH-1, GLCD_HEIGHT-1,guiGetBackColor());
  270. if(NULL != infoLF){
  271. x=2;
  272. guiShowStr(x, y,infoLF, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  273. }
  274. if(NULL != infoRI){
  275. len=strlen(infoRI)*8;
  276. x=GLCD_WIDTH-1-len;
  277. guiShowStr(x, y,infoRI, FONT_MODE_12X12, REVERSED_NO,COLOR_STATUS_BAR,guiGetBackColor());
  278. }
  279. }
  280. /*
  281. status: 0 超时10秒返回待机界面 else 直接返回界面界面
  282. */
  283. void uiTimeOutToStandby(char status, unsigned int timeinterval){
  284. static short cnt=0;
  285. bool needBackToStandBy=false;
  286. if(sutApp.platfrom_err!=0)return;
  287. if(sutApp.gtTMode !=0 || sutApp.gtMode != 0||(sutPocStatus.GetLbsOnce!=2&&sutUIstatus.Status==UIS_MENU_LOCATION_SEL))return;
  288. if(0==status){
  289. //MSG_INFO(1,"Back to standby1111===%d",sutApp.timeOutCnt);
  290. if(++sutApp.timeOutCnt<(10000/timeinterval)) return;
  291. //MSG_INFO(1,"Back to standby2222===%d",sutApp.timeOutCnt);
  292. sutApp.timeOutCnt=0;
  293. needBackToStandBy=true;
  294. }else needBackToStandBy=true;
  295. if(needBackToStandBy==false) return;
  296. // MSG_INFO(1,"Back to standby");
  297. if(sutUIstatus.Status==UIS_STANDBY) return;
  298. if(sutUIstatus.Status==UIS_MENU_GROUP_SEL){
  299. appSleepCtl(ASLEEP_GGROUP, 0);
  300. }else if(sutUIstatus.Status==UIS_MENU_USER_SEL){
  301. appSleepCtl(ASLEEP_GUSER, 0);
  302. }
  303. UiassistEnd(0);
  304. uISetNextStatus(UIS_STANDBY);
  305. }