📄 ui_delete2.s01
字号:
NAME ui_delete2(17)
RSEG COM_CTRL(0)
RSEG CSTR(0)
EXTERN FS_CD
EXTERN FS_GetName
EXTERN FS_SetCurDir
EXTERN GetDCStatus
EXTERN ResShowMultiString
EXTERN ResShowPic
EXTERN SetBackgdColor
EXTERN SetPenColor
EXTERN ShowFilelist
EXTERN UpdateScreen
EXTERN ap_get_message
EXTERN ap_handle_hotkey
EXTERN ap_message_init
EXTERN ap_sleep
PUBLIC draw_del_dir
PUBLIC draw_del_file
EXTERN fselDelFile
EXTERN fselGetByNO
EXTERN fselGetLocation
EXTERN fselGetNo
EXTERN fselGetTotal
EXTERN fselSetLocation
EXTERN reinit_idm_buf_filelist
PUBLIC show_del_fail
EXTERN show_delete_menu
EXTERN ?CLZ80B_4_04_L00
EXTERN ?SS_DIV_L02
EXTERN ?S_V_SWITCH_L06
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?MEMSET_L11
RSEG COM_CTRL
show_del_fail:
; 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. #include "enhanced.h"
; 15. void show_del_fail(BYTE langid);
; 16. int draw_del_file(file_location_t *location, BYTE string_id);
; 17. void draw_del_dir(file_location_t *location, BYTE string_id);
; 18. void reinit_idm_buf_filelist(int top, int bottom,BYTE string_id);
; 19. void ShowFilelist(int top,int bottom,int Old_active,int active,BYTE string_id);
; 20. int show_delete_menu(BYTE string_id);
; 21.
; 22.
; 23. void show_del_fail(BYTE langid)
; 24. {
PUSH BC
PUSH DE
; 25. ResShowMultiString(CDELFAIL,langid,16,32); //删除失败界面显示
LD C,32
PUSH BC
LD C,16
PUSH BC
LD C,E
LD DE,507
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 26. UpdateScreen(NULL);
LD DE,0
CALL LWRD UpdateScreen
; 27. ap_sleep(4);
LD DE,4
LD A,BYTE3 ap_sleep
LD HL,LWRD ap_sleep
CALL LWRD ?BANK_CALL_DIRECT_L08
; 28. }
POP HL
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
draw_del_file:
; 29.
; 30. /********************************************************************************
; 31. * Description : draw the selector file of the selector directory.
; 32. *
; 33. * Arguments : location :keep the file selector parament
; 34. string_id :display language type
; 35. * Returns :
; 36. * other: Successful
; 37. * 0: Fail, detail information in fselError
; 38. * Notes :
; 39. *
; 40. ********************************************************************************/
; 41. int draw_del_file(file_location_t *location, BYTE string_id)
; 42. {
PUSH IY
PUSH IX
LD IX,0
ADD IX,SP
PUSH BC
PUSH DE
LD HL,65510
ADD HL,SP
LD SP,HL
; 43. int filelist_active,cur_grouplist; //目录总数,文件总数和浏览项数,浏览活动项
; 44. int top, bottom,filetotal;
; 45. char name[12];
; 46. int key;
; 47. filelist_active= FSELGetNo()-1;
LD A,BYTE3 fselGetNo
LD HL,LWRD fselGetNo
CALL LWRD ?BANK_CALL_DIRECT_L08
LD BC,65535
ADD HL,BC
PUSH HL
POP IY
; 48.
; 49. cur_grouplist=filelist_active/6;
LD BC,6
EX DE,HL
CALL LWRD ?0095
; 50. top=cur_grouplist*6; //顶的序号
; 51.
; 52. filetotal=fselGetTotal();
LD A,BYTE3 fselGetTotal
LD HL,LWRD fselGetTotal
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (IX-22),L
LD (IX-21),H
; 53. bottom=top+5;
LD HL,5
LD C,(IX-26)
LD B,(IX-25)
ADD HL,BC
LD (IX-24),L
LD (IX-23),H
; 54. if(bottom>filetotal-1)
LD L,(IX-22)
LD H,(IX-21)
DEC HL
LD C,(IX-24)
LD B,(IX-23)
OR 128
SBC HL,BC
JP PO,?0078
XOR H
?0078:
JP P,?0003
?0002:
; 55. bottom=filetotal-1;
LD L,(IX-22)
LD H,(IX-21)
DEC HL
LD (IX-24),L
LD (IX-23),H
?0003:
; 56. reinit_idm_buf_filelist(top, bottom, string_id); //换页要重新初始化IDM数据
LD L,(IX-2)
PUSH HL
CALL LWRD ?0098
POP HL
; 57. ShowFilelist(top,bottom,filelist_active,filelist_active,string_id);
LD L,(IX-2)
PUSH HL
PUSH IY
PUSH IY
CALL LWRD ?0096
POP HL
POP HL
POP HL
?0005:
; 58. while(ap_get_message()!=0) {;} //丢掉多余按键
CALL LWRD ap_get_message
OR A
JR NZ,?0005
?0006:
?0004:
; 59. ap_message_init(NULL);
?0088:
LD DE,0
LD A,BYTE3 ap_message_init
LD HL,LWRD ap_message_init
CALL LWRD ?BANK_CALL_DIRECT_L08
?0008:
; 60. while(1)
; 61. {
; 62. //handle msg
; 63. key = ap_get_message();
CALL LWRD ap_get_message
LD C,A
LD E,C
LD B,0
; 64. switch(key)
LD D,B
CALL LWRD ?S_V_SWITCH_L06
DEFW 9
DEFW 5
DEFW 6
DEFW 30
DEFW 33
DEFW 48
DEFW 55
DEFW 56
DEFW 69
DEFW 70
DEFW ?0059
DEFW ?0011
DEFW ?0025
DEFW ?0008
DEFW ?0055
DEFW ?0036
DEFW ?0035
DEFW ?0052
DEFW ?0011
DEFW ?0025
?0011:
; 65. {
; 66. case AP_KEY_NEXT:
; 67. case AP_KEY_NEXT | AP_KEY_HOLD:
; 68.
; 69. if(filelist_active<filetotal -1 ) //当前项小于总列表数
LD C,(IX-22)
LD B,(IX-21)
DEC BC
PUSH IY
POP HL
OR 128
SBC HL,BC
JP PO,?0079
XOR H
?0079:
JP P,?0013
?0012:
; 70. {
; 71.
; 72. filelist_active++;
; 73. if(filelist_active/6==cur_grouplist)
LD BC,6
INC IY
PUSH IY
POP DE
CALL LWRD ?SS_DIV_L02
LD L,(IX-28)
LD H,(IX-27)
AND A
SBC HL,DE
JR NZ,?0015
?0014:
; 74. {
; 75. ShowFilelist(top,bottom,filelist_active-1,filelist_active,string_id);
LD L,(IX-2)
PUSH HL
PUSH IY
PUSH IY
POP HL
DEC HL
PUSH HL
JR ?0089
; 76. }
; 77. else
?0015:
; 78. {
; 79. cur_grouplist=cur_grouplist+1;
LD HL,2
ADD HL,SP
LD A,(HL)
ADD A,1
LD (HL),A
JR NC,?0080
INC HL
INC (HL)
?0080:
; 80. top=(filelist_active/6)*6; //顶的序号
CALL LWRD ?0094
; 81. bottom=top+5; //底的序号
; 82. if(bottom>(filetotal-1))
LD L,(IX-22)
LD H,(IX-21)
DEC HL
LD C,(IX-24)
LD B,(IX-23)
OR 128
SBC HL,BC
JP PO,?0081
XOR H
?0081:
JP P,?0021
?0017:
; 83. bottom=filetotal-1;
JR ?0091
?0018:
; 84. reinit_idm_buf_filelist(top, bottom, string_id); //换页要重新初始化IDM数据
; 85. ShowFilelist(top,bottom,filelist_active,filelist_active,string_id);
?0016:
; 86. }
; 87.
; 88. }
; 89. else
?0013:
; 90. {
; 91. filelist_active=0;
; 92. top=0;
; 93. cur_grouplist=0;
; 94. bottom=5; //底的序号
; 95. if(bottom>(filetotal-1))
LD IY,0
XOR A
LD (IX-26),A
LD (IX-25),A
LD (IX-28),A
LD (IX-27),A
LD (IX-24),5
LD (IX-23),A
LD L,C
LD H,B
LD BC,32773
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0021
?0020:
; 96. bottom=filetotal-1;
?0091:
LD L,(IX-22)
LD H,(IX-21)
DEC HL
LD (IX-24),L
LD (IX-23),H
?0021:
; 97. reinit_idm_buf_filelist(top, bottom, string_id); //换页要重新初始化IDM数据
LD L,(IX-2)
PUSH HL
CALL LWRD ?0098
POP HL
; 98. ShowFilelist(top,bottom,filelist_active,filelist_active,string_id);
LD L,(IX-2)
PUSH HL
PUSH IY
PUSH IY
?0089:
CALL LWRD ?0096
POP HL
POP HL
POP HL
?0019:
?0023:
; 99. }
; 100. while(ap_get_message()!=0) {;} //丢掉多余按键
CALL LWRD ap_get_message
OR A
JP Z,?0008
?0024:
; 101. break;
JR ?0019
?0022:
?0025:
; 102.
; 103. case AP_KEY_PREV:
; 104. case AP_KEY_PREV | AP_KEY_HOLD :
; 105. if(filelist_active >0)
PUSH IY
POP BC
LD L,D
LD H,D
OR 128
SBC HL,BC
JP PO,?0082
XOR H
?0082:
JP P,?0027
?0026:
; 106. {
; 107. filelist_active--;
; 108. if(filelist_active/6==cur_grouplist)
LD BC,6
DEC IY
PUSH IY
POP DE
CALL LWRD ?SS_DIV_L02
LD L,(IX-28)
LD H,(IX-27)
AND A
SBC HL,DE
JR NZ,?0029
?0028:
; 109. {
; 110. ShowFilelist(top,bottom,filelist_active+1,filelist_active,string_id);
LD L,(IX-2)
PUSH HL
PUSH IY
PUSH IY
POP HL
INC HL
PUSH HL
JR ?0085
; 111. }
; 112. else
?0029:
; 113. {
; 114. cur_grouplist=cur_grouplist-1;
LD HL,2
ADD HL,SP
LD A,(HL)
ADD A,255
LD (HL),A
INC HL
LD A,(HL)
ADC A,255
LD (HL),A
; 115. top=(filelist_active/6)*6; //顶的序号
CALL LWRD ?0094
; 116. bottom=top+5; //底的序号
; 117. reinit_idm_buf_filelist(top, bottom, string_id); //换页要重新初始化IDM数据
LD C,(IX-2)
PUSH BC
LD C,L
LD B,H
CALL LWRD ?0099
POP HL
; 118. ShowFilelist(top,bottom,filelist_active,filelist_active,string_id);
LD L,(IX-2)
PUSH HL
PUSH IY
PUSH IY
?0085:
CALL LWRD ?0096
POP HL
POP HL
POP HL
?0030:
; 119. }
; 120. }
; 121.
; 122. else
JR ?0031
?0027:
; 123. {
; 124. cur_grouplist=(filetotal-1)/6;
LD E,(IX-22)
LD D,(IX-21)
DEC DE
LD BC,6
CALL LWRD ?0095
; 125. top=cur_grouplist*6;
; 126. bottom=filetotal-1;
LD C,(IX-22)
LD B,(IX-21)
DEC BC
LD (IX-24),C
LD (IX-23),B
; 127. filelist_active=bottom;
; 128. reinit_idm_buf_filelist(top, bottom, string_id); //换页要重新初始化IDM数据
LD E,(IX-2)
PUSH DE
EX DE,HL
CALL LWRD ?0100
POP HL
; 129. ShowFilelist(top,bottom,filelist_active,filelist_active,string_id);
LD L,(IX-2)
PUSH HL
LD L,(IX-24)
LD H,(IX-23)
PUSH HL
PUSH HL
LD C,L
LD B,H
CALL LWRD ?0097
POP HL
POP HL
POP HL
LD L,(IX-24)
LD H,(IX-23)
PUSH HL
POP IY
?0031:
?0033:
; 130. }
; 131. while(ap_get_message()!=0) {;} //丢掉多余按键
CALL LWRD ap_get_message
OR A
JP Z,?0008
?0034:
; 132. break;
JR ?0031
?0032:
?0035:
; 133.
; 134. case AP_KEY_PLAY | AP_KEY_UP:
; 135. FSELSetLocation(location);
LD E,(IX-4)
LD D,(IX-3)
LD A,BYTE3 fselSetLocation
LD HL,LWRD fselSetLocation
CALL LWRD ?BANK_CALL_DIRECT_L08
; 136. return RESULT_IGNORE;
JP LWRD ?0054
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -