📄 ui_delete.s01
字号:
NAME ui_delete(17)
RSEG COM_CTRL(0)
EXTERN ResShowMultiString
EXTERN ResShowPic
EXTERN SetPenColor
EXTERN SetTextOutMode
EXTERN ap_get_message
EXTERN ap_handle_hotkey
EXTERN ap_message_init
EXTERN draw_del_file
EXTERN fselDelFile
EXTERN fselGetLocation
EXTERN fselSetLocation
EXTERN ui_auto_select
PUBLIC ui_delete
EXTERN ?CLZ80B_4_04_L00
EXTERN ?C_V_SWITCH_L06
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
RSEG COM_CTRL
ui_delete:
; 1. /*
; 2. *******************************************************************************
; 3. * ACTOS AP
; 4. * ap common lib, file/folder delete control file
; 5. *
; 6. * (c) Copyright, Actions Co,Ld.
; 7. * All Right Reserved
; 8. *
; 9. *******************************************************************************
; 10. */
; 11. #pragma codeseg(COM_CTRL)
; 12.
; 13. #include "ap_common.h"
; 14. extern WORD fselFileNo;
; 15. extern BYTE fselDirLayer;
; 16. extern void show_del_fail(BYTE langid);
; 17. extern int draw_del_file(file_location_t *location, BYTE string_id);
; 18. extern void draw_del_dir(file_location_t *location, BYTE string_id);
; 19. /********************************************************************************
; 20. * Description : delete the files of the selector directory.
; 21. *
; 22. * Arguments : location :keep the file selector parament
; 23. string_id :display language type
; 24. type: the kind of the files
; 25. * Returns :
; 26. * other: Successful
; 27. * 0: Fail, detail information in fselError
; 28. * Notes :
; 29. *
; 30. ********************************************************************************/
; 31. int ui_delete(file_location_t *location, BYTE type,BYTE string_id)
; 32. {
PUSH IY
PUSH IX
LD IX,0
ADD IX,SP
PUSH BC
PUSH AF
PUSH AF
PUSH AF
PUSH AF
PUSH DE
POP IY
; 33. BOOL need_draw=TRUE;
; 34. BYTE delflag;
; 35. BYTE i, playlistclassbak;
; 36.
; 37. char key;
; 38. if ( !fselSetLocation(location) )
LD A,BYTE3 fselSetLocation
LD HL,LWRD fselSetLocation
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JP Z,?0048
?0002:
; 39. return RESULT_IGNORE;
?0003:
; 40. need_draw = TRUE;
; 41. delflag = 0;
; 42. ap_message_init(NULL);
LD DE,0
LD A,BYTE3 ap_message_init
LD HL,LWRD ap_message_init
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (IX-10),1
?0050:
LD (IX-9),0
?0005:
; 43. while(1)
; 44. {
; 45. //show ui
; 46. if(need_draw)
XOR A
OR (IX-10)
JR Z,?0008
?0007:
; 47. {
; 48. if(type==DELETE_FILE)
XOR A
OR (IX-2)
JP NZ,?0048
?0009:
; 49. {
; 50. int result;
; 51. result=draw_del_file(location, string_id); //删除单个文件的显示
LD C,(IX+8)
PUSH IY
POP DE
LD A,BYTE3 draw_del_file
LD HL,LWRD draw_del_file
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (IX-5),L
LD (IX-4),H
?0012:
; 52. while( (key = ap_get_message())!=NULL ); //获取消息
CALL LWRD ap_get_message
OR A
JR NZ,?0012
?0013:
?0011:
; 53. return result;
LD L,(IX-5)
LD H,(IX-4)
; 54. }
JP LWRD ?0042
?0010:
; 55. else
; 56. {
; 57. return RESULT_IGNORE; //其它情况,忽略并退出函数
; 58. }
; 59. need_draw=FALSE;
?0008:
; 60. }
; 61.
; 62. //handle msg
; 63. key = ap_get_message(); //获取消息
CALL LWRD ap_get_message
; 64. switch(key)
LD E,A
CALL LWRD ?C_V_SWITCH_L06
DEFW 9
DEFB 5
DEFB 6
DEFB 30
DEFB 33
DEFB 48
DEFB 55
DEFB 56
DEFB 69
DEFB 70
DEFW ?0036
DEFW ?0015
DEFW ?0015
DEFW ?0005
DEFW ?0032
DEFW ?0019
DEFW ?0048
DEFW ?0028
DEFW ?0015
DEFW ?0015
?0015:
; 65. {
; 66. case AP_KEY_NEXT: //YES和NO之间切换
; 67. case AP_KEY_PREV:
; 68. case AP_KEY_NEXT | AP_KEY_HOLD:
; 69. case AP_KEY_PREV | AP_KEY_HOLD:
; 70. if(delflag==0)
XOR A
OR (IX-9)
LD C,60
PUSH BC
LD C,78
JR NZ,?0017
?0016:
; 71. {
; 72. delflag=1;
; 73. ResShowPic(DELYES,78,60);
LD DE,2
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
LD (IX-9),1
; 74. }
; 75. else
JR ?0005
?0017:
; 76. {
; 77. delflag=0;
; 78. ResShowPic(DELNO,78,60);
LD DE,1
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
JP LWRD ?0050
?0018:
; 79. }
; 80. break;
?0019:
; 81.
; 82. case AP_KEY_MODE | AP_KEY_UP:
; 83. if(delflag==1) //YES时按下MODE键的处理
LD B,(IX-9)
DEC B
JR NZ,?0048
?0020:
; 84. {
; 85.
; 86.
; 87. ResShowPic(SSBCK,0,0);
LD C,B
PUSH BC
LD DE,221
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 88. SetTextOutMode(1); //设字体透明
LD E,1
CALL LWRD SetTextOutMode
; 89. SetPenColor(Color_WHITE_def);
LD BC,0
LD DE,65535
CALL LWRD SetPenColor
; 90. ResShowMultiString(CDELING,string_id, 255, 84);
LD C,84
PUSH BC
LD C,255
PUSH BC
LD C,(IX+8)
LD DE,277
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 91. SetTextOutMode(0); //设字体不透明
LD E,0
CALL LWRD SetTextOutMode
; 92. if(type==DELETE_FILE)
XOR A
OR (IX-2)
JR NZ,?0048
?0022:
; 93. {
; 94. if ( !fselDelFile(FSEL_DEL_FILE) ) //更新文件选择器
LD E,A
LD A,BYTE3 fselDelFile
LD HL,LWRD fselDelFile
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JR Z,?0048
?0024:
; 95. return RESULT_IGNORE;
; 96. else
?0025:
; 97. {
; 98. if (fselGetLocation(location))
PUSH IY
POP DE
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JR Z,?0048
?0026:
; 99. return RESULT_NULL;
LD HL,0
; 100. else
JR ?0042
?0027:
; 101. return RESULT_IGNORE;
; 102. }
?0023:
; 103. }
; 104.
; 105. return RESULT_IGNORE;
; 106. }
?0021:
; 107. else
; 108. {
; 109. return RESULT_IGNORE;//NO时按下MODE键的处理
; 110. }
?0028:
; 111.
; 112. case AP_MSG_WAIT_TIMEOUT: //8秒退出
; 113. if(ui_auto_select) return RESULT_IGNORE;
LD A,(ui_auto_select)
OR A
JP Z,?0005
?0029:
?0048:
; 114. break;
?0030:
?0031:
; 115.
; 116. case AP_KEY_PLAY | AP_KEY_UP:
; 117. return RESULT_IGNORE;
LD HL,52
; 118.
; 119. case AP_MSG_SD_OUT:
JR ?0042
?0032:
; 120. //如在准备删除SD卡中文件时,SD卡被拔出,就返回拔出信号
; 121. if (location->disk == 'H')
LD A,(IY+0)
CP 72
JP NZ,?0005
?0033:
; 122. {
; 123. return RESULT_SD_OUT;
LD HL,54
; 124. }
JR ?0042
?0034:
; 125. break;
?0035:
; 126.
; 127. case AP_MSG_SD_IN:
; 128. break;
?0036:
; 129.
; 130. default:
; 131. key=ap_handle_hotkey(key); //热键处理
CALL LWRD ap_handle_hotkey
LD (IX-6),A
; 132. if(key == RESULT_REDRAW)
CP 50
JR NZ,?0038
?0037:
; 133. {
; 134. need_draw=TRUE;
LD (IX-10),1
JP LWRD ?0005
?0038:
; 135. }
; 136. else if(key!=0)
XOR A
OR (IX-6)
JP Z,?0005
?0040:
; 137. {
; 138. return key;
LD L,A
LD H,0
; 139. }
?0042:
LD SP,IX
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
?0041:
?0039:
?0014:
; 140. }//switch(key)
; 141. }//while(1)
; 142. }
; 143.
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -