UiSys.c
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:169k
源码类别:

压缩解压

开发平台:

C++ Builder

  1. /*==========================================================================
  2. Copyright (c) 2004 ALi Corporation. All Rights Reserved
  3. File: UiCommon.c
  4. content: user interface for system module
  5. History: Created by TNE 2004/8/17
  6. ==========================================================================*/
  7. #define _UI_SYS_H_
  8. #include <DP8051XP.H>
  9. #include "TypeDef.h"
  10. #include "Const.h"
  11. #include "Reg5661.h"
  12. #include "Common.h"
  13. #include "UiCommon.h"
  14. #include "SysStrDef.h"
  15. #include "UiSysStr.h"
  16. #include "OledString.h"
  17. #include "Key.h"
  18. #include "NandFlash.h"
  19. #include "UiSys.h"
  20. #include "SD.h"
  21. #include "FileSystem.h"
  22. #include "SaveSetting.h"
  23. #if(ENABLE_HOST_FUNCTION) //allen050720
  24. #include "UsbHostCommon.h"
  25. #include "UsbHost.h"
  26. #endif
  27. #include "Oled.h"
  28. #include "IconDefine.h"
  29. #include "ClassDatabase.h"
  30. #include "License.h" //Walace060323#1
  31. void UiSysMenuRedrawAll(void) ;
  32. XBYTE gxbEditPSaveSwitch;
  33. XBYTE gxbEditPSaveNotPlay;
  34. XBYTE gxbStringEditPSaveTime[3]; // When edit time, time number ex. 106
  35. bit gfFormatType;
  36. XBYTE gxbLastUIFormatSts;  //Vicky060929#1
  37. XBYTE gxbSetFlag = FALSE;
  38. //extern CBYTE gcbKernalVer[],gcbKernalDate[];
  39. //XBYTE gxbEditTimeAmPm;
  40. //XBYTE gxbStringEditTime[6]; // show time string
  41. //XDWORD gxdwNowTime;
  42. //XDWORD gxdwLastNowTime;
  43. void UiGoSysMenu(void);
  44. void UiShowTimeBox(BYTE bStartPage,BYTE bEndPage) large;
  45. void UiGoSysTimeMenu(void) large;
  46. void UiSysSetTime(void) large;
  47. void UiShowTimeEditCursor(BYTE bEditLocate) large;
  48. void UiTimeEditUp(BYTE bTimeEditLocate) large;
  49. void UiTimeEditDown(BYTE bTimeEditLocate) large;
  50. void UiAlarmSwitchMenu(void) large;
  51. void UiGoSysEditPSave(void) large;
  52. void UiGetPSaveTime(void) large;
  53. void UiShowPSaveEditCursor(BYTE bEditLocate) large;
  54. void UiCheckPSaveTime(void) large;
  55. void UiGoSysLangMenu(void) large;
  56. void UiGoDispMenu(void) large;
  57. void UiShowContrast(BYTE bVoltage) large;
  58. void UiSetContrast(void) large;
  59. void UiSetBackLight(void) large;
  60. void UiShowBackLight(BYTE bBackLightTime) large;
  61. void UiRecMenuForSys(void) large;
  62. void UiGoStorMenu(void) large;
  63. void UiSysSetAlarm(void) large;
  64. void UiShowAlarmTime(BYTE bTimeEditLocate) large;
  65. void UiShowAlarmEditCursor(BYTE bEditLocate) large;
  66. #if(UI_USE_USER_EQ)
  67. void UiGoUserDefEqMenu(void) large;
  68. #endif
  69. void UiSysGetAlarmTime(void) large;
  70. void UiShwCardRemoved(void) large;
  71. void UiGoSysFileMenu(void) large;
  72. bit UiGoSysDeleteMenu(void) large;
  73. //void UiGoRestoreSureMenu(void) large
  74. void UiGoFuncMakeSureMenu(BYTE bFunCmd) large; //Walace060323#1
  75. void UiGoDeleteLicenseSureMenu(void);//Walace060323#1
  76. //void UiGoRefreshSureMenu(void) large;
  77. void UiGoToolMenu(void) large;
  78. void UiGoSysFormatMenu(void) large;
  79. void UiGoFormatSureMenu(void) large;
  80. void UiGoSysDrmMenu(void) large;
  81. void UiGoSysInfo(void) large;
  82. //void UiFsRecInit(void) large;//vicky050203 //Vicky060216 Move to UiCommon.h
  83. void UiShowFormatBar(BYTE bProgress);
  84. void UiGoSysSetZoneMenu(void) large; //Tne050325
  85. void UiShowSetTime(BYTE bTimeEditLocate) large;
  86. //API void UiWriteLabelName(void) large; //tne 2005/12/19  //Walace060725#1 remove to Filesystem.h
  87. void UiShowFormatWarning(void) large; // Jeff070312#1
  88. //Sys information
  89. CBYTE cbStringFW[]={'F','W',':',' ',' ','.',' ',' ','.'};
  90. CBYTE cbStringChip[]={'C','H','I','P',':'};
  91. CBYTE cbStringFree[]={'F','R','E','E',':'};
  92. //CBYTE cbStringDate[]={'D','A','T','E',':',' ',' ','/',' ',' ','/'};
  93. CBYTE cbStringMB[]={'M','B'};
  94. CBYTE cbStringKB[]={'K','B'};
  95. //CBYTE cbStringByte[]={'b','y','t','e'};
  96. code CWORD *pcbSetupListStr[] ={
  97. cwStringSystemList,
  98. cwStringSysDrmList,
  99. cwStringSysTimeList,  
  100. cwStringSysPowerOffList,
  101. cwStringSysLanguageList,
  102. cwStringSysDisplayList,
  103. cwStringRecList,
  104. cwStringSysToolList,
  105. cwStringSysStorageList,
  106. cwStringSysYesNoList,
  107. cwStringSysYesNoList,
  108. cwStringFormatList,
  109. cwStringSysYesNoList,
  110. //#if( (_PM_SYS_|_PM_DVR_) & (UI_USE_REC_SOURCE) )
  111. cwStringRecFormList,
  112. //#endif
  113. cwStringQtyList,
  114. cwStringPsave,
  115. cwStringBLight,
  116. cwStringContrast,
  117. #if(_PEDOMETER_Mode_)
  118. cwStringPedoMeterMenuList,
  119. cwStringPedoMeterPowerList,
  120. cwStringPedoMeterIntroList,
  121. cwStringPedoMeterSettingList,
  122. #endif
  123. };
  124. code BYTE cbSetupListMaxNum[]={
  125. UI_SYS_MENU_MAX_ITEM,
  126. UI_SYS_MENU_USB_MODE_MAX_ITEM,
  127. UI_SYS_MENU_TIME_MAX_ITEM,
  128. UI_SYS_MENU_TIME_MAX_ITEM,
  129. UI_SYS_MENU_LANGUAGE_MAX_ITEM,
  130. UI_SYS_MENU_DISPLAY_MAX_ITEM,
  131. UI_SYS_MENU_REC_MAX_ITEM,
  132. UI_SYS_MENU_TOOL_MAX_ITEM,
  133. UI_SYS_MENU_STORAGE_MAX_ITEM,
  134. UI_SYS_MENU_YESNO_MAX_ITEM,
  135. UI_SYS_MENU_YESNO_MAX_ITEM,
  136. UI_SYS_MENU_FORMAT_MAX_ITEM,
  137. UI_SYS_MENU_YESNO_MAX_ITEM,
  138. UI_SYS_MENU_REC_FROM_MAX_ITEM,
  139. UI_SYS_MENU_REC_QTY_MAX_ITEM,
  140. UI_SYS_MENU_PSAVE_MAX_ITEM,
  141. UI_SYS_MENU_BLIGHT_MAX_ITEM,
  142. UI_SYS_MENU_CONTRAST_MAX_ITEM,
  143. #if(_PEDOMETER_Mode_)
  144. UI_SYS_MENU_PODEMETER_MAX_ITEM,
  145. UI_SYS_MENU_PODEMETER_Power_MAX_ITEM,
  146. UI_SYS_MENU_PODEMETER_Intro_MAX_ITEM,
  147. UI_SYS_MENU_PODEMETER_Setting_MAX_ITEM,
  148. #endif
  149. };
  150. ////////////////////////////////////////////////////////////////////////////////////
  151. /////////////////////////////////  Ui Header End ///////////////////////////////////
  152. ////////////////////////////////////////////////////////////////////////////////////
  153. /*--------------------------------------------------------------------------
  154. Description:
  155. Main program for TARGET System
  156. Arguments:
  157. Global arguments:
  158. Returns: 
  159. --------------------------------------------------------------------------*/
  160. //TONY070104 Start
  161. void ShowSetupItemUnSelect( WORD wStrNum,BYTE BMenuSubStates) large
  162. {
  163. gfTransparent = TRUE;
  164. if(gxbUiMenuMainStates&0x1f) 
  165. {
  166. OledShowIconNew(1, IM_EXPLORE_BUTTON_CLEAR_STRING, 20,  ITEM_START_ROW+ITEM_ROW_OFF*((BMenuSubStates%ITEM_SUB_NUM_OPAGE)+1));
  167. OledShowIconNew(1, IM_ITEM_UNSELECT, 8,4+ITEM_START_ROW+ITEM_ROW_OFF*((BMenuSubStates%ITEM_SUB_NUM_OPAGE)+1));
  168. StrShowSysString(wStrNum, ITEM_START_COL,2+ITEM_START_ROW+ITEM_ROW_OFF*((BMenuSubStates%ITEM_SUB_NUM_OPAGE)+1));
  169. }
  170. else
  171. {
  172. OledShowIconNew(1, IM_EXPLORE_BUTTON_CLEAR_STRING, 20,  ITEM_START_ROW+ITEM_ROW_OFF*(BMenuSubStates%ITEM_NUM_OPAGE));
  173. OledShowIconNew(1, IM_ITEM_UNSELECT, 8, 4+ ITEM_START_ROW+ITEM_ROW_OFF*(BMenuSubStates%ITEM_NUM_OPAGE));
  174. StrShowSysString(wStrNum, ITEM_START_COL,2+ITEM_START_ROW+ITEM_ROW_OFF*(BMenuSubStates%ITEM_NUM_OPAGE));
  175. }
  176. gfTransparent =FALSE;
  177. }
  178. void ShowSetupItemSelect( WORD wStrNum,BYTE BMenuSubStates) large
  179. {
  180. gfTransparent = TRUE;
  181. if(gxbUiMenuMainStates&0x1f) 
  182. {
  183. OledShowIconNew(1, IM_EXPLORE_BUTTON_01,20,ITEM_START_ROW+ITEM_ROW_OFF*((BMenuSubStates%ITEM_SUB_NUM_OPAGE)+1));
  184. OledShowIconNew(1, IM_ITEM_SELECT ,8,  4+ITEM_START_ROW+ITEM_ROW_OFF*((BMenuSubStates%ITEM_SUB_NUM_OPAGE)+1));
  185. StrShowSysString(wStrNum,  ITEM_START_COL,2+ITEM_START_ROW+ITEM_ROW_OFF*((BMenuSubStates%ITEM_SUB_NUM_OPAGE)+1));
  186. }
  187. else
  188. {
  189. OledShowIconNew(1, IM_EXPLORE_BUTTON_01,20,ITEM_START_ROW+ITEM_ROW_OFF*(BMenuSubStates%ITEM_NUM_OPAGE));
  190. OledShowIconNew(1, IM_ITEM_SELECT, 8, 4+ ITEM_START_ROW+ITEM_ROW_OFF*(BMenuSubStates%ITEM_NUM_OPAGE));
  191. StrShowSysString(wStrNum,  ITEM_START_COL,2+ITEM_START_ROW+ITEM_ROW_OFF*(BMenuSubStates%ITEM_NUM_OPAGE));
  192. }
  193. gfTransparent =FALSE;
  194. }
  195. void  UiShowSubMenuItem(BYTE bCurrentNum,BYTE bTotalNum) large
  196. {
  197. BYTE bI,bOffset;
  198. BYTE bItemNum,bFirstItem;
  199. BYTE bTotalPage,bCurrentPage;
  200. BYTE bItemNumPerPage;
  201. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW);//Clear Menu Item Area;
  202. if(gxbUiMenuMainStates&0x1f)  
  203. {
  204. bItemNumPerPage = ITEM_SUB_NUM_OPAGE;
  205. bOffset = 1;
  206. }
  207. else
  208. {
  209. bItemNumPerPage = ITEM_NUM_OPAGE;
  210. bOffset = 0;
  211. }
  212. bTotalPage = bTotalNum/bItemNumPerPage;
  213. bCurrentPage = bCurrentNum/bItemNumPerPage;
  214. if(bTotalPage==bCurrentPage)                                                 //Last page
  215. {
  216. bItemNum = (bTotalNum% bItemNumPerPage);
  217. }
  218. else
  219. {
  220. bItemNum = bItemNumPerPage;
  221. }
  222. if(bCurrentNum)
  223. bFirstItem = bCurrentNum-( bCurrentNum%bItemNumPerPage);
  224. else
  225. bFirstItem = 0;                             
  226. for(bI=0;bI<bItemNum;bI++)
  227. {
  228. OledShowIconNew(1,IM_ITEM_UNSELECT,8,3+ITEM_START_ROW+(bI+bOffset)*ITEM_ROW_OFF);
  229. gfTransparent = TRUE;
  230. StrShowSysString(pcbSetupListStr[(gxbUiMenuMainStates&0x1f)][bFirstItem+bI],ITEM_START_COL,2+ITEM_START_ROW+(bI+bOffset)*ITEM_ROW_OFF);
  231. }
  232. ShowSetupItemSelect(pcbSetupListStr[(gxbUiMenuMainStates&0x1f)][bCurrentNum],bCurrentNum);
  233. gfTransparent = FALSE;
  234. }
  235. //TONY070104 End
  236. main(void)
  237. {
  238. BYTE bKey;
  239. //tne 2005/08/24 //use bKey for temp variable to get RTC counter
  240. //bKey=obDCV_INT_FLAG; //tne 2006/08/08 #1
  241. #if(SETTING_FOR_ICE_START)
  242. SettingForIceStart();
  243. //SM Clock
  244. obCLKSMDIVF=0x01;
  245. obCLKSMCTRL=0xc8; //147/3=49
  246. NandInit();
  247. KeyInit();
  248. FsInit(); //Vicky050303#1
  249. #if(!OLED_USE_SM_INTERFEACE)
  250. OledCtrlEn();
  251. obPARLCD = 0x31;  //Select Parallel Mode & Give CS Hight
  252. obMODSEL2 |= LCD_PAR_EN; //LCD Parallel mode enable
  253. obCLKLCDCTRL |= (LCD_CLK_EN | LCD_CLK_3000); //LCD Enable & Set Clock 3MHz
  254. OledCtrlDis();
  255. #endif
  256. OledInit() ;
  257. FontTableInit();
  258. LoadStringTableIndex();
  259. LoadTransTableIndex();
  260. EnableTimer0();
  261. gxbDeviceMode=DEV_SYS;
  262. gxwAutoOff=0;
  263. gxbStorage=STOR_NAND;
  264. #if(ENABLE_SD_FUNCTION)
  265. SdDefaultSetting();
  266. #endif
  267. LoadRecInfo();
  268.        gxdwSClockOffset=0;
  269. #endif
  270. SetSysSpeed(SYS_SPEED_NORMAL);//Nick060808
  271. //use bKey for temp counter
  272. #if(SETTING_FOR_ICE_START)
  273. for(bKey=0;bKey<=5;bKey++)
  274. gxbUserDefEq[bKey]=8;
  275. #endif
  276. OLED_DISP_MASK_INIT();
  277. bKey=KEY_INVALID;
  278. EX0=1;
  279. EA=1;
  280. #if(ICE_REAL_MODE) //vicky061001#2 Debug Play
  281. EnableTimer0();
  282. IE=0x83;
  283. #endif
  284. #if(ENABLE_SD_FUNCTION&&SD_DET_USE_INT1) //Nick060808
  285. EX1=1;
  286. gbDdmCheck = obGPIO_INT_FLAG&obGPIO_INT_MASK;//use gbDdmCheck as temp, ok la
  287. if(gbDdmCheck&0x20)//gpiod5 // sd init flase anyway, even SD/MMC plug in
  288. gfSDinit = FALSE;
  289. #endif
  290. //disable cdc to save power
  291. //ClkCdcDis();
  292. // set default common value
  293. #if(USE_SYS_STR_UNICODE)
  294. gxfSourceUnicode=STRING_TYPE_UNICODE;
  295. #else
  296. gxfSourceUnicode=STRING_TYPE_ASCII;
  297. #endif
  298. #if(SYS_USE_KEY_HOLD)
  299. gfLastKeyLocked=KEY_UNLOCK;
  300. #endif
  301. UI_SET_DEFAULT();
  302. gfFormatType=UI_QUICK_FORMAT_MENU;
  303. gfDelFile=FALSE; //vicky050203
  304. gfRtcUpdate=FALSE;
  305. gxbExceptFileAttrib=(FILE_ATTR_LABEL|FILE_ATTR_SYSTEM|FILE_ATTR_HIDDEN); //tne del with mtp
  306. NandPrivateEn();
  307. ReadSettingData(FS_DATA_0_0);
  308. NandPrivateDis();
  309. gxbRecOption=gxbFsData[SRAM_VAD_MODE+gxwOffsetDataSec];  //tne 2006/01/16
  310. gxbTimeZone=(gxbFsData[SRAM_TIME_ZONE+gxwOffsetDataSec]&0x7F); //tne 2005/11/23 #3
  311. gpstFileIndex=&stUiFileListData;
  312. gpstFileIndex->pbFileName=gxbFileName;
  313. gpstFileIndex->pbLongFileName=gxbLongFileName;
  314. gpstFileIndex->bPathDepth=0;
  315. gpstFileIndex->dwDirStartSec=gxdwRoot;
  316. gpstFileIndex->dwDirSec[0]=gxdwRoot;
  317. gpstFileIndex->wDirOffset[0]=0;
  318. //tne 2006/10/03 #1 start
  319. #if(UI_USE_CLASS_LIST)
  320. if( ((gxbStorage==STOR_NAND)&&(gxbFsData[SRAM_MSC_MODIFY_FLAG+gxwOffsetDataSec]==MSC_DATA_NOT_MODIFIED)) ||
  321. ((gxbStorage!=STOR_NAND)&&(gxbFsData[SRAM_SD_MODIFY_FLAG+gxwOffsetDataSec]==SD_DATA_NOT_MODIFIED)) )
  322. { gdwCdbAddPoint=CDB_INIT_POINT; }
  323. else
  324. { gdwCdbAddPoint=CDB_NULL_POINT; }
  325. #endif
  326. //tne 2006/10/03 #1 end
  327. //OLED_CLEAR_ALL();
  328. // Walace050928
  329. #if(ENABLE_SD_FUNCTION&UI_USE_CHK_CARD)
  330. if(gxbStorage!=STOR_NAND)
  331. UiCheckCardRemoved();
  332. #endif
  333. //card removed, not use init error handle
  334. #if(_PM_SYS_&UI_USE_CHK_CARD)
  335. if(gxbLastErrCode==ERR_CARD_REMOVED)
  336. {
  337. UiShwCardRemoved();
  338. }
  339. #endif
  340. #if(USE_ERR_MSG_DISPLAY)
  341. UiCheckIniErr();
  342. #endif
  343. gxbSelUserDefEq=5;
  344. //Ui for class
  345. #if(UI_USE_CLASS_LIST)
  346. CdbGetDbSector();
  347. //tne 2006/10/03 #1 start //check CDB Ready
  348. NandPrivateEn();
  349. if(gdwCdbAddPoint!=CDB_NULL_POINT)
  350. {
  351. if(CdbGetDataBaseHeader(CDB_HEADER_GENRE_STRAT_ADD)==CDB_NULL_POINT)
  352. gdwCdbAddPoint=CDB_NULL_POINT;
  353. }
  354. NandPrivateDis();
  355. //tne 2006/10/03 #1 end
  356. #endif
  357. #if(DRM_MODE_EN)
  358. UiSearchMtpPropFile();
  359. #else
  360. gxbExceptFileAttrib=(FILE_ATTR_LABEL|FILE_ATTR_SYSTEM|FILE_ATTR_HIDDEN);
  361. #endif
  362. if(gxbDeviceMode==DEV_FILE_CTRL) //tne 2007/01/12 #1
  363. {
  364. UiGoSysFileMenu();
  365. gxbSettingBuffer[SETTING_DISPLAY_SWAPING]=TRUE;
  366. gxbSettingBuffer[SETTING_NEXT_MODE]=SAVE_AND_SEL_MODE;
  367. gxbLastErrCode=ERR_NO_ERROR;
  368. SaveSetting();
  369. }
  370. //bUiMenuMainStates=UI_SYS_MENU;//TONY 070104
  371. gxbUiMenuMainStates=UI_SYS_ROOT_MENU;
  372. gxbUiMenuSubStates=UI_SYS_MENU_USB_MODE;
  373. UiSysMenuRedrawAll() ;
  374. // modify by tne 2004/11/17 BL
  375. //UiFirstBackLight();
  376. bKey=obDCV_INT_FLAG; //tne 2006/08/08 #1
  377. UiGoSysMenu();
  378. while(1)
  379. {
  380. #if(USE_SYS_STR_SCROLL)
  381. SysStringScroll();
  382. #endif
  383. UiNormalCheck();
  384. KeyGet(bKey);
  385. UiCheckBackLight(bKey);
  386. switch(bKey)
  387. {
  388. case KEY_LEFT_BREAK:
  389. if(((gxbUiMenuSubStates%ITEM_NUM_OPAGE)==0)||(gxbUiMenuSubStates==0))
  390. {
  391. if(gxbUiMenuSubStates)
  392. gxbUiMenuSubStates--;
  393. else
  394. gxbUiMenuSubStates=UI_SYS_MENU_MAX_ITEM-1;
  395. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_MAX_ITEM);
  396. }
  397. else
  398. {
  399. gxbUiMenuSubStates--;
  400. ShowSetupItemUnSelect(cwStringSystemList[gxbUiMenuSubStates+1],gxbUiMenuSubStates+1); 
  401. ShowSetupItemSelect( cwStringSystemList[gxbUiMenuSubStates],gxbUiMenuSubStates);
  402. }
  403. break;
  404. case KEY_RIGHT_BREAK:
  405. if(((gxbUiMenuSubStates+1)%ITEM_NUM_OPAGE==0)||(gxbUiMenuSubStates==(UI_SYS_MENU_MAX_ITEM-1)))
  406. {
  407. if(gxbUiMenuSubStates==(UI_SYS_MENU_MAX_ITEM-1))
  408. gxbUiMenuSubStates =0;
  409. else
  410. gxbUiMenuSubStates++;
  411. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_MAX_ITEM);
  412. }
  413. else
  414. {
  415. gxbUiMenuSubStates++;
  416. ShowSetupItemUnSelect(cwStringSystemList[gxbUiMenuSubStates-1],gxbUiMenuSubStates-1);
  417.   ShowSetupItemSelect( cwStringSystemList[gxbUiMenuSubStates],gxbUiMenuSubStates);
  418. }
  419. break;
  420. case KEY_UP_BREAK:
  421. //UI_SHOW_MENU_TITLE_STRING(cwStringSystemList[gxbUiMenuSubStates]);
  422. switch(gxbUiMenuSubStates)
  423. {
  424. case UI_SYS_MENU_USB_MODE:
  425. UiGoSysDrmMenu();
  426. gxbUiMenuSubStates=UI_SYS_MENU_USB_MODE;
  427. //UiGoSysMenu();
  428. break;
  429. case UI_SYS_MENU_TIME:
  430. UiGoSysTimeMenu();
  431. gxbUiMenuSubStates=UI_SYS_MENU_TIME;
  432. //UiGoSysMenu();
  433. break;
  434. case UI_SYS_MENU_POWER:
  435. UiGoSysEditPSave();
  436. gxbUiMenuSubStates=UI_SYS_MENU_POWER;
  437. //UiSysMenuRedrawAll() ;
  438. break;
  439. case UI_SYS_MENU_LANG:
  440. UiGoSysLangMenu();
  441. gxbUiMenuSubStates=UI_SYS_MENU_LANG;
  442. //UiGoSysMenu();
  443. break;
  444. case UI_SYS_MENU_DISPLAY:
  445. UiGoDispMenu();
  446. gxbUiMenuSubStates=UI_SYS_MENU_DISPLAY;
  447. //UiGoSysMenu();
  448. break;
  449. case UI_SYS_MENU_REC:
  450. /*        //TONY 070104
  451. #if(UI_USE_REC_SOURCE|UI_USE_REC_VAD)
  452. UiDrawSubMenu(cwStringSystemList[UI_SYS_MENU_REC]);
  453. UiGoRecMenuFrom();
  454. #else
  455. #if(UI_USE_LINE_REC_QTY)
  456. //Walace060914#1 start
  457. //OledClearArea(SEG2,LINE0,SEG8,LINE1) ;
  458. //OledClearArea(SEG0,LINE1,OLED_MAX_COL-SEG0,OLED_MAX_ROW-LINE1) ;
  459. OledClearArea(SEG0,UI_MENU_FRAME_ROW,OLED_MAX_COL-SEG0,OLED_MAX_ROW-UI_MENU_FRAME_ROW);//LcdClearBlock(2,0,6,MAX_COLNUM+1);
  460. //Walace060914#1 end
  461. StrShowSysString(SYS_STR_MENU_REC_QUALITY,SEG2,PAGE0);
  462. #else
  463. UiDrawSubMenu(SYS_STR_MENU_REC_QUALITY);
  464. #endif
  465. gxbUiMenuSubStates=gxbRecQuality;
  466. gxbUiMenuMainStates=UI_QTY_MENU;
  467. UiGoRecQtyMenu();
  468. #endif
  469. */
  470. UiRecMenuForSys();
  471. gxbUiMenuSubStates=UI_SYS_MENU_REC;
  472. //UiGoSysMenu();
  473. break;
  474. case UI_SYS_MENU_TOOL:
  475. UiGoToolMenu();
  476. gxbUiMenuSubStates=UI_SYS_MENU_TOOL;
  477. //UiGoSysMenu();
  478. break;
  479. #if(UI_USE_USER_EQ)
  480. case UI_SYS_MENU_USER_EQ:
  481. UiGoUserDefEqMenu();
  482. gxbUiMenuSubStates=UI_SYS_MENU_USER_EQ;
  483. UiSysMenuRedrawAll() ;
  484. break;
  485. #endif
  486. #if(UI_USE_STORAGE_SOURCE)
  487. case UI_SYS_MENU_STORAGE:
  488. UiGoStorMenu();
  489. gxbUiMenuSubStates=UI_SYS_MENU_STORAGE;
  490. //UiGoSysMenu();
  491. break;
  492. #endif
  493. #if(_PEDOMETER_Mode_)
  494. case UI_SYS_MENU_PEDOMETER:
  495. UiGoPedoMeterMenu();
  496. gxbUiMenuSubStates=UI_SYS_MENU_PEDOMETER;
  497. //UiGoSysMenu();
  498. break;
  499. #endif
  500. }
  501. gxbUiMenuMainStates=UI_SYS_ROOT_MENU;
  502. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_MAX_ITEM);
  503. break;
  504. //#if(!UI_USE_MODE_KEY)
  505. //tne 2007/01/13 #1
  506. case KEY_FUNC_BREAK:
  507. gxbSettingBuffer[SETTING_DISPLAY_SWAPING]=TRUE;
  508. gxbSettingBuffer[SETTING_NEXT_MODE]=SAVE_AND_SEL_MODE;
  509. gxbLastErrCode=ERR_NO_ERROR;
  510. SaveSetting();
  511. break;
  512. //#endif
  513. }
  514. }
  515. }
  516. void UiGoSysDrmMenu(void) large
  517. {
  518. BYTE bKey;
  519. //UI_SHOW_MENU_TITLE_STRING(SYS_STR_SMP_TITLE_USBMODE); //tne 2005/11/25 #1
  520. gxbUiMenuMainStates=UI_SYS_MENU;
  521. #if(!DRM_MODE_EN) // modify by Rojam 2007-04-16 15:28
  522. gxbDrmOptionMode=0;
  523. #endif
  524. gxbUiMenuSubStates=(gxbDrmOptionMode&DRM_OPTION_MTP_MODE);
  525. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_USB_MODE_MAX_ITEM);
  526. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_SMP_TITLE_USBMODE);
  527. while(1)
  528. {
  529. //UiShowSubMenuNum(gxbUiMenuSubStates+1,UI_SYS_MENU_USB_MODE_MAX_ITEM);
  530. //UI_SHOW_MENU_TAG_STRING(cwStringSysDrmList[gxbUiMenuSubStates]);
  531. #if(DRM_MODE_EN) // modify by Rojam 2007-04-16 15:28
  532. ShowSetupItemUnSelect(cwStringSysDrmList[!gxbUiMenuSubStates],(!gxbUiMenuSubStates));
  533. #endif
  534. ShowSetupItemSelect(cwStringSysDrmList[gxbUiMenuSubStates],(gxbUiMenuSubStates));
  535. do
  536. {
  537. #if(USE_SYS_STR_SCROLL)
  538. SysStringScroll();
  539. #endif
  540. UiNormalCheck();
  541. KeyGet(bKey);
  542. UiCheckBackLight(bKey);
  543. switch(bKey)
  544. {
  545. #if(DRM_MODE_EN) // modify by Rojam 2007-04-16 15:28
  546. case KEY_LEFT_BREAK:
  547. case KEY_LEFT_LONG_BREAK:
  548. case KEY_RIGHT_BREAK:
  549. case KEY_RIGHT_LONG_BREAK:
  550.   gxbUiMenuSubStates ^= 1;
  551. break;
  552. #endif
  553. case KEY_UP_BREAK:
  554. //case KEY_UP_LONG_BREAK:
  555. gxbDrmOptionMode=gxbUiMenuSubStates;
  556. //SramWrite(SRAM_DRM_OPTION_MODE,&gxbDrmOptionMode); //tne 2006/05/10 #3
  557. case KEY_FUNC_BREAK:
  558. case KEY_FUNC_LONG:
  559. return;
  560. }
  561. }while(!(bKey&KEY_BREAK));//while(bKey==KEY_INVALID); // Walace051015
  562. }
  563. }
  564. void UiGoToolMenu(void) large
  565. {
  566. BYTE bKey;
  567. //ToolMenuStart:
  568. // UI_SHOW_MENU_TITLE_STRING(SYS_STR_SMP_TITLE_SYSTOOL); //tne 2005/11/25 #1
  569. gxbUiMenuSubStates=UI_SYSTOOL_DEL_MENU;
  570. gxbUiMenuMainStates=UI_SYSTOOL_MENU;
  571. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_TOOL_MAX_ITEM);
  572. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_SMP_TITLE_SYSTOOL);
  573. while(1)
  574. {
  575. // UI_SHOW_MENU_TAG_STRING(cwStringSysToolList[gxbUiMenuSubStates]);
  576. // UiShowSubMenuNum(gxbUiMenuSubStates+1,UI_SYS_MENU_TOOL_MAX_ITEM);
  577. do
  578. {
  579. #if(USE_SYS_STR_SCROLL)
  580. SysStringScroll();
  581. #endif
  582. UiNormalCheck();
  583. KeyGet(bKey);
  584. UiCheckBackLight(bKey);
  585. switch(bKey)
  586. {
  587. case KEY_LEFT_BREAK:
  588. if((gxbUiMenuSubStates%ITEM_SUB_NUM_OPAGE==0)||(gxbUiMenuSubStates==0))
  589. {
  590. if(gxbUiMenuSubStates)
  591. gxbUiMenuSubStates--;
  592. else
  593. #if(0)//#if(UI_USE_CLASS_LIST)  //TONY070308
  594. gxbUiMenuSubStates=UI_SYSTOOL_REFRESH_MENU;
  595. #else
  596. //gxbUiMenuSubStates=UI_SYSTOOL_INFO_MENU; //Walace060323#1
  597. gxbUiMenuSubStates=UI_SYSTOOL_DEL_LICENSE_MENU;
  598. #endif
  599. #if(0)//#if(UI_USE_CLASS_LIST) //TONY070308
  600. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYSTOOL_REFRESH_MENU+1);
  601. #else
  602. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYSTOOL_DEL_LICENSE_MENU+1);
  603. #endif
  604. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_SMP_TITLE_SYSTOOL);
  605. }
  606. else
  607. {
  608. gxbUiMenuSubStates--;
  609. ShowSetupItemUnSelect(cwStringSysToolList [gxbUiMenuSubStates+1],gxbUiMenuSubStates+1); 
  610. ShowSetupItemSelect( cwStringSysToolList[gxbUiMenuSubStates],gxbUiMenuSubStates);
  611. }
  612. break;
  613. case KEY_RIGHT_BREAK:
  614. #if(0)//#if(UI_USE_CLASS_LIST)       //TONY070308
  615. if((((gxbUiMenuSubStates+1)%ITEM_SUB_NUM_OPAGE)==0)||(gxbUiMenuSubStates==UI_SYSTOOL_REFRESH_MENU))
  616. #else
  617. if((((gxbUiMenuSubStates+1)%ITEM_SUB_NUM_OPAGE)==0)||(gxbUiMenuSubStates==UI_SYSTOOL_DEL_LICENSE_MENU))
  618. #endif
  619. {
  620. #if(0)//#if(UI_USE_CLASS_LIST) //TONY070308
  621. if(gxbUiMenuSubStates==UI_SYSTOOL_REFRESH_MENU)
  622. #else
  623. if(gxbUiMenuSubStates==UI_SYSTOOL_DEL_LICENSE_MENU)
  624. #endif
  625. gxbUiMenuSubStates =0;
  626. else
  627. gxbUiMenuSubStates++;
  628. #if(0)// #if(UI_USE_CLASS_LIST)  
  629. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYSTOOL_REFRESH_MENU+1);
  630. #else
  631. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYSTOOL_DEL_LICENSE_MENU+1);
  632. #endif
  633. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_SMP_TITLE_SYSTOOL);
  634. }
  635. else
  636. {
  637. ShowSetupItemUnSelect(cwStringSysToolList[gxbUiMenuSubStates],gxbUiMenuSubStates);
  638. gxbUiMenuSubStates++;
  639.   ShowSetupItemSelect( cwStringSysToolList[gxbUiMenuSubStates],gxbUiMenuSubStates);
  640. }
  641. break;
  642. case KEY_UP_BREAK:
  643. // if(gxbUiMenuSubStates!=UI_SYSTOOL_DEL_MENU) //Tne060912#1
  644. // UI_SHOW_MENU_TITLE_STRING(cwStringSysToolList[gxbUiMenuSubStates]);
  645. UI_SHOW_MENU_TITLE_ITEM_STRING(cwStringSysToolList[gxbUiMenuSubStates]);
  646. switch(gxbUiMenuSubStates)
  647. {
  648. case UI_SYSTOOL_DEL_MENU:
  649. UiGoSysFileMenu();
  650. gxbUiMenuSubStates=UI_SYSTOOL_DEL_MENU;
  651. //UiSysMenuRedrawAll();  // WHH070311#1 start
  652. UiShowLargeBackground(5,IM_BROWSER_BG_03_S1); //tne 2007/01/10 #2
  653. gfTransparent =TRUE;
  654. StrShowSysString(SYS_STR_SYSTEM_MODE, LCD_AUTO_CENTER_COL,(ITEM_START_ROW-18));
  655. gfTransparent =FALSE;
  656. UiShowNormalTitleInfo();
  657. break;   // WHH070311#1 end
  658. case UI_SYSTOOL_FORMAT_MENU:
  659. UiGoSysFormatMenu();
  660. gxbUiMenuSubStates=UI_SYSTOOL_FORMAT_MENU;
  661. break;
  662. //goto ToolMenuStart;
  663. case UI_SYSTOOL_RESTOR_MENU: 
  664. //UiGoRestoreSureMenu(); //Walace060323#1
  665. UiGoFuncMakeSureMenu(UI_SYSTOOL_RESTOR_MENU);
  666. gxbUiMenuSubStates=UI_SYSTOOL_RESTOR_MENU;
  667.               break;
  668. case UI_SYSTOOL_INFO_MENU:
  669. UiGoSysInfo();
  670. break;
  671. #if(UI_USE_CLASS_LIST)
  672. case UI_SYSTOOL_REFRESH_MENU:
  673. // UiGoRefreshSureMenu();
  674. UiGoFuncMakeSureMenu(UI_SYSTOOL_REFRESH_MENU); //TONY070106
  675. gxbUiMenuSubStates=UI_SYSTOOL_REFRESH_MENU;
  676. break;
  677. #endif
  678. case UI_SYSTOOL_DEL_LICENSE_MENU: //Walace060323#1
  679. //UiGoDeleteLicenseSureMenu(); //TONY070108
  680. UiGoFuncMakeSureMenu(UI_SYSTOOL_DEL_LICENSE_MENU);
  681. gxbUiMenuSubStates=UI_SYSTOOL_DEL_LICENSE_MENU;
  682. break;
  683. }
  684. gxbUiMenuMainStates=UI_SYSTOOL_MENU;
  685. // UiDrawSubMenu(SYS_STR_SMP_TITLE_SYSTOOL); //tne 2005/11/25 #1
  686. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_TOOL_MAX_ITEM) ;
  687. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_MENU_SYS_TOOLS);
  688. break;
  689. case KEY_FUNC_BREAK:
  690. case KEY_FUNC_LONG:
  691. return;
  692. }
  693. }while(!(bKey&KEY_BREAK));//while(bKey==KEY_INVALID); // Walace051015
  694. }
  695. }
  696. //UI for class //tne 2007/01/14 #3
  697. #if(UI_USE_CLASS_LIST & 0)
  698. void UiGoRefreshSureMenu(void) large
  699. {
  700. BYTE bKey;
  701. UiDrawSubMenu(SYS_STR_TOOLS_REFRESH);
  702. gxbUiMenuSubStates=FALSE;
  703. //Walace060629#2 start
  704. if(gbFsUnableUse)
  705. {
  706. gxbLastErrCode=ERR_INIT_FS_ERR;
  707. OLED_CLEAR_ALL();
  708. #if(USE_ERR_MSG_DISPLAY)
  709. UiCheckIniErr();
  710. #endif
  711. return;
  712. }
  713. //Walace060629#2 end
  714. while(1)
  715. {
  716. //UiShowSubMenuNum(gxbUiMenuSubStates+1,UI_SYS_MENU_YESNO_MAX_ITEM);
  717. UI_SHOW_MENU_TAG_STRING(cwStringSysYesNoList[gxbUiMenuSubStates]);
  718. do
  719. {
  720. UiNormalCheck();
  721. KeyGet(bKey);
  722. UiCheckBackLight(bKey);
  723. switch(bKey)
  724. {
  725. case KEY_LEFT_BREAK:
  726. case KEY_RIGHT_BREAK:
  727. gxbUiMenuSubStates ^= 0x01;
  728. break;
  729. case KEY_UP_BREAK:
  730. if(gxbUiMenuSubStates)
  731. UiGoSysRefreshCdb();
  732. case KEY_FUNC_BREAK:
  733. return;
  734. }
  735. }while(!(bKey&KEY_BREAK));//while(bKey==KEY_INVALID); // Walace051015
  736. }
  737. }
  738. #endif
  739. BYTE UiSysInfoFreeNum(WORD wFreeSize) large
  740. {
  741. BYTE bI,bJ;
  742. if(wFreeSize>=1000)
  743. bI=8;
  744. else if(wFreeSize>=100)
  745. bI=7;
  746. else if(wFreeSize>=10)
  747. bI=6;
  748. else
  749. bI=5;
  750. for(bJ=bI;bJ>4;bJ--)
  751. {
  752. gxbStringBuffer[bJ]=(wFreeSize%10)+0x30;
  753. wFreeSize = wFreeSize/10;
  754. }
  755. return bI;
  756. }
  757. void UiGoSysInfo(void) large
  758. {
  759. BYTE bKey,bI;
  760. DWORD dwFreeSize;
  761. gxbUiMenuMainStates=UI_SYSINFO_MENU; //tne 2006/08/07 #2
  762. // OLED_CLEAR_ALL();
  763. //    OledShowIcon(ICON_LAB_SETUP,SEG0,LINE0) ;
  764. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW);  
  765.    
  766. // UI_SHOW_MENU_TITLE_STRING(cwStringSysToolList[UI_SYSTOOL_INFO_MENU]);
  767. UI_SHOW_MENU_TITLE_ITEM_STRING(cwStringSysToolList[UI_SYSTOOL_INFO_MENU]);
  768. #if(USE_SYS_STR_UNICODE)
  769. gxfSourceUnicode=STRING_TYPE_ASCII;
  770. #endif
  771. for(bI=0;bI<sizeof(cbStringFW);bI++)
  772. gxbStringBuffer[bI]=cbStringFW[bI];
  773. //Walace060616#1 Vender ID start
  774. gxbStringBuffer[3]=((VENDER_1&0xF0)>>4)+0x30;
  775. gxbStringBuffer[4]=(VENDER_1&0x0F)+0x30;
  776. gxbStringBuffer[6]=((VENDER_2&0xF0)>>4)+0x30;
  777. gxbStringBuffer[7]=(VENDER_2&0x0F)+0x30;
  778. gxbStringBuffer[9]=((VENDER_3&0xF0)>>4)+0x30;
  779. gxbStringBuffer[10]=(VENDER_3&0x0F)+0x30;
  780. /*
  781. gxbStringBuffer[3]=((KERNALVER_1&0xF0)>>4)+0x30;
  782. gxbStringBuffer[4]=(KERNALVER_1&0x0F)+0x30;
  783. gxbStringBuffer[6]=((KERNALVER_2&0xF0)>>4)+0x30;
  784. gxbStringBuffer[7]=(KERNALVER_2&0x0F)+0x30;
  785. gxbStringBuffer[9]=((KERNALVER_3&0xF0)>>4)+0x30;
  786. gxbStringBuffer[10]=(KERNALVER_3&0x0F)+0x30;
  787. */
  788. //Walace060616#1 Vender ID end
  789. gfTransparent =TRUE;
  790. //StrShowString(gxbStringBuffer,ITEM_START_COL+0,ITEM_START_ROW+ITEM_ROW_OFF,11); // modify by Rojam 2007-04-17 10:8
  791. StrShowString(gxbStringBuffer,ITEM_START_COL-16,ITEM_START_ROW+ITEM_ROW_OFF,11);
  792. for(bI=0;bI<sizeof(cbStringChip);bI++)
  793. gxbStringBuffer[bI]=cbStringChip[bI];
  794. gxbStringBuffer[5]=((gxbChipVerCode&0xF0)>>4)+0x30;
  795. gxbStringBuffer[6]=(gxbChipVerCode&0x0F)+0x30;
  796. //StrShowString(gxbStringBuffer,ITEM_START_COL+0,ITEM_START_ROW+ITEM_ROW_OFF*2,7); // modify by Rojam 2007-04-17 10:9
  797. StrShowString(gxbStringBuffer,ITEM_START_COL-16,ITEM_START_ROW+ITEM_ROW_OFF*2,7);
  798. for(bI=0;bI<sizeof(cbStringFree);bI++)
  799. gxbStringBuffer[bI]=cbStringFree[bI];
  800. //Display free size
  801. dwFreeSize=gxdwNumFreeClu*gbSecPerClu; //(wFreeSize*512=byte)
  802. if(dwFreeSize>=2048) //display MB (1024*1024/512=2048)
  803. {
  804. dwFreeSize=dwFreeSize>>11;
  805. bI=UiSysInfoFreeNum(dwFreeSize);
  806. gxbStringBuffer[bI+1]=cbStringMB[0];
  807. gxbStringBuffer[bI+2]=cbStringMB[1];
  808. //StrShowString(gxbStringBuffer,ITEM_START_COL+0,ITEM_START_ROW+ITEM_ROW_OFF*3,bI+3); // modify by Rojam 2007-04-17 10:9
  809. StrShowString(gxbStringBuffer,ITEM_START_COL-16,ITEM_START_ROW+ITEM_ROW_OFF*3,bI+3);
  810. }
  811. else// if(dwFreeSize>=2) //display KB (1024/512=2)
  812. {
  813. dwFreeSize=dwFreeSize>>1;
  814. bI=UiSysInfoFreeNum(dwFreeSize);
  815. gxbStringBuffer[bI+1]=cbStringKB[0];
  816. gxbStringBuffer[bI+2]=cbStringKB[1];
  817. //StrShowString(gxbStringBuffer,ITEM_START_COL+0,ITEM_START_ROW+ITEM_ROW_OFF*3,bI+3);// modify by Rojam 2007-04-17 10:9
  818. StrShowString(gxbStringBuffer,ITEM_START_COL-16,ITEM_START_ROW+ITEM_ROW_OFF*3,bI+3);
  819. }
  820. gfTransparent =FALSE;
  821. #if(USE_SYS_STR_UNICODE)
  822. gxfSourceUnicode=STRING_TYPE_UNICODE;
  823. #endif
  824. while(1)
  825. {
  826. UiNormalCheck();
  827. KeyGet(bKey);
  828. UiCheckBackLight(bKey);
  829. for(bI=0;bI<255;bI++) //delay for key detect
  830. { };
  831. if((bKey==KEY_UP_BREAK)||(bKey==KEY_FUNC_BREAK)||(bKey==KEY_FUNC_LONG))
  832. return;
  833. }
  834. }
  835. void UiGoSysFormatMenu(void) large
  836. {
  837. BYTE bKey;
  838. gxbUiMenuMainStates=UI_FORMAT_MENU;
  839. gxbUiMenuSubStates=gfFormatType;
  840. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_FORMAT_MAX_ITEM);
  841. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_TOOLS_FORMAT);
  842. while(1)
  843. {
  844. // UI_SHOW_MENU_TAG_STRING(cwStringFormatList[gxbUiMenuSubStates]);
  845. // UiShowSubMenuNum(gxbUiMenuSubStates+1,UI_SYS_MENU_FORMAT_MAX_ITEM);
  846. ShowSetupItemUnSelect(cwStringFormatList [!gxbUiMenuSubStates],(!gxbUiMenuSubStates));
  847. ShowSetupItemSelect(cwStringFormatList[gxbUiMenuSubStates],(gxbUiMenuSubStates));
  848. do
  849. {
  850. #if(USE_SYS_STR_SCROLL)
  851. SysStringScroll();
  852. #endif
  853. UiNormalCheck();
  854. KeyGet(bKey);
  855. UiCheckBackLight(bKey);
  856. switch(bKey)
  857. {
  858. case KEY_LEFT_BREAK:
  859. case KEY_RIGHT_BREAK:
  860. gxbUiMenuSubStates ^= 0x01;
  861. break;
  862. case KEY_UP_BREAK:
  863. gfFormatType=gxbUiMenuSubStates;
  864. UiGoFormatSureMenu();
  865. gxbUiMenuSubStates=gfFormatType;
  866. break;
  867. case KEY_FUNC_BREAK:
  868. case KEY_FUNC_LONG:
  869. return;
  870. }
  871. }while(!(bKey&KEY_BREAK));//while(bKey==KEY_INVALID); // Walace051015
  872. }
  873. }
  874. void UiGoFormatProcess(void) //Walace060323#1
  875. {   
  876. gxbLastUIFormatSts=0xFF; //vicky060929#1
  877. //if(gfFormatType==UI_QUICK_FORMAT_MENU) //Walace060629#2
  878. if(gfFormatType==UI_QUICK_FORMAT_MENU&&gxbFatType!=FAT_UNKNOW) //Walace060629#2
  879. {
  880. FsQuickFormat();
  881. }
  882. else
  883. {
  884. gfFormatType = UI_COMPLETE_FORMAT_MENU;  //Walace060726#1
  885. //vicky060928#1
  886. if(BattCheck()>BATTERY_LV_LOW_FOR_REC)
  887. {
  888. FsFullFormat();
  889. }
  890. else
  891. {
  892. // OLED_CLEAR_ALL();
  893. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW+ITEM_ROW_OFF);
  894. //OledShowIcon(ICON_BATT_WARRING,SEG3+ITEM_START_COL,ITEM_ROW_OFF+ITEM_START_ROW);
  895. OledShowIconNew(1,ICON_BATT_WARRING,(OLED_MAX_COL-48)/2,(OLED_MAX_ROW-48)/2);
  896. gxbLcdCounter=0;
  897. while(gxbLcdCounter<UI_SHW_WAKE_UP_DELAY_TIME) { };
  898. }
  899. //End
  900. }
  901. FsWriteLabelName(); //tne 2005/12/19 //Walace060725#1
  902. LoadRecInfo(); //vicky050214 #1
  903. UiFsRecInit(); //vicky050203
  904. FsInfoUpdate(); //tne 2005/05/10
  905. if(gxbStorType==STOR_NAND)  //Walace060904#1
  906. NandFinishJob();
  907. #if(USE_ERR_MSG_DISPLAY)
  908. // OLED_CLEAR_ALL();
  909. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW+ITEM_ROW_OFF);
  910. UiCheckIniErr();
  911. #endif
  912. }
  913. void UiGoFormatSureMenu(void) large
  914. {
  915. BYTE bKey;
  916. // UiDrawSubMenu(cwStringSysToolList[UI_SYSTOOL_FORMAT_MENU]);
  917. // UI_SHOW_MENU_TITLE_STRING(cwStringSysToolList[UI_SYSTOOL_FORMAT_MENU]); //tne 2005/11/25 #1
  918. gxbUiMenuMainStates  =UI_DEL_YES_NO_MENU;
  919. gxbUiMenuSubStates =FALSE ;
  920. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_YESNO_MAX_ITEM);
  921. UI_SHOW_MENU_TITLE_ITEM_STRING(cwStringSysToolList[UI_SYSTOOL_FORMAT_MENU]);
  922. UiShowFormatWarning(); // Jeff070312#1
  923. //gxbUiMenuSubStates=FALSE;
  924.    
  925. while(1)
  926. {
  927. ShowSetupItemUnSelect(cwStringSysYesNoList[!gxbUiMenuSubStates],(!gxbUiMenuSubStates));
  928. ShowSetupItemSelect(cwStringSysYesNoList[gxbUiMenuSubStates],(gxbUiMenuSubStates));
  929. do
  930. {
  931. #if(USE_SYS_STR_SCROLL)
  932. SysStringScroll();
  933. #endif
  934. UiNormalCheck();
  935. KeyGet(bKey);
  936. UiCheckBackLight(bKey);
  937. switch(bKey)
  938. {
  939. case KEY_LEFT_BREAK:
  940. case KEY_LEFT_LONG_BREAK:
  941. case KEY_RIGHT_BREAK:
  942. case KEY_RIGHT_LONG_BREAK:
  943. gxbUiMenuSubStates ^= 0x01;
  944. break;
  945. case KEY_UP_BREAK:
  946. //case KEY_UP_LONG_BREAK:
  947. if(gxbUiMenuSubStates)
  948. {
  949. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW+ITEM_ROW_OFF);
  950.                                           UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_FORMATING);
  951. //Walace060323#1 start
  952. UiGoFormatProcess(); 
  953. /*   
  954. if(gfFormatType==UI_QUICK_FORMAT_MENU)
  955. FsQuickFormat();
  956. else
  957. FsFullFormat();
  958. UiWriteLabelName(); //tne 2005/12/19
  959. LoadRecInfo(); //vicky050214 #1
  960. UiFsRecInit(); //vicky050203
  961. FsInfoUpdate(); //tne 2005/05/10
  962. NandFinishJob();
  963. #if(USE_ERR_MSG_DISPLAY)
  964. OLED_CLEAR_ALL();
  965. UiCheckIniErr();
  966. #endif
  967. */
  968. //Walace060323#1 end
  969. // UiDrawSubMenu(cwStringSysToolList[UI_SYSTOOL_FORMAT_MENU]);
  970. gxbUiMenuMainStates  =UI_DEL_YES_NO_MENU;
  971. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_YESNO_MAX_ITEM);
  972. UI_SHOW_MENU_TITLE_ITEM_STRING(cwStringSysToolList[UI_SYSTOOL_FORMAT_MENU]);
  973. }
  974. case KEY_FUNC_BREAK:
  975. case KEY_FUNC_LONG:
  976. //UI_SHOW_MENU_TAG_STRING(cwStringSysYesNoList[gxbUiMenuSubStates]);
  977. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW+ITEM_ROW_OFF);  // Jeff070312#1
  978. return;
  979. }
  980. }while(!(bKey&KEY_BREAK));//while(bKey==KEY_INVALID); // Walace051015
  981. }
  982. gpstFileIndex=&stUiFileListData; //Vicky050321#3
  983. }
  984. void UiRestoreProcess(void) //Walace060323#1
  985. {
  986. BYTE bTemp;
  987. NandPrivateEn();
  988. ReadSettingData(FS_DATA_0_0);
  989. RestoreDefaultSetting();
  990. NandFinishJob();
  991. NandPrivateDis();
  992. //tne 2005/04/26
  993. //Disable alarm clock 050920
  994. obDCVARRD=0x03;
  995. obDCVWRDATA=(obDCVRDDATA&RTC_ALARM_DIS);
  996. obDCV_INT_MASK &= 0xF7; //disable alarm mask 
  997. for(bTemp=0;bTemp<8;bTemp++)  //reset clock and alarm
  998. {
  999. obDCVARRD=bTemp+0x15;
  1000. obDCVWRDATA=0;
  1001. }
  1002.                             gfAlarmTimeUp = FALSE;
  1003. gxbTimeZone=TIME_ZONE_DEFAULT;
  1004. gxbRecOption=REC_VAD_DEFAULT; //tne 2006/01/16
  1005. gxbPlaybackRate=0;
  1006. LoadStringTableIndex();
  1007. LoadTransTableIndex();
  1008. // Jeff070309#3 start
  1009. gxbStorType=STOR_NAND;
  1010. #if(NEW_FLASH)
  1011. NandInit(NDINIT_DONE);
  1012. #else
  1013. NandInit();
  1014. #endif
  1015. FsInit();
  1016. if(!FsInfoCheck())
  1017. {
  1018. FsRecInit();
  1019. }
  1020. // Jeff070309#3 end
  1021. //UI for class
  1022. #if(UI_USE_CLASS_LIST)
  1023. UiGoSysRefreshCdb();
  1024. #endif
  1025. //LCD_CTRL_EN();
  1026. }
  1027.  //Walace060323#1
  1028. void SetPrivateArea(WORD wStartSec,WORD wByteLen,BYTE bValue)
  1029. {
  1030. // WORD wSecIndex;
  1031. WORD wByteIndex;
  1032. WORD wProcessLen;
  1033. NandPrivateEn();
  1034. while(wByteLen)
  1035. {
  1036. if(wByteLen>=512)    
  1037. wProcessLen=512;
  1038. else
  1039. wProcessLen=wByteLen;
  1040. FsRead(wStartSec, 1, FS_DATA_0_0);
  1041. for(wByteIndex=0;wByteIndex<wProcessLen;wByteIndex++)
  1042.  *(gxbFsData+gxwOffsetDataSec+wByteIndex)=bValue; 
  1043. wByteLen-=wProcessLen; 
  1044. if(!wByteLen)
  1045. FsWrite(wStartSec, 1, FS_DATA_0_0);
  1046. wStartSec++;
  1047. gfKeptDataModified=TRUE;
  1048. }
  1049. NandPrivateDis();
  1050. }
  1051.  
  1052. //Walace060323#1
  1053. void UiDelLicenseProcess(void) 
  1054. {
  1055. WORD wLicIndexStartSec;
  1056. WORD wLicValidStartSec;
  1057. WORD wLicStoreStartSec;
  1058. WORD wLicMaxNum;
  1059. #if MTP_SUPPORT_METERING
  1060. WORD wMidIndexStartSec;//Chris add 060919 #1 Clean MID
  1061. WORD wMidMaxSec;//Chris add 060919 #1 Clean MID
  1062. #endif
  1063. NandPrivateEn();
  1064. FsRead(0, 1, FS_DATA_0_0);
  1065. wLicIndexStartSec = (((WORD)gxbFsData[7]<<8)|gxbFsData[6]);
  1066. wLicValidStartSec = (((WORD)gxbFsData[9]<<8)|gxbFsData[8]);
  1067. wLicStoreStartSec = (((WORD)gxbFsData[11]<<8)|gxbFsData[10]);
  1068. #if MTP_SUPPORT_METERING
  1069. wMidIndexStartSec = (((WORD)gxbFsData[21]<<8)|gxbFsData[20]);//Chris add 060919 #1 Clean MID
  1070. #endif
  1071. wLicMaxNum= (((WORD)gxbFsData[509]<<8)|gxbFsData[508]);
  1072. #if MTP_SUPPORT_METERING
  1073. wMidMaxSec= 313;//Chris add 060919 #1 Clean MID
  1074. #endif
  1075. NandPrivateDis();
  1076. SetPrivateArea(wLicIndexStartSec,wLicMaxNum*LIC_INDEX_LENGTH,0x00);
  1077. SetPrivateArea(wLicValidStartSec,(wLicMaxNum+7)/8,0xFF); //Walace060920#3
  1078. SetPrivateArea(wLicStoreStartSec,wLicMaxNum*LIC_STORE_LENGTH,0x00);
  1079. #if MTP_SUPPORT_METERING
  1080. SetPrivateArea(wMidIndexStartSec,wMidMaxSec<<9,0x00); //Chris add 060919 #1 Clean MID
  1081. #endif
  1082. }
  1083. #if(0) //tne 2007/01/14 #3
  1084. void UiGoDeleteLicenseSureMenu(void)
  1085. {
  1086. BYTE bKey;
  1087. //tne 2006/11/20 #2 start
  1088. gxbUiMenuMainStates=UI_DEL_LIC_YES_NO_MENU;
  1089. OLED_CLEAR_ALL();
  1090. StrShowSysString(cwStringSysToolList[UI_SYSTOOL_DEL_LICENSE_MENU],LCD_AUTO_CENTER_COL,PAGE0);
  1091. //OledClearArea(WORD0,LINE1,OLED_MAX_COL-WORD0,OLED_MAX_ROW-LINE1);
  1092. //tne 2006/11/20 #2 end
  1093. gxwFGColor=OLED_RED;
  1094. StrShowSysString(SYS_STR_LICENSE_ALL_FILES,LCD_AUTO_CENTER_COL,LINE1);
  1095. StrShowSysString(SYS_STR_LICENSE_WILL_BE_DELETED,LCD_AUTO_CENTER_COL,LINE2);
  1096. gxwFGColor=OLED_FG_COLOR;
  1097. StrShowSysString(SYS_STR_YES,WORD1,LINE3);
  1098. StrShowSysString(SYS_STR_NO,WORD4,LINE3);
  1099. gxbUiMenuSubStates=0x00;
  1100. OledReverse(SEG1,LINE3,WORD2,LINE1); //Walace060504#2
  1101. while(TRUE)
  1102. {
  1103. OledReverse(SEG7,LINE3,WORD2,LINE1); //Walace060504#2
  1104. OledReverse(SEG1,LINE3,WORD2,LINE1); //Walace060504#2
  1105. do
  1106. {
  1107. UiNormalCheck();
  1108. KeyGet(bKey);
  1109. UiCheckBackLight(bKey);
  1110. switch(bKey)
  1111. {
  1112. case KEY_LEFT_BREAK:
  1113. case KEY_RIGHT_BREAK:
  1114. gxbUiMenuSubStates ^= 0x01;
  1115. break;
  1116. case KEY_UP_BREAK:
  1117. case KEY_UP_LONG_BREAK:
  1118. if(gxbUiMenuSubStates)
  1119. {
  1120. OLED_CLEAR_ALL();
  1121. StrShowSysString(SYS_STR_LICENSE_DELETTING,LCD_AUTO_CENTER_COL,PAGE2);
  1122. UiDelLicenseProcess();
  1123. OLED_CLEAR_ALL();
  1124.                                           StrShowSysString(SYS_STR_FORMATING,LCD_AUTO_CENTER_COL,PAGE2);   
  1125. gfFormatType=UI_QUICK_FORMAT_MENU;
  1126. UiGoFormatProcess();
  1127. }
  1128. case KEY_FUNC_BREAK:
  1129. return;
  1130. }
  1131. }while(!(bKey&KEY_BREAK));
  1132. }
  1133. }
  1134. #endif
  1135. //void UiGoRestoreSureMenu(void) large
  1136. void UiGoFuncMakeSureMenu(BYTE bFunCmd) large //Walace060323#1
  1137. {
  1138. BYTE bKey;
  1139. // StrShowSysString(cwStringSysToolList[bFunCmd],SEG2,PAGE0);
  1140. gxbUiMenuMainStates =UI_DEL_YES_NO_MENU;
  1141. gxbUiMenuSubStates=FALSE;
  1142. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_YESNO_MAX_ITEM);
  1143. if(bFunCmd ==UI_SYSTOOL_RESTOR_MENU)
  1144. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_TOOLS_RESET);
  1145. if(bFunCmd ==UI_SYSTOOL_DEL_LICENSE_MENU)
  1146. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_TOOLS_DEL_LICENSE);
  1147. #if(UI_USE_CLASS_LIST)
  1148. if(bFunCmd ==UI_SYSTOOL_REFRESH_MENU)
  1149. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_TOOLS_REFRESH);
  1150. #endif
  1151. if(bFunCmd ==UI_SYSTOOL_DEL_LICENSE_MENU||bFunCmd ==UI_SYSTOOL_FORMAT_MENU)
  1152. { UiShowFormatWarning();  } // Jeff070312#1
  1153. while(1)
  1154. {
  1155. // UI_SHOW_MENU_TAG_STRING(cwStringSysYesNoList[gxbUiMenuSubStates]);
  1156. // UiShowSubMenuNum(gxbUiMenuSubStates+1,UI_SYS_MENU_YESNO_MAX_ITEM);
  1157. ShowSetupItemUnSelect(cwStringSysYesNoList[!gxbUiMenuSubStates],(!gxbUiMenuSubStates));
  1158. ShowSetupItemSelect(cwStringSysYesNoList[gxbUiMenuSubStates],(gxbUiMenuSubStates));
  1159. do
  1160. {
  1161. #if(USE_SYS_STR_SCROLL)
  1162. SysStringScroll();
  1163. #endif
  1164. UiNormalCheck();
  1165. KeyGet(bKey);
  1166. UiCheckBackLight(bKey);
  1167. switch(bKey)
  1168. {
  1169. case KEY_LEFT_BREAK:
  1170. case KEY_RIGHT_BREAK:
  1171. gxbUiMenuSubStates ^= 0x01;
  1172. break;
  1173. case KEY_UP_BREAK:
  1174. //case KEY_UP_LONG_BREAK:
  1175. if(gxbUiMenuSubStates)
  1176. {   //Walace060323#1 //original code moved to UiRestoreProcess()
  1177. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW);
  1178. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW+16); // modify by Rojam for clear Icon  2007-04-17-10:58
  1179. switch(bFunCmd)
  1180. {
  1181. case UI_SYSTOOL_RESTOR_MENU:
  1182. UiRestoreProcess();
  1183. break;
  1184. case UI_SYSTOOL_DEL_LICENSE_MENU:
  1185. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_LICENSE_DELETTING);
  1186. UiDelLicenseProcess();
  1187. gfFormatType=UI_QUICK_FORMAT_MENU;//TONY070108
  1188. UiGoFormatProcess();
  1189. break;
  1190. #if(UI_USE_CLASS_LIST)
  1191. case UI_SYSTOOL_REFRESH_MENU: 
  1192. UiGoSysRefreshCdb(); //WHH070307#2
  1193. break;
  1194. #endif
  1195. }
  1196. }
  1197. case KEY_FUNC_BREAK:
  1198. case KEY_FUNC_LONG:
  1199. return;
  1200. }
  1201. }while(!(bKey&KEY_BREAK));//while(bKey==KEY_INVALID); // Walace051015
  1202. }
  1203. }
  1204. void UiGoSysMenu(void)
  1205. {
  1206. // UI_SHOW_MENU_TAG_STRING(cwStringSystemList[gxbUiMenuSubStates]);
  1207. //    UI_SHOW_MENU_TITLE_STRING(SYS_STR_MENU);
  1208.    
  1209.  // UiShowSubMenuNum(gxbUiMenuSubStates+1,UI_SYS_MENU_MAX_ITEM);
  1210. }
  1211. void UiSysMenuRedrawAll(void)
  1212. {
  1213. #if 0   //TONY070104
  1214. UiDrawSubMenu(SYS_STR_MENU);
  1215. UiShowSubMenuNum(gxbUiMenuSubStates+1,UI_SYS_MENU_MAX_ITEM);
  1216. StrShowSysString(cwStringSystemList[gxbUiMenuSubStates],LCD_AUTO_CENTER_COL,OLED_TAG_ROW);
  1217. #endif
  1218. //OledShowIconNew(1,IM_SETUP_BROWSER_BG,0,0);
  1219. UiShowLargeBackground(5,IM_BROWSER_BG_03_S1); //tne 2007/01/10 #2
  1220. gfTransparent =TRUE;
  1221. StrShowSysString(SYS_STR_SYSTEM_MODE, LCD_AUTO_CENTER_COL,(ITEM_START_ROW-18));
  1222. gfTransparent =FALSE;
  1223. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_MAX_ITEM);
  1224. UiShowNormalTitleInfo(); //tne 2007/01/10 #1
  1225. /*
  1226. UI_SHOW_BATTERY();
  1227. UiShowAlarmPic();
  1228. #if(SYS_USE_KEY_HOLD)
  1229. UiShowKeyHold(); //tne 2006/07/14 #1
  1230. #endif
  1231. UiShowStorageSts();
  1232. */
  1233. }
  1234. /*
  1235. void UiSysMenuRedrawAll(void)
  1236. {
  1237. UiDrawSubMenu(SYS_STR_MENU);
  1238. UiShowSubMenuNum(gxbUiMenuSubStates+1,UI_SYS_MENU_MAX_ITEM);
  1239. StrShowSysString(cwStringSystemList[gxbUiMenuSubStates],LCD_AUTO_CENTER_COL,OLED_TAG_ROW);
  1240. }
  1241. */
  1242. /*
  1243. API void UiGoNoMenu(void) large
  1244. {
  1245. gxbUiMenuMainStates=UI_SYS_MENU;
  1246. }
  1247. */
  1248. void UiGoSysAlarmMenu(void) large
  1249. {
  1250. BYTE bKey;
  1251. gxbUiMenuMainStates=UI_ALARM_MENU;
  1252. gxbUiMenuSubStates=UI_ALARM_SET_MENU;
  1253. #if(SYS_USE_KEY_HOLD)  
  1254. UiShowKeyHold();
  1255. #endif
  1256. UiShowStorageSts();
  1257. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_YESNO_MAX_ITEM) ;
  1258. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_MENU_TIME_ALARM);
  1259. while(1)
  1260. {
  1261. // UiShowSubMenuNum(gxbUiMenuSubStates+1,2);
  1262. // UI_SHOW_MENU_TAG_STRING(cwStringAlarmList[gxbUiMenuSubStates]);  
  1263. //fix by tne 2004/12/18 #1
  1264. UiShowAlarmPic();
  1265. ShowSetupItemUnSelect(cwStringAlarmList[!gxbUiMenuSubStates],(!gxbUiMenuSubStates));
  1266. ShowSetupItemSelect(cwStringAlarmList[gxbUiMenuSubStates],(gxbUiMenuSubStates));
  1267. do
  1268. {
  1269. #if(USE_SYS_STR_SCROLL)
  1270. SysStringScroll();
  1271. #endif
  1272. UiNormalCheck();
  1273. KeyGet(bKey);
  1274. UiCheckBackLight(bKey);
  1275. switch(bKey)
  1276. {
  1277. case KEY_LEFT_BREAK:
  1278. case KEY_LEFT_LONG_BREAK:
  1279. case KEY_RIGHT_BREAK:
  1280. case KEY_RIGHT_LONG_BREAK:
  1281. gxbUiMenuSubStates ^= 1;
  1282. break;
  1283. case KEY_UP_BREAK:
  1284. //case KEY_UP_LONG_BREAK:
  1285. switch(gxbUiMenuSubStates)
  1286. {
  1287. case UI_ALARM_SET_MENU:
  1288. UiSysSetAlarm();
  1289. gxbUiMenuSubStates=UI_ALARM_SET_MENU;
  1290. gxbUiMenuMainStates=UI_ALARM_MENU;
  1291. break;
  1292. case UI_ALARM_SWITCH_MENU:
  1293. UiAlarmSwitchMenu();
  1294. gxbUiMenuSubStates=UI_ALARM_SWITCH_MENU;
  1295. break;
  1296. }
  1297. // UiDrawSubMenu(cwStringSysTimeList[UI_TIME_ALARM_MENU]);
  1298. gxbUiMenuMainStates=UI_ALARM_MENU;
  1299. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_YESNO_MAX_ITEM) ;
  1300. UI_SHOW_MENU_TITLE_ITEM_STRING(cwStringSysTimeList[UI_TIME_ALARM_MENU])
  1301. break;
  1302. case KEY_FUNC_BREAK:
  1303. case KEY_FUNC_LONG:
  1304. return;
  1305. }
  1306. }while(!(bKey&KEY_BREAK));//while(bKey==KEY_INVALID); // Walace051015
  1307. }
  1308. }
  1309. //Tne050325
  1310. //*************TEST For S-Clock, **************
  1311. #if(0) //modify by Rojam 2007-03-28 16:55
  1312. void UiShowSecureTime(void) large
  1313. {
  1314. DWORD dwSTime;
  1315. BYTE bTimeEditLocate=UI_TIME_EDIT_HOUR_H,bKey;
  1316. dwSTime=(LONG)gxdwNowTime+gxdwSClockOffset;
  1317. OLED_CLEAR_ALL();
  1318. //OledShowIcon(ICON_COLON,23,44) ; //Icon Colon
  1319. //OledShowIcon(ICON_COLON,47,44) ; //Icon Colon
  1320. //OledShowIcon(ICON_SLASH68,41,28) ; //Icon Slash
  1321. //OledShowIcon(ICON_SLASH68,65,28) ; //Icon Slash
  1322. StrShowString(cbStringTwenty,SEG1,PAGE3,2);
  1323. UiSysGetNowTimeText(dwSTime);
  1324. UiShowSetTime(bTimeEditLocate);
  1325. do
  1326. {
  1327. UiNormalCheck();
  1328. KeyGet(bKey);
  1329. UiCheckBackLight(bKey);
  1330. for(dwSTime=0;dwSTime<1000;dwSTime++) {}; //delay for key
  1331. }while(bKey<KEY_BREAK); //key break or key long
  1332. }
  1333. #endif
  1334. void UiGoSysTimeMenu(void) large
  1335. {
  1336. BYTE bKey;
  1337. //UI_SHOW_MENU_TITLE_STRING(cwStringSystemList[gxbUiMenuSubStates]); //tne 2005/11/25 #1
  1338. gxbUiMenuMainStates=UI_TIME_MENU;
  1339. gxbUiMenuSubStates=UI_TIME_NOW_MENU;
  1340. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_TIME_MAX_ITEM);
  1341. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_MENU_SYS_TIME);
  1342.    
  1343. while(1)
  1344. {
  1345. //UiShowSubMenuNum(gxbUiMenuSubStates+1,3);
  1346.       // UI_SHOW_MENU_TAG_STRING(cwStringSysTimeList[gxbUiMenuSubStates]);
  1347. do
  1348. {
  1349. #if(USE_SYS_STR_SCROLL)
  1350. SysStringScroll();
  1351. #endif
  1352. UiNormalCheck();
  1353. KeyGet(bKey);
  1354. UiCheckBackLight(bKey);
  1355. switch(bKey)
  1356. {
  1357. case KEY_LEFT_BREAK:
  1358. if(gxbUiMenuSubStates>0)
  1359. {
  1360. gxbUiMenuSubStates--;
  1361. ShowSetupItemUnSelect(cwStringSysTimeList[gxbUiMenuSubStates+1],gxbUiMenuSubStates+1); 
  1362. }
  1363. else
  1364. {
  1365. gxbUiMenuSubStates=UI_TIME_ZONE_MENU;
  1366. ShowSetupItemUnSelect(cwStringSysTimeList[0],0); 
  1367. }
  1368. ShowSetupItemSelect( cwStringSysTimeList[gxbUiMenuSubStates],gxbUiMenuSubStates);
  1369. break;
  1370. case KEY_RIGHT_BREAK:
  1371. if(gxbUiMenuSubStates<UI_TIME_ZONE_MENU)
  1372. {
  1373. gxbUiMenuSubStates++;
  1374. ShowSetupItemUnSelect(cwStringSysTimeList[gxbUiMenuSubStates-1],gxbUiMenuSubStates-1); 
  1375. }
  1376. else
  1377. {
  1378. gxbUiMenuSubStates=0;
  1379. ShowSetupItemUnSelect(cwStringSysTimeList[UI_TIME_ZONE_MENU],UI_TIME_ZONE_MENU); 
  1380. }
  1381. ShowSetupItemSelect( cwStringSysTimeList[gxbUiMenuSubStates],gxbUiMenuSubStates);
  1382. break;
  1383. case KEY_UP_BREAK:
  1384. //UI_SHOW_MENU_TITLE_STRING(cwStringSysTimeList[gxbUiMenuSubStates]);
  1385. switch(gxbUiMenuSubStates)
  1386. {
  1387. case UI_TIME_NOW_MENU:
  1388. UiSysSetTime();
  1389. gxbUiMenuSubStates=UI_TIME_NOW_MENU;
  1390. break;
  1391. case UI_TIME_ALARM_MENU:
  1392. UiGoSysAlarmMenu();
  1393. gxbUiMenuSubStates=UI_TIME_ALARM_MENU;
  1394. break;
  1395. case UI_TIME_ZONE_MENU:
  1396. UiGoSysSetZoneMenu();
  1397. gxbUiMenuSubStates=UI_TIME_ZONE_MENU;
  1398. break;
  1399. }
  1400. gxbUiMenuMainStates=UI_TIME_MENU;
  1401. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_TIME_MAX_ITEM) ;
  1402. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_MENU_SYS_TIME);
  1403. break;
  1404. //***************************************************
  1405. //test for s-clock
  1406. /*
  1407. case KEY_REC_BREAK:
  1408. UiShowSecureTime();
  1409. UiDrawSubMenu(cwStringSystemList[gxbUiMenuMainStates]);
  1410. break;
  1411. */
  1412. //***************************************************
  1413. case KEY_FUNC_BREAK:
  1414. case KEY_FUNC_LONG:
  1415. return;
  1416. }
  1417. }while(!(bKey&KEY_BREAK));//while(bKey==KEY_INVALID); // Walace051015
  1418. }
  1419. }
  1420. void UiAlarmSwitchMenu(void) large
  1421. {
  1422. BYTE bKey;
  1423. //       UI_SHOW_MENU_TITLE_STRING(cwStringAlarmList[UI_ALARM_SWITCH_MENU]);
  1424. gxbUiMenuMainStates=UI_SWITCH_MENU;
  1425. obDCVARRD=0x03;
  1426. if(obDCVRDDATA&RTC_GET_ALARM_STS)
  1427. gxbUiMenuSubStates=UI_ALARM_ON_MENU;
  1428. else
  1429. gxbUiMenuSubStates=UI_ALARM_OFF_MENU;
  1430. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_YESNO_MAX_ITEM) ;
  1431. UI_SHOW_MENU_TITLE_ITEM_STRING(cwStringAlarmList[UI_ALARM_SWITCH_MENU])
  1432.    
  1433.   while(1)
  1434. {
  1435. // UiShowSubMenuNum(gxbUiMenuSubStates+1,UI_MENU_ONOFF_MAX_ITEM);
  1436. //        UI_SHOW_MENU_TAG_STRING(cwStringSwitchList[gxbUiMenuSubStates]);
  1437. ShowSetupItemUnSelect(cwStringSwitchList[!gxbUiMenuSubStates],(!gxbUiMenuSubStates));
  1438. ShowSetupItemSelect(cwStringSwitchList[gxbUiMenuSubStates],(gxbUiMenuSubStates));
  1439. do
  1440. {
  1441. #if(USE_SYS_STR_SCROLL)
  1442. SysStringScroll();
  1443. #endif
  1444. UiNormalCheck();
  1445. KeyGet(bKey);
  1446. UiCheckBackLight(bKey);
  1447. switch(bKey)
  1448. {
  1449. case KEY_LEFT_BREAK:
  1450. case KEY_RIGHT_BREAK:
  1451. gxbUiMenuSubStates ^= 1;
  1452. break;
  1453. case KEY_UP_BREAK:
  1454. obDCVARRD=0x03;
  1455. if(gxbUiMenuSubStates==UI_ALARM_ON_MENU)
  1456. {
  1457. obDCVWRDATA=(obDCVRDDATA|RTC_ALARM_EN);
  1458. obDCV_INT_MASK |= 0x08; //enable alarm mask
  1459. UiSysGetAlarmTime(); // alarm time may be illegal, reset it
  1460. UiSetNewAlarmTime();
  1461. }
  1462. else
  1463. {
  1464. obDCVWRDATA=(obDCVRDDATA&RTC_ALARM_DIS);
  1465. obDCV_INT_MASK &= 0xF7; //disable alarm mask
  1466. }
  1467. case KEY_FUNC_BREAK:
  1468. return;
  1469. }
  1470. }while(!(bKey&KEY_BREAK));//while(bKey==KEY_INVALID); // Walace051015
  1471. }
  1472. }
  1473. void UiSetNowTime(void) large
  1474. {
  1475. BYTE bI;
  1476. EA=0; //disable interrupt
  1477. obDCVARRD=0x03;
  1478. obDCVWRDATA=(obDCVRDDATA&RTC_COUNTER_DIS); //disable timer counter
  1479. for(bI=0;bI<4;bI++)
  1480. {
  1481. obDCVARRD=bI+0x15;
  1482. obDCVWRDATA=(gxdwNowTime>>(bI<<3));
  1483. }
  1484. obDCVARRD=0x03;
  1485. obDCVWRDATA=(obDCVRDDATA|RTC_COUNTER_EN); //enable timer counter
  1486. gfRtcUpdate=TRUE;
  1487. EA=1;
  1488. }
  1489. //add by tne for s-clock
  1490. void UiGoSysSetZoneMenu(void) large
  1491. {
  1492. BYTE bGmtTime[3],bEditTimeZone,bKey;
  1493. DWORD dwTimeOffset;
  1494. Start_Set_Zone:
  1495. // OLED_CLEAR_ALL();
  1496. // OledShowIcon(ICON_LAB_SETUP,SEG0,PAGE0) ; //Icon Setup
  1497. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW+ITEM_ROW_OFF);//TONY070105
  1498. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_MENU_TIME_ZONE);
  1499. // UiShowAlarmPic(); //TONY070308
  1500. #if(SYS_USE_KEY_HOLD) //Nick061120 //NandRestore
  1501. UiShowKeyHold(); //tne 2006/07/14 #1
  1502. #endif
  1503. UiShowStorageSts();
  1504. // UI_SHOW_MENU_TITLE_STRING(SYS_STR_SMP_TITLE_TIMEZONE); //tne 2005/11/25 #1
  1505. //StrShowSysString(cwStringSysTimeList[UI_TIME_ZONE_MENU],SEG2,PAGE0);
  1506. StrShowString(cbStringGMT,16+ITEM_START_COL,32+ITEM_START_ROW,3);
  1507. UI_SHOW_BATTERY();
  1508. bEditTimeZone=gxbTimeZone;
  1509. while(1)
  1510. {
  1511. if(bEditTimeZone<12)
  1512. {
  1513. bGmtTime[0]='-';
  1514. bGmtTime[1]=(12-bEditTimeZone)/10+0x30;
  1515. bGmtTime[2]=(12-bEditTimeZone)%10+0x30;
  1516. }
  1517. else
  1518. {
  1519. bGmtTime[0]='+';
  1520. bGmtTime[1]=(bEditTimeZone-12)/10+0x30;
  1521. bGmtTime[2]=(bEditTimeZone-12)%10+0x30;
  1522. }
  1523. UI_STR_REVERSE( ); // WHH 070129
  1524. StrShowString(bGmtTime,48+ITEM_START_COL,32+ITEM_START_ROW,3);
  1525. UI_STR_UNREVERSE( ); // WHH 070129
  1526. //OledReverse(48+ITEM_START_COL,32+ITEM_START_ROW,24,16); // WHH 070129
  1527. do
  1528. {
  1529. UiNormalCheck();
  1530. KeyGet(bKey);
  1531. UiCheckBackLight(bKey);
  1532. switch(bKey)
  1533. {
  1534. //case KEY_VOL_DOWN_LONG:
  1535. //case KEY_VOL_DOWN_BREAK:
  1536. //case KEY_LEFT_LONG: // WHH 070125 #3
  1537. case KEY_LEFT_BREAK:
  1538. if(bEditTimeZone>0)
  1539. bEditTimeZone--;
  1540. else
  1541. bEditTimeZone=24;
  1542. break;
  1543. //case KEY_VOL_UP_LONG:
  1544. //case KEY_VOL_UP_BREAK:
  1545. //case KEY_RIGHT_LONG: // WHH 070125 #3
  1546. case KEY_RIGHT_BREAK:
  1547. if(bEditTimeZone<24)
  1548. bEditTimeZone++;
  1549. else
  1550. bEditTimeZone=0;
  1551. break;
  1552. case KEY_UP_BREAK:
  1553. if(bEditTimeZone>gxbTimeZone)
  1554. {
  1555. dwTimeOffset=(LONG)(bEditTimeZone-gxbTimeZone)*3600;
  1556. gxdwSClockOffset -= dwTimeOffset;
  1557. gxdwNowTime += dwTimeOffset;
  1558. UiSysGetAlarmTime();
  1559. gxdwAlarmTime += dwTimeOffset;
  1560. }
  1561. else
  1562. {
  1563. dwTimeOffset=(LONG)(gxbTimeZone-bEditTimeZone)*3600;
  1564. if(gxdwNowTime<dwTimeOffset) //overflow, modify faile
  1565. {
  1566. //OLED_CLEAR_ALL();
  1567. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW+ITEM_ROW_OFF);//TONY070105
  1568. gxbLcdCounter=0;
  1569. StrShowSysString(SYS_STR_OVER_RANGE,LCD_AUTO_CENTER_COL,OLED_TAG_ROW+ITEM_START_ROW);
  1570. while(gxbLcdCounter<UI_SHW_RANGE_ERR_DELAY_TIME) { };
  1571. goto Start_Set_Zone;
  1572. }
  1573. gxdwSClockOffset += dwTimeOffset;
  1574. gxdwNowTime -= dwTimeOffset;
  1575. gxdwAlarmTime -= dwTimeOffset;
  1576. }
  1577. gxbTimeZone=bEditTimeZone;
  1578. UiSetNowTime();
  1579. // fix alarm time
  1580. UiSetNewAlarmTime();
  1581. //SramWrite(SRAM_TIME_ZONE,&gxbTimeZone);//mark by tne 2005/05/17
  1582. case KEY_FUNC_BREAK:
  1583. case KEY_FUNC_LONG:
  1584. return;
  1585. }
  1586. //}while(!(bKey&KEY_BREAK));//while(bKey==KEY_INVALID); // Walace051015
  1587.                  // }while(bKey<KEY_BREAK);  //Walace060901#2
  1588.                   }while((bKey<KEY_BREAK)||(bKey==KEY_LEFT_LONG)||(bKey==KEY_RIGHT_LONG));  //WHH 070129
  1589. }
  1590. }
  1591. void UiTurnTimeText(DWORD *dwSetTime) large
  1592. {
  1593. BYTE bHour,bMin,bSec;
  1594. DWORD dwCountNum;
  1595. if(gxbEditTimeAmPm==UI_TIME_AM)
  1596. {
  1597. if((gxbStringEditTime[0]=='1')&&(gxbStringEditTime[1]=='2'))
  1598. bHour=0;
  1599. else
  1600. bHour=(gxbStringEditTime[0]-0x30)*10+(gxbStringEditTime[1]-0x30);
  1601. }
  1602. else
  1603. {
  1604. if((gxbStringEditTime[0]=='1')&&(gxbStringEditTime[1]=='2'))
  1605. bHour=12;
  1606. else
  1607. bHour=(gxbStringEditTime[0]-0x30)*10+(gxbStringEditTime[1]-0x30)+12;
  1608. }
  1609. bMin=(gxbStringEditTime[2]-0x30)*10+gxbStringEditTime[3]-0x30;
  1610. bSec=(gxbStringEditTime[4]-0x30)*10+gxbStringEditTime[5]-0x30;
  1611. *dwSetTime=(DWORD)bHour*3600+(DWORD)bMin*60+(DWORD)bSec;
  1612. //for count date
  1613. bHour=(gxbStringEditDate[0]-0x30)*10+gxbStringEditDate[1]-0x30-4; // how many years over 2004
  1614. dwCountNum=(DWORD)(bHour>>2)*1461; // year turn to day
  1615. bMin=(bHour%4);
  1616. if(bMin!=0) // not first year in 4 years
  1617. dwCountNum += 366+(bMin-1)*365;
  1618. bMin=(gxbStringEditDate[2]-0x30)*10+gxbStringEditDate[3]-0x30;
  1619. switch(bMin) // turn month to day
  1620. {
  1621. case 12:
  1622. dwCountNum += 30;
  1623. case 11:
  1624. dwCountNum += 31;
  1625. case 10:
  1626. dwCountNum += 30;
  1627. case 9:
  1628. dwCountNum += 31;
  1629. case 8:
  1630. dwCountNum += 31;
  1631. case 7:
  1632. dwCountNum += 30;
  1633. case 6:
  1634. dwCountNum += 31;
  1635. case 5:
  1636. dwCountNum += 30;
  1637. case 4:
  1638. dwCountNum += 31;
  1639. case 3:
  1640. if((bHour%4)==0) // this year have 366 days
  1641. dwCountNum += 29;
  1642. else
  1643. dwCountNum += 28;
  1644. case 2:
  1645. dwCountNum += 31;
  1646. }
  1647. bSec=(gxbStringEditDate[4]-0x30)*10+gxbStringEditDate[5]-0x30;
  1648. dwCountNum += bSec - 1; // add day and turn to zero base
  1649. dwCountNum = dwCountNum*86400; // turn day to sec
  1650. *dwSetTime += dwCountNum;
  1651. }
  1652. void UiShowSetTime(BYTE bTimeEditLocate) large
  1653. {
  1654. #if(USE_SYS_STR_UNICODE)
  1655. gxfSourceUnicode=STRING_TYPE_ASCII;
  1656. #endif
  1657. // WHH 070129
  1658. // StrShowString(gxbStringEditTime ,36, ITEM_START_ROW+ITEM_ROW_OFF*2+2,2);
  1659. // StrShowString(gxbStringEditTime+2,61,ITEM_START_ROW+ITEM_ROW_OFF*2+2,2);
  1660. // WHH 070129(start)
  1661. if(bTimeEditLocate==UI_TIME_EDIT_HOUR_H) UI_STR_REVERSE();  
  1662. StrShowString(gxbStringEditTime ,16, ITEM_START_ROW+ITEM_ROW_OFF*2+2,1);
  1663. if(bTimeEditLocate==UI_TIME_EDIT_HOUR_H) UI_STR_UNREVERSE();
  1664. if(bTimeEditLocate==UI_TIME_EDIT_HOUR_L) UI_STR_REVERSE();  
  1665. StrShowString(gxbStringEditTime+1 ,24, ITEM_START_ROW+ITEM_ROW_OFF*2+2,1);
  1666. if(bTimeEditLocate==UI_TIME_EDIT_HOUR_L) UI_STR_UNREVERSE();
  1667. if(bTimeEditLocate==UI_TIME_EDIT_MIN_H) UI_STR_REVERSE();  
  1668. StrShowString(gxbStringEditTime+2 ,41, ITEM_START_ROW+ITEM_ROW_OFF*2+2,1);
  1669. if(bTimeEditLocate==UI_TIME_EDIT_MIN_H) UI_STR_UNREVERSE();  
  1670. if(bTimeEditLocate==UI_TIME_EDIT_MIN_L) UI_STR_REVERSE();  
  1671. StrShowString(gxbStringEditTime+3 ,49, ITEM_START_ROW+ITEM_ROW_OFF*2+2,1);
  1672. if(bTimeEditLocate==UI_TIME_EDIT_MIN_L) UI_STR_UNREVERSE();  
  1673. // WHH 070129(end)
  1674. if(bTimeEditLocate==UI_TIME_EDIT_SEC) UI_STR_REVERSE();  // WHH 070129
  1675. StrShowString(gxbStringEditTime+4,66,ITEM_START_ROW+ITEM_ROW_OFF*2+2,2);
  1676. if(bTimeEditLocate==UI_TIME_EDIT_SEC) UI_STR_UNREVERSE();  // WHH 070129
  1677. if(bTimeEditLocate==UI_TIME_EDIT_YEAR) UI_STR_REVERSE();  // WHH 070129
  1678. StrShowString(gxbStringEditDate ,32,ITEM_START_ROW+ITEM_ROW_OFF+2,2);
  1679. if(bTimeEditLocate==UI_TIME_EDIT_YEAR) UI_STR_UNREVERSE();  // WHH 070129
  1680. if(bTimeEditLocate==UI_TIME_EDIT_MONTH) UI_STR_REVERSE();  // WHH 070129
  1681. StrShowString(gxbStringEditDate+2,60,ITEM_START_ROW+ITEM_ROW_OFF+2,2);
  1682. if(bTimeEditLocate==UI_TIME_EDIT_MONTH) UI_STR_UNREVERSE();  // WHH 070129
  1683. if(bTimeEditLocate==UI_TIME_EDIT_DAY) UI_STR_REVERSE();  // WHH 070129
  1684. StrShowString(gxbStringEditDate+4,91,ITEM_START_ROW+ITEM_ROW_OFF+2,2);
  1685. if(bTimeEditLocate==UI_TIME_EDIT_DAY) UI_STR_UNREVERSE();  // WHH 070129
  1686. if(bTimeEditLocate==UI_TIME_EDIT_AMPM) UI_STR_REVERSE();  // WHH 070129
  1687. if(gxbEditTimeAmPm==UI_TIME_AM)
  1688. StrShowString(cbStringAM,91,ITEM_START_ROW+ITEM_ROW_OFF*2+2,sizeof_cbStringAM);
  1689. else
  1690. StrShowString(cbStringPM,91,ITEM_START_ROW+ITEM_ROW_OFF*2+2,sizeof_cbStringPM);
  1691. if(bTimeEditLocate==UI_TIME_EDIT_AMPM) UI_STR_UNREVERSE();  // WHH 070129
  1692. #if(USE_SYS_STR_UNICODE)
  1693. gxfSourceUnicode=STRING_TYPE_UNICODE;
  1694. #endif
  1695. UiShowTimeEditCursor(bTimeEditLocate);
  1696. }
  1697. void UiShowAlarmTime(BYTE bTimeEditLocate) large
  1698. {
  1699. #if(USE_SYS_STR_UNICODE)
  1700. gxfSourceUnicode=STRING_TYPE_ASCII;
  1701. #endif
  1702. StrShowString(gxbStringEditTime,16,ITEM_START_ROW+ITEM_ROW_OFF+2,2);
  1703. StrShowString(gxbStringEditTime+2,41,ITEM_START_ROW+ITEM_ROW_OFF+2,2);
  1704. //StrShowString(gxbStringEditTime+4  ,86,ITEM_START_ROW+ITEM_ROW_OFF+2,2);
  1705. if(gxbEditTimeAmPm==UI_TIME_AM)
  1706. StrShowString(cbStringAM,91,ITEM_START_ROW+ITEM_ROW_OFF+2,sizeof_cbStringAM);
  1707. else
  1708. StrShowString(cbStringPM,91,ITEM_START_ROW+ITEM_ROW_OFF+2,sizeof_cbStringPM);
  1709. #if(USE_SYS_STR_UNICODE)
  1710. gxfSourceUnicode=STRING_TYPE_UNICODE;
  1711. #endif
  1712. UiShowAlarmEditCursor(bTimeEditLocate);
  1713. }
  1714. void UiSysSetAlarm(void) large
  1715. {
  1716. BYTE bTimeEditLocate=UI_TIME_EDIT_HOUR_H,bKey;
  1717. // OLED_CLEAR_ALL();
  1718. // OledShowIcon(ICON_LAB_SETUP,SEG0,PAGE0) ; //Icon Setup
  1719. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW);
  1720. UiShowAlarmPic();
  1721. #if(SYS_USE_KEY_HOLD) //Nick061120 //NandRestore
  1722. UiShowKeyHold(); //tne 2006/07/14 #1
  1723. #endif
  1724. UiShowStorageSts();
  1725. // StrShowSysString(cwStringAlarmList[UI_ALARM_SET_MENU],SEG2+ITEM_START_COL,PAGE0+ITEM_START_ROW);
  1726. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_MENU_TIME_ADJUST);
  1727. //OledShowIcon(ICON_COLON,35+ITEM_START_COL,36+ITEM_START_ROW) ; //Icon Colon
  1728. UI_SHOW_BATTERY();
  1729. UiSysGetAlarmTime();
  1730. OledShowIconNew(2,IM_EDIT_ALARM,0,ITEM_START_ROW+ITEM_ROW_OFF);
  1731. UiSysGetNowTimeText(gxdwAlarmTime);
  1732. while(1)
  1733. {
  1734. UiShowAlarmTime(bTimeEditLocate);
  1735. do
  1736. {
  1737. UiNormalCheck();
  1738. KeyGet(bKey);
  1739. UiCheckBackLight(bKey);
  1740. switch(bKey)
  1741. {
  1742. case KEY_LEFT_BREAK:
  1743. if(gxbSetFlag)
  1744. {
  1745. if(bTimeEditLocate==UI_ALARM_EDIT_AMPM)
  1746. gxbEditTimeAmPm ^= 1;
  1747. else
  1748. UiTimeEditDown(bTimeEditLocate);
  1749. UiShowAlarmTime(bTimeEditLocate);//Tne060828#1
  1750. break;
  1751. }
  1752. else
  1753. {
  1754. if(bTimeEditLocate>UI_ALARM_EDIT_HOUR_H)
  1755. bTimeEditLocate--;
  1756. else
  1757. bTimeEditLocate=UI_ALARM_EDIT_AMPM;
  1758. }
  1759. break;
  1760. case KEY_RIGHT_BREAK:
  1761. if(gxbSetFlag)
  1762. {
  1763. if(bTimeEditLocate==UI_ALARM_EDIT_AMPM)
  1764. gxbEditTimeAmPm ^= 1;
  1765. else
  1766. UiTimeEditUp(bTimeEditLocate);
  1767. }
  1768. else
  1769. {
  1770. if(bTimeEditLocate<UI_ALARM_EDIT_AMPM)
  1771. bTimeEditLocate++;
  1772. else
  1773. bTimeEditLocate=UI_ALARM_EDIT_HOUR_H;
  1774. }
  1775. break;
  1776. /* //test now, please check it...
  1777. case KEY_VOL_LONG:
  1778. case KEY_VOL_BREAK: //Walace051107#1
  1779. if(bTimeEditLocate==UI_ALARM_EDIT_AMPM)
  1780. gxbEditTimeAmPm ^= 1;
  1781. else
  1782. UiTimeEditUp(bTimeEditLocate);
  1783. UiShowAlarmTime(bTimeEditLocate);//Tne060828#1
  1784. break;
  1785. case KEY_VOL_DOWN_LONG:
  1786. case KEY_VOL_DOWN_BREAK: //Walace051107#1
  1787. if(bTimeEditLocate==UI_ALARM_EDIT_AMPM)
  1788. gxbEditTimeAmPm ^= 1;
  1789. else
  1790. UiTimeEditDown(bTimeEditLocate);
  1791. UiShowAlarmTime(bTimeEditLocate);//Tne060828#1
  1792. break;
  1793. */
  1794. case KEY_UP_BREAK:
  1795. if(gxbSetFlag)
  1796. gxbSetFlag = FALSE;
  1797. else
  1798. gxbSetFlag = TRUE;
  1799. // gxbStringEditTime[4]='0';
  1800. // gxbStringEditTime[5]='0';
  1801. UiTurnTimeText(&gxdwAlarmTime);
  1802. UiSetNewAlarmTime();
  1803. break;
  1804. case KEY_FUNC_BREAK:  
  1805. return;
  1806. }
  1807. }while((bKey&KEY_BREAK)==KEY_INVALID);
  1808. }
  1809. }
  1810. void UiSysSetTime(void) large //Tne050325
  1811. {
  1812. BYTE bTimeEditLocate=UI_TIME_EDIT_HOUR_H,bKey;
  1813. DWORD dwNewTime;
  1814.        //OLED_CLEAR_ALL();
  1815.    
  1816. OledShowIconNew(1,IM_SETUP_BG,0,ITEM_START_ROW);//TONY070105
  1817. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_MENU_TIME_ADJUST);
  1818. // UiShowAlarmPic(); //TONY070308
  1819. #if(SYS_USE_KEY_HOLD)  //Nick061120 //NandRestore
  1820. UiShowKeyHold(); //tne 2006/07/14 #1
  1821. #endif
  1822. UiShowStorageSts();
  1823.         //StrShowSysString(cwStringSysTimeList[gxbUiMenuSubStates],SEG2,PAGE0);
  1824. //OledShowIcon(ICON_COLON,23,44) ; //Icon Colon
  1825. //OledShowIcon(ICON_COLON,47,44) ; //Icon Colon
  1826. //OledShowIcon(ICON_COLON,23+ITEM_START_COL,44+ITEM_START_ROW) ; //Icon Colon
  1827. //OledShowIcon(ICON_COLON,47+ITEM_START_COL,44+ITEM_START_ROW) ; //Icon Colon
  1828. //OledShowIcon(ICON_SLASH68,41+ITEM_START_COL,28+ITEM_START_ROW) ; //Icon Slash
  1829. //OledShowIcon(ICON_SLASH68,65+ITEM_START_COL,28+ITEM_START_ROW) ; //Icon Slash
  1830. #if(USE_SYS_STR_UNICODE)
  1831. gxfSourceUnicode=STRING_TYPE_ASCII;
  1832. #endif
  1833. //StrShowString(cbStringTwenty,8,24,2);
  1834. #if(USE_SYS_STR_UNICODE)
  1835. gxfSourceUnicode=STRING_TYPE_UNICODE;
  1836. #endif
  1837. UI_SHOW_BATTERY();
  1838. OledShowIconNew(2,IM_YEAR,0,ITEM_START_ROW+ITEM_ROW_OFF);
  1839. OledShowIconNew(2,IM_TIME,0,ITEM_START_ROW+ITEM_ROW_OFF*2);
  1840. StrShowString(cbStringTwenty,16,ITEM_START_ROW+ITEM_ROW_OFF+2,2);
  1841. //set a different time to display time
  1842. gxdwLastNowTime=gxdwNowTime+1; //tne 2006/07/13 #1
  1843. while(1)
  1844. {
  1845. do
  1846. {
  1847. if(gxdwLastNowTime!=gxdwNowTime)
  1848. {
  1849. // if(gxbLcdCounter>=UI_SETTIME_DELAY_TIME)
  1850. {
  1851. UiSysGetNowTimeText(gxdwNowTime);
  1852. UiShowSetTime(bTimeEditLocate);
  1853. gxdwLastNowTime=gxdwNowTime;
  1854. //gxbLcdCounter=UI_SETTIME_DELAY_TIME;
  1855. }
  1856. }
  1857. UiNormalCheck();
  1858. KeyGet(bKey);
  1859. UiCheckBackLight(bKey);
  1860. switch(bKey)
  1861. {
  1862. case KEY_LEFT_BREAK:
  1863. if( gxbSetFlag )
  1864. {
  1865. obDCV_INT_MASK &= RTC_COUNTER_DIS;
  1866. UiTimeEditDown(bTimeEditLocate);
  1867. //modify by tne for s-clock
  1868. UiTurnTimeText(&dwNewTime);
  1869. gxdwSClockOffset += (LONG)(gxdwNowTime - dwNewTime);
  1870. WriteSClockToSram();
  1871. gxdwNowTime=dwNewTime;
  1872. UiSetNowTime();
  1873. //gxbLcdCounter=0;
  1874. gxdwLastNowTime=gxdwNowTime;
  1875. obDCV_INT_MASK |= RTC_COUNTER_EN;
  1876. }
  1877. else
  1878. {
  1879. if(bTimeEditLocate>UI_TIME_EDIT_HOUR_H)
  1880. bTimeEditLocate--;
  1881. else
  1882. bTimeEditLocate=UI_TIME_EDIT_DAY;
  1883. }
  1884. break;
  1885. case KEY_RIGHT_BREAK:
  1886. if( gxbSetFlag )
  1887. {
  1888. obDCV_INT_MASK &= RTC_COUNTER_DIS;
  1889. UiTimeEditUp(bTimeEditLocate);
  1890. //modify by tne for s-clock
  1891. UiTurnTimeText(&dwNewTime);
  1892. gxdwSClockOffset += (LONG)(gxdwNowTime - dwNewTime);
  1893. WriteSClockToSram();
  1894. gxdwNowTime=dwNewTime;
  1895. UiSetNowTime();
  1896. //gxbLcdCounter=0;
  1897. gxdwLastNowTime=gxdwNowTime;
  1898. obDCV_INT_MASK |= RTC_COUNTER_EN;
  1899. }
  1900. else
  1901. {
  1902. if(bTimeEditLocate<UI_TIME_EDIT_DAY)
  1903. bTimeEditLocate++;
  1904. else
  1905. bTimeEditLocate=UI_TIME_EDIT_HOUR_H;
  1906. }
  1907. break;
  1908. //test now, please check it...
  1909. /*case KEY_VOL_LONG:
  1910. case KEY_VOL_BREAK:
  1911. obDCV_INT_MASK &= RTC_COUNTER_DIS;
  1912. UiTimeEditUp(bTimeEditLocate);
  1913. //modify by tne for s-clock
  1914. UiTurnTimeText(&dwNewTime);
  1915. gxdwSClockOffset += (LONG)(gxdwNowTime - dwNewTime);
  1916. WriteSClockToSram();
  1917. gxdwNowTime=dwNewTime;
  1918. UiSetNowTime();
  1919. //gxbLcdCounter=0;
  1920. gxdwLastNowTime=gxdwNowTime;
  1921. obDCV_INT_MASK |= RTC_COUNTER_EN;
  1922. break;
  1923. case KEY_VOL_DOWN_LONG:
  1924. case KEY_VOL_DOWN_BREAK:
  1925. obDCV_INT_MASK &= RTC_COUNTER_DIS;
  1926. UiTimeEditDown(bTimeEditLocate);
  1927. //modify by tne for s-clock
  1928. UiTurnTimeText(&dwNewTime);
  1929. gxdwSClockOffset += (LONG)(gxdwNowTime - dwNewTime);
  1930. WriteSClockToSram();
  1931. gxdwNowTime=dwNewTime;
  1932. UiSetNowTime();
  1933. //gxbLcdCounter=0;
  1934. gxdwLastNowTime=gxdwNowTime;
  1935. obDCV_INT_MASK |= RTC_COUNTER_EN;
  1936. break;
  1937. */
  1938. //case KEY_FUNC_BREAK:
  1939. case KEY_UP_BREAK:
  1940. //disable timer counter update
  1941. //obDCVARRD=0x03;
  1942. //obDCVWRDATA=(obDCVRDDATA&RTC_UPDATE_DIS);
  1943. //obDCV_INT_MASK &= RTC_COUNTER_DIS;
  1944. if(gxbSetFlag)
  1945. {
  1946. gxbSetFlag=FALSE;
  1947. }
  1948. else
  1949. {
  1950. gxbSetFlag=TRUE;
  1951. }
  1952. UiSysGetAlarmTime(); // fix alarm time
  1953. UiSetNewAlarmTime();
  1954. break;
  1955. case KEY_FUNC_BREAK:
  1956. case KEY_FUNC_LONG:
  1957. return;
  1958. }
  1959. // }while((bKey&KEY_BREAK)==KEY_INVALID);
  1960. }while(bKey<KEY_BREAK); //key break or key long
  1961. UiShowSetTime(bTimeEditLocate);
  1962. }
  1963. }
  1964. // fFixTo01: when edit up, let illegal day fix to 01
  1965. // ex. now is 06/30, user in date and hit vol up key
  1966. // it should fix to 06/01, in this case, set this flag TRUE
  1967. // ex. now is 05/31, use in month and hit vol up key to June
  1968. // it should fix to 06/30, in this case, set this flag FALSE
  1969. void UiCheckMonthDay(bit fFixTo01) large
  1970. {
  1971. BYTE bMonth,bDay;
  1972. bMonth=(gxbStringEditDate[2]-0x30)*10+gxbStringEditDate[3]-0x30; //get the month
  1973. bDay=(gxbStringEditDate[4]-0x30)*10+gxbStringEditDate[5]-0x30; //get the day
  1974. switch(bMonth)
  1975. {
  1976. case 1:
  1977. case 3:
  1978. case 5:
  1979. case 7:
  1980. case 8:
  1981. case 10:
  1982. case 12:
  1983. if(bDay>31)
  1984. {
  1985. gxbStringEditDate[4]='0';
  1986. gxbStringEditDate[5]='1';
  1987. }
  1988. else if(bDay==0)
  1989. {
  1990. gxbStringEditDate[4]='3';
  1991. gxbStringEditDate[5]='1';
  1992. return;
  1993. }
  1994. break;
  1995. case 2:
  1996. bMonth=(gxbStringEditDate[0]-0x30)*10+gxbStringEditDate[1]-0x30; //get the year
  1997. if((bMonth%4)==0) // this year is 29
  1998. {
  1999. if(bDay>29)
  2000. {
  2001. if(fFixTo01)
  2002. {
  2003. gxbStringEditDate[4]='0';
  2004. gxbStringEditDate[5]='1';
  2005. }
  2006. else
  2007. {
  2008. gxbStringEditDate[4]='2';
  2009. gxbStringEditDate[5]='9';
  2010. }
  2011. }
  2012. else if(bDay==0)
  2013. {
  2014. gxbStringEditDate[4]='2';
  2015. gxbStringEditDate[5]='9';
  2016. return;
  2017. }
  2018. }
  2019. else
  2020. {
  2021. if(bDay>28)
  2022. {
  2023. if(fFixTo01)
  2024. {
  2025. gxbStringEditDate[4]='0';
  2026. gxbStringEditDate[5]='1';
  2027. }
  2028. else
  2029. {
  2030. gxbStringEditDate[4]='2';
  2031. gxbStringEditDate[5]='8';
  2032. }
  2033. }
  2034. else if(bDay==0)
  2035. {
  2036. gxbStringEditDate[4]='2';
  2037. gxbStringEditDate[5]='8';
  2038. return;
  2039. }
  2040. }
  2041. break;
  2042. default:
  2043. if(bDay>30)
  2044. {
  2045. if(fFixTo01)
  2046. {
  2047. gxbStringEditDate[4]='0';
  2048. gxbStringEditDate[5]='1';
  2049. }
  2050. else
  2051. {
  2052. gxbStringEditDate[4]='3';
  2053. gxbStringEditDate[5]='0';
  2054. }
  2055. }
  2056. else if(bDay==0)
  2057. {
  2058. gxbStringEditDate[4]='3';
  2059. gxbStringEditDate[5]='0';
  2060. return;
  2061. }
  2062. break;
  2063. }
  2064. }
  2065. void UiTimeEditUp(BYTE bTimeEditLocate) large //Tne050325
  2066. {
  2067. switch(bTimeEditLocate)
  2068. {
  2069. case UI_TIME_EDIT_HOUR_H:
  2070. if(gxbStringEditTime[UI_TIME_EDIT_HOUR_H]=='1')
  2071. return;
  2072. else if(gxbStringEditTime[UI_TIME_EDIT_HOUR_L]>'2')
  2073. gxbStringEditTime[UI_TIME_EDIT_HOUR_L]='2';
  2074. break;
  2075. case UI_TIME_EDIT_HOUR_L:
  2076. if(gxbStringEditTime[UI_TIME_EDIT_HOUR_H]=='1')
  2077. {
  2078. if(gxbStringEditTime[UI_TIME_EDIT_HOUR_L]=='2')
  2079. {
  2080. gxbStringEditTime[UI_TIME_EDIT_HOUR_H]='0';
  2081. gxbStringEditTime[UI_TIME_EDIT_HOUR_L]='1';
  2082. return;
  2083. }
  2084. }
  2085. else
  2086. {
  2087. if(gxbStringEditTime[UI_TIME_EDIT_HOUR_L]=='9')
  2088. {
  2089. gxbStringEditTime[UI_TIME_EDIT_HOUR_H]='1';
  2090. gxbStringEditTime[UI_TIME_EDIT_HOUR_L]='0';
  2091. return;
  2092. }
  2093. }
  2094. break;
  2095. case UI_TIME_EDIT_MIN_H:
  2096. if(gxbStringEditTime[UI_TIME_EDIT_MIN_H]=='5') return;
  2097. break;
  2098. case UI_TIME_EDIT_MIN_L:
  2099. if(gxbStringEditTime[UI_TIME_EDIT_MIN_L]=='9')
  2100. {
  2101. gxbStringEditTime[UI_TIME_EDIT_MIN_L]='0';
  2102. if(gxbStringEditTime[UI_TIME_EDIT_MIN_H]=='5')
  2103. gxbStringEditTime[UI_TIME_EDIT_MIN_H]='0';
  2104. else
  2105. gxbStringEditTime[UI_TIME_EDIT_MIN_H]++;
  2106. return;
  2107. }
  2108. break;
  2109. case UI_TIME_EDIT_SEC:
  2110. gxbStringEditTime[UI_TIME_EDIT_SEC]='0';
  2111. gxbStringEditTime[UI_TIME_EDIT_SEC+1]='0';
  2112. return;
  2113. case UI_TIME_EDIT_AMPM:
  2114. gxbEditTimeAmPm ^= 1;
  2115. return;
  2116. case UI_TIME_EDIT_YEAR:
  2117. //modify by tne for s-clock
  2118. if(gxbStringEditDate[1]=='9')
  2119. {
  2120. if(gxbStringEditDate[0]=='5')
  2121. {
  2122. gxbStringEditDate[0]='0';
  2123. gxbStringEditDate[1]='4'; // go to 2004
  2124. }
  2125. else
  2126. {
  2127. gxbStringEditDate[0]++;
  2128. gxbStringEditDate[1]='0';
  2129. }
  2130. }
  2131. else
  2132. { gxbStringEditDate[1]++; }
  2133. /*
  2134. if(gxbStringEditDate[1]=='9')
  2135. {
  2136. if(gxbStringEditDate[0]=='9')
  2137. {
  2138. gxbStringEditDate[0]='0';
  2139. gxbStringEditDate[1]='4'; // go to 2004
  2140. }
  2141. else
  2142. {
  2143. gxbStringEditDate[0]++;
  2144. gxbStringEditDate[1]='0';
  2145. }
  2146. }
  2147. else
  2148. { gxbStringEditDate[1]++; }
  2149. */
  2150. UiCheckMonthDay(FALSE);
  2151. return;
  2152. case UI_TIME_EDIT_MONTH:
  2153. if((gxbStringEditDate[2]=='1')&&(gxbStringEditDate[3]=='2'))
  2154. {
  2155. gxbStringEditDate[2]='0';
  2156. gxbStringEditDate[3]='1';
  2157. }
  2158. else if(gxbStringEditDate[3]=='9')
  2159. {
  2160. gxbStringEditDate[2]='1';
  2161. gxbStringEditDate[3]='0';
  2162. }
  2163. else
  2164. { gxbStringEditDate[3]++; }
  2165. UiCheckMonthDay(FALSE);
  2166. return;
  2167. case UI_TIME_EDIT_DAY:
  2168. if(gxbStringEditDate[5]=='9')
  2169. {
  2170. gxbStringEditDate[4]++;
  2171. gxbStringEditDate[5]='0';
  2172. }
  2173. else
  2174. {
  2175. gxbStringEditDate[5]++;
  2176. }
  2177. UiCheckMonthDay(TRUE);
  2178. return;
  2179. }
  2180. gxbStringEditTime[bTimeEditLocate]++;
  2181. }
  2182. void UiTimeEditDown(BYTE bTimeEditLocate) large //Tne050325
  2183. {
  2184. switch(bTimeEditLocate)
  2185. {
  2186. case UI_TIME_EDIT_HOUR_H:
  2187. if(gxbStringEditTime[UI_TIME_EDIT_HOUR_H]=='0')
  2188. return;
  2189. else if(gxbStringEditTime[UI_TIME_EDIT_HOUR_L]=='0')
  2190. gxbStringEditTime[UI_TIME_EDIT_HOUR_L]='1';
  2191. break;
  2192. case UI_TIME_EDIT_HOUR_L:
  2193. if(gxbStringEditTime[UI_TIME_EDIT_HOUR_H]=='1')
  2194. {
  2195. if(gxbStringEditTime[UI_TIME_EDIT_HOUR_L]=='0')
  2196. {
  2197. gxbStringEditTime[UI_TIME_EDIT_HOUR_H]='0';
  2198. gxbStringEditTime[UI_TIME_EDIT_HOUR_L]='9';
  2199. return;
  2200. }
  2201. }
  2202. else
  2203. {
  2204. if(gxbStringEditTime[UI_TIME_EDIT_HOUR_L]=='1')
  2205. {
  2206. gxbStringEditTime[UI_TIME_EDIT_HOUR_H]='1';
  2207. gxbStringEditTime[UI_TIME_EDIT_HOUR_L]='2';
  2208. return;
  2209. }
  2210. }
  2211. break;
  2212. case UI_TIME_EDIT_MIN_H:
  2213. if(gxbStringEditTime[UI_TIME_EDIT_MIN_H]=='0') return;
  2214. break;
  2215. case UI_TIME_EDIT_MIN_L:
  2216. if(gxbStringEditTime[UI_TIME_EDIT_MIN_L]=='0')
  2217. {
  2218. gxbStringEditTime[UI_TIME_EDIT_MIN_L]='9';
  2219. if(gxbStringEditTime[UI_TIME_EDIT_MIN_H]=='0')
  2220. gxbStringEditTime[UI_TIME_EDIT_MIN_H]='5';
  2221. else
  2222. gxbStringEditTime[UI_TIME_EDIT_MIN_H]--;
  2223. return;
  2224. }
  2225. break;
  2226. case UI_TIME_EDIT_SEC:
  2227. gxbStringEditTime[UI_TIME_EDIT_SEC]='0';
  2228. gxbStringEditTime[UI_TIME_EDIT_SEC+1]='0';
  2229. return;
  2230. case UI_TIME_EDIT_AMPM:
  2231. gxbEditTimeAmPm ^= 1;
  2232. return;
  2233. case UI_TIME_EDIT_YEAR:
  2234. //modify by tne for s-clock
  2235. if(gxbStringEditDate[1]=='0')
  2236. {
  2237. gxbStringEditDate[0]--;
  2238. gxbStringEditDate[1]='9';
  2239. }
  2240. else
  2241. {
  2242. if((gxbStringEditDate[0]=='0')&&(gxbStringEditDate[1]=='4'))
  2243. { //goto 2059
  2244. gxbStringEditDate[0]='5';
  2245. gxbStringEditDate[1]='9';
  2246. }
  2247. else
  2248. { gxbStringEditDate[1]--; }
  2249. }
  2250. /*
  2251. if(gxbStringEditDate[1]=='0')
  2252. {
  2253. gxbStringEditDate[0]--;
  2254. gxbStringEditDate[1]='9';
  2255. }
  2256. else
  2257. {
  2258. if((gxbStringEditDate[0]=='0')&&(gxbStringEditDate[1]=='4'))
  2259. {
  2260. gxbStringEditDate[0]='9';
  2261. gxbStringEditDate[1]='9';
  2262. }
  2263. else
  2264. { gxbStringEditDate[1]--; }
  2265. }
  2266. */
  2267. UiCheckMonthDay(FALSE);
  2268. return;
  2269. case UI_TIME_EDIT_MONTH:
  2270. if((gxbStringEditDate[2]=='0')&&(gxbStringEditDate[3]=='1'))
  2271. {
  2272. gxbStringEditDate[2]='1';
  2273. gxbStringEditDate[3]='2';
  2274. }
  2275. else if((gxbStringEditDate[2]=='1')&&(gxbStringEditDate[3]=='0'))
  2276. {
  2277. gxbStringEditDate[2]='0';
  2278. gxbStringEditDate[3]='9';
  2279. }
  2280. else
  2281. { gxbStringEditDate[3]--; }
  2282. UiCheckMonthDay(FALSE);
  2283. return;
  2284. case UI_TIME_EDIT_DAY:
  2285. if(gxbStringEditDate[5]=='0')
  2286. {
  2287. gxbStringEditDate[4]--;
  2288. gxbStringEditDate[5]='9';
  2289. }
  2290. else
  2291. {
  2292. gxbStringEditDate[5]--;
  2293. }
  2294. UiCheckMonthDay(FALSE);
  2295. return;
  2296. }
  2297. gxbStringEditTime[bTimeEditLocate]--;
  2298. }
  2299. void UiShowAlarmEditCursor(BYTE bEditLocate) large
  2300. {
  2301. if(bEditLocate==UI_ALARM_EDIT_AMPM)
  2302. {
  2303. OledReverse(91,ITEM_START_ROW+ITEM_ROW_OFF+2,16,16); //LcdReverse(4,64,2,15);
  2304. if(gxbSetFlag)
  2305. {
  2306. gxwFGColor = 0x001f;
  2307. OledDrawRect(91,ITEM_START_ROW+ITEM_ROW_OFF+2+15,16,1);
  2308. gxwFGColor = 0xffff;
  2309. }
  2310. }
  2311. else
  2312. {
  2313. OledReverse(cbLocateAlarmEdit[bEditLocate],ITEM_START_ROW+ITEM_ROW_OFF+2,8,16);  //LcdReverse(4,cbLocateAlarmEdit[bEditLocate],2,7);
  2314. if(gxbSetFlag)
  2315. {
  2316. gxwFGColor = 0x001f;
  2317. OledDrawRect(cbLocateAlarmEdit[bEditLocate],ITEM_START_ROW+ITEM_ROW_OFF+2+15,8,1);
  2318. gxwFGColor = 0xffff;
  2319. }
  2320. }
  2321. }
  2322. void UiShowTimeEditCursor(BYTE bEditLocate) large
  2323. {
  2324. switch(bEditLocate)
  2325. {
  2326. case UI_TIME_EDIT_AMPM:
  2327. //OledReverse(111,ITEM_START_ROW+ITEM_ROW_OFF*2+2,16,16); // WHH 070129
  2328. if(gxbSetFlag)
  2329. {
  2330. gxwFGColor = 0x001f;
  2331. OledDrawRect(91,ITEM_START_ROW+ITEM_ROW_OFF*2+2+15,16,1);
  2332. gxwFGColor = 0xffff;
  2333. }
  2334. break;
  2335. case UI_TIME_EDIT_SEC:
  2336. //OledReverse(86,ITEM_START_ROW+ITEM_ROW_OFF*2+2,16,16); // WHH 070129
  2337. if(gxbSetFlag)
  2338. {
  2339. gxwFGColor = 0x001f;
  2340. OledDrawRect(66,ITEM_START_ROW+ITEM_ROW_OFF*2+2+15,16,1);
  2341. gxwFGColor = 0xffff;
  2342. }
  2343. break;
  2344. default:
  2345. if(bEditLocate>=UI_TIME_EDIT_YEAR)
  2346. { // edit date
  2347. //OledReverse(cbLocateTimeEdit[bEditLocate-2],ITEM_START_ROW+ITEM_ROW_OFF+2,16,16);//LcdReverse(3,cbLocateTimeEdit[bEditLocate-2],2,15); //WHH 070129
  2348. if(gxbSetFlag)
  2349. {
  2350. gxwFGColor =0x001f;
  2351. OledDrawRect(cbLocateTimeEdit[bEditLocate-2],ITEM_START_ROW+ITEM_ROW_OFF+2+15,16,1);
  2352. gxwFGColor = 0xffff;
  2353. }
  2354. }
  2355. else
  2356. {
  2357. //OledReverse(cbLocateTimeEdit[bEditLocate],ITEM_START_ROW+ITEM_ROW_OFF*2+2,8,16);//LcdReverse(5,cbLocateTimeEdit[bEditLocate],2,7); //WHH 070129
  2358. if(gxbSetFlag)
  2359. {
  2360. gxwFGColor =0x001f;
  2361. OledDrawRect(cbLocateTimeEdit[bEditLocate],ITEM_START_ROW+ITEM_ROW_OFF*2+2+15,8,1);
  2362. gxwFGColor = 0xffff;
  2363. }
  2364. }
  2365. break;
  2366. }
  2367. }
  2368. void UiGoMenuSetPowerOff(void) large
  2369. {
  2370. BYTE bKey;
  2371. gxbUiMenuMainStates  =UI_SYS_PSAVE_MENU;   //  TONY070112
  2372. if(gxwAutoOff&0x8000)    // Tony070130
  2373. {
  2374. gxbUiMenuSubStates = (BYTE)(gxwAutoOff&0x00ff)/30;
  2375. }
  2376. else
  2377. {
  2378. gxbUiMenuSubStates = UI_SYS_MENU_PSAVE_MAX_ITEM-1;
  2379. }
  2380. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_PSAVE_MAX_ITEM);
  2381. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_POWER_AUTO_OFF);
  2382. while(1)
  2383. {
  2384. do
  2385. {
  2386. UiNormalCheck();
  2387. KeyGet(bKey);
  2388. UiCheckBackLight(bKey);
  2389. switch(bKey)
  2390. {
  2391. case KEY_LEFT_BREAK:
  2392. if((gxbUiMenuSubStates%ITEM_SUB_NUM_OPAGE==0)||(gxbUiMenuSubStates==0))
  2393. {
  2394. if(gxbUiMenuSubStates)
  2395. gxbUiMenuSubStates--;
  2396. else
  2397. gxbUiMenuSubStates=5;
  2398.  
  2399. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_PSAVE_MAX_ITEM);
  2400. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_POWER_AUTO_OFF);
  2401. }
  2402. else
  2403. {
  2404. gxbUiMenuSubStates--;
  2405. ShowSetupItemUnSelect(cwStringPsave[gxbUiMenuSubStates+1],gxbUiMenuSubStates+1); 
  2406. ShowSetupItemSelect( cwStringPsave[gxbUiMenuSubStates],gxbUiMenuSubStates);
  2407. }
  2408. /*
  2409. if(gxbUiMenuSubStates>0)
  2410. {
  2411. gxbUiMenuSubStates--;
  2412. ShowSetupItemUnSelect(cwStringPsave[gxbUiMenuSubStates+1],gxbUiMenuSubStates+1); 
  2413. }
  2414. else
  2415. {
  2416. gxbUiMenuSubStates=UI_SYS_MENU_PSAVE_MAX_ITEM-1;
  2417. ShowSetupItemUnSelect(cwStringPsave[0],0); 
  2418. }
  2419. ShowSetupItemSelect( cwStringPsave[gxbUiMenuSubStates],gxbUiMenuSubStates);
  2420. */
  2421. break;
  2422. case KEY_RIGHT_BREAK:
  2423. if((((gxbUiMenuSubStates+1)%ITEM_SUB_NUM_OPAGE)==0)||(gxbUiMenuSubStates==5))  
  2424. {
  2425.  
  2426. if(gxbUiMenuSubStates==5)
  2427.  
  2428. gxbUiMenuSubStates = 0;
  2429. else
  2430. gxbUiMenuSubStates++;
  2431. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_PSAVE_MAX_ITEM);
  2432. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_POWER_AUTO_OFF);
  2433. }
  2434. else  
  2435. {
  2436. ShowSetupItemUnSelect(cwStringPsave[gxbUiMenuSubStates],gxbUiMenuSubStates ); 
  2437. gxbUiMenuSubStates++;
  2438. ShowSetupItemSelect( cwStringPsave[gxbUiMenuSubStates],gxbUiMenuSubStates);
  2439. }
  2440. /*
  2441. if(gxbUiMenuSubStates<(UI_SYS_MENU_PSAVE_MAX_ITEM-1))
  2442. {
  2443. gxbUiMenuSubStates++;
  2444. ShowSetupItemUnSelect(cwStringPsave[gxbUiMenuSubStates-1],gxbUiMenuSubStates-1); 
  2445. }
  2446. else
  2447. {
  2448. gxbUiMenuSubStates=0;
  2449. ShowSetupItemUnSelect(cwStringPsave[UI_SYS_MENU_PSAVE_MAX_ITEM-1],UI_SYS_MENU_PSAVE_MAX_ITEM-1); 
  2450. }
  2451. ShowSetupItemSelect( cwStringPsave[gxbUiMenuSubStates],gxbUiMenuSubStates);
  2452. */
  2453. break;
  2454. case KEY_UP_BREAK:
  2455. gxwAutoOff |= SYS_POWER_SAVE_EN;
  2456. if(gxbUiMenuSubStates) // Tony070130
  2457. {
  2458. if(gxbUiMenuSubStates == 5)
  2459. {
  2460. gxwAutoOff &= SYS_POWER_SAVE_DIS;
  2461. }
  2462. else
  2463. {
  2464. gxwAutoOff &= 0xff00;
  2465. gxwAutoOff |=gxbUiMenuSubStates*30;
  2466. }
  2467. }
  2468. else
  2469. {
  2470. gxwAutoOff &= 0xff00;
  2471. gxwAutoOff |= 15;
  2472. }
  2473. case KEY_FUNC_BREAK:
  2474. case KEY_FUNC_LONG:
  2475. return;
  2476. }
  2477. }while(!(bKey&KEY_BREAK));
  2478. }
  2479. }
  2480. void UiGoMenuNoPowerOffPlay(void)large
  2481. {
  2482. BYTE bKey;
  2483. gxbUiMenuMainStates  =UI_DEL_YES_NO_MENU;
  2484. gxbUiMenuSubStates = gxbEditPSaveNotPlay;
  2485. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_YESNO_MAX_ITEM);
  2486. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_POWER_PLAY_NOT_OFF_1);
  2487. while(1)
  2488. {
  2489. ShowSetupItemUnSelect(cwStringSysYesNoList[!gxbUiMenuSubStates],(!gxbUiMenuSubStates));
  2490. ShowSetupItemSelect(cwStringSysYesNoList[gxbUiMenuSubStates],(gxbUiMenuSubStates));
  2491. do
  2492. {
  2493. #if(USE_SYS_STR_SCROLL)
  2494. SysStringScroll();
  2495. #endif
  2496. UiNormalCheck();
  2497. KeyGet(bKey);
  2498. UiCheckBackLight(bKey);
  2499. switch(bKey)
  2500. {
  2501. case KEY_LEFT_BREAK:
  2502. case KEY_RIGHT_BREAK:
  2503. gxbUiMenuSubStates ^= 0x01;
  2504. break;
  2505. case KEY_UP_BREAK:
  2506. gxbEditPSaveNotPlay=gxbUiMenuSubStates;
  2507. gxwAutoOff &= SYS_PLAY_NOT_OFF_DIS; // Jeff070323#1  // Clear bit fist 
  2508. gxwAutoOff |= (WORD)gxbUiMenuSubStates <<14;
  2509. return;
  2510. case KEY_FUNC_BREAK:
  2511. case KEY_FUNC_LONG:
  2512. return;
  2513. }
  2514. }while(!(bKey&KEY_BREAK));//while(bKey==KEY_INVALID); // Walace051015
  2515. }
  2516. }
  2517. void UiGoSysEditPSave(void) large
  2518. {
  2519. //BYTE bPSaveEditLocate=UI_PSAVE_EDIT_SWITCH1,bKey;
  2520. BYTE bKey;
  2521. // OLED_CLEAR_ALL();
  2522. UiGetPSaveTime();
  2523. // UiShowAlarmPic(); //TONY070308
  2524. #if(SYS_USE_KEY_HOLD) //Nick061120 //NandRestore
  2525. UiShowKeyHold(); //tne 2006/07/14 #1
  2526. #endif
  2527. UiShowStorageSts();
  2528. // StrShowSysString(cwStringSystemList[UI_SYS_MENU_POWER],WORD1,LINE0);
  2529. //   OledShowIcon(ICON_LAB_SETUP,SEG0,PAGE0) ;
  2530. UI_SHOW_BATTERY();
  2531. gxbUiMenuMainStates = UI_POWER_MENU;
  2532. gxbUiMenuSubStates = 0;
  2533. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_POWER_MAX_ITEM);
  2534. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_MENU_SYS_POWER);
  2535.    
  2536. while(1)
  2537. {
  2538. ShowSetupItemUnSelect(cwStringSysPowerOffList[!gxbUiMenuSubStates],(!gxbUiMenuSubStates));
  2539. ShowSetupItemSelect(cwStringSysPowerOffList[gxbUiMenuSubStates],(gxbUiMenuSubStates));
  2540. do
  2541. {
  2542. #if(USE_SYS_STR_SCROLL)
  2543. SysStringScroll();
  2544. #endif
  2545. UiNormalCheck();
  2546. KeyGet(bKey);
  2547. UiCheckBackLight(bKey);
  2548. switch(bKey)
  2549. {
  2550. case KEY_LEFT_BREAK:
  2551. case KEY_RIGHT_BREAK:
  2552. gxbUiMenuSubStates ^= 1;
  2553. break;
  2554. case KEY_UP_BREAK:
  2555. switch(gxbUiMenuSubStates)
  2556. {
  2557. case 0:
  2558. UiGoMenuSetPowerOff();
  2559. gxbUiMenuSubStates=0;
  2560. break;
  2561. case 1:
  2562. UiGoMenuNoPowerOffPlay();
  2563. gxbUiMenuSubStates=1;
  2564. break;
  2565. }
  2566. gxbUiMenuMainStates=UI_POWER_MENU;
  2567. UiShowSubMenuItem(gxbUiMenuSubStates,UI_SYS_MENU_POWER_MAX_ITEM) ;
  2568. UI_SHOW_MENU_TITLE_ITEM_STRING(SYS_STR_MENU_SYS_POWER);
  2569. break;
  2570. case KEY_FUNC_BREAK:
  2571. case KEY_FUNC_LONG:
  2572. return;
  2573. }
  2574. }while(!(bKey&KEY_BREAK));//
  2575. /*
  2576. while(1)
  2577. {
  2578. #if(USE_SYS_STR_UNICODE)
  2579. gxfSourceUnicode=STRING_TYPE_ASCII;
  2580. #endif
  2581. StrShowString(gxbStringEditPSaveTime,UiGetDispLocation(UI_LOCATE_POWER_SAVE_0+UI_PSAVE_EDIT_MIN_H)+ITEM_START_COL,LINE2+ITEM_START_ROW,3);
  2582. #if(USE_SYS_STR_UNICODE)
  2583. gxfSourceUnicode=STRING_TYPE_UNICODE;
  2584. #endif
  2585. if(gxbEditPSaveSwitch)
  2586. OledShowIcon(ICON_POWER_SAVE_CHECK,SEG0+ITEM_START_COL,LINE1+ITEM_START_ROW) ; //Icon CheckBoxCheck
  2587. else
  2588. OledShowIcon(ICON_POWER_SAVE,SEG0+ITEM_START_COL,LINE1+ITEM_START_ROW) ; //Icon CheckBoxNone
  2589. if(gxbEditPSaveNotPlay)
  2590. OledShowIcon(ICON_POWER_SAVE_MUSIC_CHECK,SEG0+ITEM_START_COL,LINE3+ITEM_START_ROW) ; //Icon CheckBoxCheck
  2591. else
  2592. OledShowIcon(ICON_POWER_SAVE_MUSIC,SEG0+ITEM_START_COL,LINE3+ITEM_START_ROW) ; //Icon CheckBoxNone
  2593. UiShowPSaveEditCursor(bPSaveEditLocate);
  2594. do
  2595. {
  2596. UiNormalCheck();
  2597. KeyGet(bKey);
  2598. UiCheckBackLight(bKey);
  2599. switch(bKey)
  2600. {
  2601. case KEY_LEFT_BREAK:
  2602. if(bPSaveEditLocate>UI_PSAVE_EDIT_SWITCH1)
  2603. bPSaveEditLocate--;
  2604. else
  2605. bPSaveEditLocate=UI_PSAVE_EDIT_SWITCH2;
  2606. break;
  2607. case KEY_RIGHT_BREAK:
  2608. if(bPSaveEditLocate<UI_PSAVE_EDIT_SWITCH2)
  2609. bPSaveEditLocate++;
  2610. else
  2611. bPSaveEditLocate=UI_PSAVE_EDIT_SWITCH1;
  2612. break;
  2613. case KEY_VOL_UP_BREAK:
  2614. switch(bPSaveEditLocate)
  2615. {
  2616. case UI_PSAVE_EDIT_SWITCH1:
  2617. gxbEditPSaveSwitch^=1;
  2618. break;
  2619. case UI_PSAVE_EDIT_SWITCH2:
  2620. gxbEditPSaveNotPlay^=1;
  2621. break;
  2622. default:
  2623. gxbStringEditPSaveTime[bPSaveEditLocate-1]++;
  2624. UiCheckPSaveTime();
  2625. break;
  2626. }
  2627. break;
  2628. case KEY_VOL_DOWN_BREAK:
  2629. switch(bPSaveEditLocate)
  2630. {
  2631. case UI_PSAVE_EDIT_SWITCH1:
  2632. gxbEditPSaveSwitch^=1;
  2633. break;
  2634. case UI_PSAVE_EDIT_SWITCH2:
  2635. gxbEditPSaveNotPlay^=1;
  2636. break;
  2637. default:
  2638. gxbStringEditPSaveTime[bPSaveEditLocate-1]--;
  2639. UiCheckPSaveTime();
  2640. break;
  2641. }
  2642. break;
  2643. // case KEY_UP_BREAK:
  2644. case KEY_FUNC_BREAK:
  2645. gxwAutoOff=(((WORD)gxbStringEditPSaveTime[0]-0x30)*100+((WORD)gxbStringEditPSaveTime[1]-0x30)*10+((WORD)gxbStringEditPSaveTime[2]-0x30));
  2646. if((gxbEditPSaveSwitch)&&(gxwAutoOff==0)) gxwAutoOff=1;
  2647. gxwAutoOff |= ((WORD)gxbEditPSaveNotPlay<<14);
  2648. gxwAutoOff |= ((WORD)gxbEditPSaveSwitch<<15);