📄 file_brower.lst
字号:
C51 COMPILER V7.50 FILE_BROWER 08/18/2008 14:06:46 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE FILE_BROWER
OBJECT MODULE PLACED IN ..\output\output_bin\output_movie\file_brower.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\code\ap_movie\src\file_brower.c LARGE OPTIMIZE(9,SIZE) BROWSE INCDIR(
-..\..\..\bsp\include;..\..\code\ap_movie\src\include;..\..\code\global;..\..\code\include) DEFINE(CONFIG_ASIC,dynamic_lo
-ad) DEBUG OBJECTEXTEND PRINT(..\output\output_bin\output_movie\file_brower.lst) OBJECT(..\output\output_bin\output_movie
-\file_brower.obj)
line level source
1 /******************
2 * file_brower.c
3 ******************/
4
5 #include <string.h>
6 #include "api.h"
7 #include "lcd.h"
8 #include "key.h"
9 #include "common.h"
10 #include "ap_common.h"
11 #include "display.h"
12 #include "ui_pop_up_list.h"
13 #include "prefer.h"
14 #include "res_show.h"
15 #include "res.h"
16 #include "movie_utile.h"
17
18 #define MAINMENU_SELECT_MAX 6
19 #define ITEMS_PER_SCREEN 6
20
21 UINT8 select_page, select_base, select_max;
22
23 //extern code IMAGE image_table[];
24
25 void gfx_file_line(UINT8 line)
26 {
27 1 gfx_bg_rectangle(22, menu_pos[line], 96, 16);
28 1
29 1 lcd_max_str = 12;
30 1 if(curr_finfo.etype == ENTRY_TYPE_FILE) {
31 2 bResShowPic(MTVFILE,6,menu_pos[line]);
32 2 }
33 1 else
34 1 bResShowPic(DIR,6,menu_pos[line]);
35 1 gfx_filename(22, menu_pos[line]);
36 1 }
37
38 static void gfx_file_browser(BOOLEAN init)
39 {
40 1 BOOLEAN flag;
41 1 UINT8 data line;
42 1 UINT16 start, order;
43 1
44 1 if(init) {
45 2 //show background
46 2 bResShowPic(MENUTWO,0,0);
47 2 bResShowPic(MENU_TOP,0,140);
48 2 //show titiles
49 2 fg_color = COLOR_WHITE;
50 2 bg_color = 0x8B75;;
51 2 //gfx_set_bg(Color_MENU_def);
52 2 ResShowMultiString(FILESS, tUserPreference.u8LanguageId,
C51 COMPILER V7.50 FILE_BROWER 08/18/2008 14:06:46 PAGE 2
53 2 list_str_x_def,123);
54 2 bg_color = 0xF75F;
55 2 gfx_set_bg(0xF75F);
56 2 }
57 1 else
58 1 bResShowPic(CLR_MTWO,0,0);
59 1
60 1 select_page = select / ITEMS_PER_SCREEN;
61 1 start = select_page * ITEMS_PER_SCREEN;
62 1
63 1 line = 0;
64 1 flag = 0;
65 1
66 1 if(totdir && start < totdir) {
67 2 /* If select is on file, we need to research DIRs. */
68 2 if(select >= totdir)
69 2 if(!api_bSearchDirInDir(SEARCH_MODE_CURRDIR))
70 2 return;
71 2
72 2 for(; line < ITEMS_PER_SCREEN && start < totdir; line++) {
73 3 if(start == select) {
74 4 fg_color = COLOR_SELECT;
75 4 order = select + 1;
76 4 flag = 1;
77 4 }
78 3 else
79 3 fg_color = COLOR_UNSELECT;
80 3 if(!api_bSelectDirectory(++start, SELECT_SET) ||
81 3 !api_bGetSelectFileInfo(&curr_finfo))
82 3 return;
83 3 gfx_file_line(line);
84 3 }
85 2 }
86 1
87 1 /* Some files need to display, we need to research */
88 1 if(totfile && (line < ITEMS_PER_SCREEN)) {
89 2 if(line) {
90 3 if(!api_bSearchFileInDir(SEARCH_MODE_CURRDIR, search_extstr))
91 3 return;
92 3 }
93 2
94 2 for(; line < ITEMS_PER_SCREEN && start < totitem; line++) {
95 3 fg_color = (start == select ? COLOR_SELECT : COLOR_UNSELECT);
96 3 if(!api_bSelectFile(++start - totdir, SELECT_SET) ||
97 3 !api_bGetSelectFileInfo(&curr_finfo))
98 3 return;
99 3 gfx_file_line(line);
100 3 }
101 2
102 2 if(flag) {
103 3 if(!api_bSearchDirInDir(SEARCH_MODE_CURRDIR))
104 3 return;
105 3 order = select + 1;
106 3 }
107 2 else
108 2 order = select - totdir + 1;
109 2 }
110 1
111 1 if(api_bSelectFile(order, SELECT_SET)) {
112 2 api_bGetSelectFileInfo(&curr_finfo);
113 2 }
114 1 }
C51 COMPILER V7.50 FILE_BROWER 08/18/2008 14:06:46 PAGE 3
115
116 void screen_filebrowser_init(void)
117 {
118 1 gfx_file_browser(true);
119 1
120 1 screen_level = SCREEN_LEVEL_FILE_BROWSER;
121 1 }
122
123 void screen_filebrowser(UINT8 key)
124 {
125 1 INT8 dir;
126 1 UINT16 old_select, order;
127 1
128 1 switch(key) {
129 2 case KEY_MENU:
130 2 if(curr_finfo.etype == ENTRY_TYPE_FILE) {
131 3 api_bStop();
132 3 if(!api_bSelectFileOpen())
133 3 return;
134 3 screen_map(SCREEN_MOVIE);
135 3 }
136 2 else {
137 3 if(change_dir(&curr_finfo)) {
138 4 scan_dir_file(SEARCH_MODE_CURRDIR, search_extstr, 1);
139 4 gfx_file_browser(true);
140 4 }
141 3 }
142 2 return;
143 2 case KEY_NEXT:
144 2 dir = 1;
145 2 break;
146 2 case KEY_PREV:
147 2 dir = -1;
148 2 break;
149 2 case KEY_EOS:
150 2 deal_loop();
151 2 break;
152 2 default:
153 2 return;
154 2 }
155 1
156 1 fg_color = COLOR_UNSELECT;
157 1 //bg_color = 0xF75F;
158 1 gfx_file_line(select % ITEMS_PER_SCREEN);
159 1
160 1 old_select = select;
161 1 select += dir;
162 1
163 1 if(select >= totitem) {
164 2 if(dir > 0)
165 2 select = 0;
166 2 else
167 2 select = totitem - 1;
168 2 }
169 1
170 1 if(old_select < totdir && select >= totdir) {
171 2 if(!api_bSearchFileInDir(SEARCH_MODE_CURRDIR, search_extstr))
172 2 return;
173 2 }
174 1 else if(old_select >= totdir && select < totdir) {
175 2 if(!api_bSearchDirInDir(SEARCH_MODE_CURRDIR))
176 2 return;
C51 COMPILER V7.50 FILE_BROWER 08/18/2008 14:06:46 PAGE 4
177 2 }
178 1
179 1 if((select / ITEMS_PER_SCREEN) != select_page) {
180 2 /* New page */
181 2 gfx_file_browser(FALSE);
182 2 }
183 1 else {
184 2 if(select < totdir)
185 2 order = select + 1;
186 2 else
187 2 order = select - totdir + 1;
188 2
189 2 if(!api_bSelectFile(order, SELECT_SET) || !api_bGetSelectFileInfo(&curr_finfo))
190 2 return;
191 2
192 2 fg_color = COLOR_SELECT;
193 2 //bg_color = 0xF75F;
194 2 gfx_file_line(select % ITEMS_PER_SCREEN);
195 2 }
196 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 997 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 3 10
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -