📄 file_brower.lst
字号:
C51 COMPILER V7.50 FILE_BROWER 08/18/2008 13:43:42 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE FILE_BROWER
OBJECT MODULE PLACED IN ..\output\output_bin\output_mp3\file_brower.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\code\ap_mp3\src\file_brower.c LARGE OPTIMIZE(9,SIZE) BROWSE INCDIR(..
-\..\..\bsp\include;..\..\code\ap_mp3\src\include;..\..\code\global;..\..\code\include) DEFINE(CONFIG_ASIC,dynamic_load)
-DEBUG OBJECTEXTEND PRINT(..\output\output_bin\output_mp3\file_brower.lst) OBJECT(..\output\output_bin\output_mp3\file_br
-ower.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 "mp3_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 void gfx_file_line(UINT8 line)
24 {
25 1 gfx_bg_rectangle(22, menu_pos[line], 96, 16);
26 1 if(curr_finfo.etype == ENTRY_TYPE_FILE)
27 1 bResShowPic(MUSICFIL,6,menu_pos[line]);
28 1 else
29 1 bResShowPic(DIR,6,menu_pos[line]);
30 1 gfx_filename(22, menu_pos[line]);
31 1 }
32
33 static void gfx_file_browser(BOOLEAN init)
34 {
35 1 BOOLEAN flag;
36 1 UINT8 data line;
37 1 UINT16 start, order;
38 1
39 1 if(init) {
40 2 //show background
41 2 bResShowPic(MENUTWO,0,0);
42 2 bResShowPic(MENU_TOP,0,140);
43 2 //show titiles
44 2 fg_color = COLOR_WHITE;
45 2 bg_color = 0x8B75;
46 2 //gfx_set_bg(Color_MENU_def);
47 2 ResShowMultiString(FILESS, tUserPreference.u8LanguageId,
48 2 list_str_x_def,123);
49 2 bg_color = 0xF75F;
50 2 gfx_set_bg(0xF75F);
51 2 }
52 1 else
C51 COMPILER V7.50 FILE_BROWER 08/18/2008 13:43:42 PAGE 2
53 1 bResShowPic(CLR_MTWO,0,0);
54 1
55 1 select_page = select / ITEMS_PER_SCREEN;
56 1 start = select_page * ITEMS_PER_SCREEN;
57 1
58 1 line = 0;
59 1 flag = 0;
60 1
61 1 if(totdir && start < totdir) {
62 2 /* If select is on file, we need to research DIRs. */
63 2 if(select >= totdir)
64 2 if(!api_bSearchDirInDir(SEARCH_MODE_CURRDIR))
65 2 return;
66 2
67 2 for(; line < ITEMS_PER_SCREEN && start < totdir; line++) {
68 3 if(start == select) {
69 4 fg_color = COLOR_SELECT;
70 4 order = select + 1;
71 4 flag = 1;
72 4 }
73 3 else
74 3 fg_color = COLOR_UNSELECT;
75 3 if(!api_bSelectDirectory(++start, SELECT_SET) ||
76 3 !api_bGetSelectFileInfo(&curr_finfo))
77 3 return;
78 3 gfx_file_line(line);
79 3 }
80 2 }
81 1
82 1 /* Some files need to display, we need to research */
83 1 //#if 0
84 1 if(totfile && (line < ITEMS_PER_SCREEN)) {
85 2 if(line) {
86 3 if(!api_bSearchFileInDir(SEARCH_MODE_CURRDIR, search_extstr))
87 3 return;
88 3 }
89 2
90 2 for(; line < ITEMS_PER_SCREEN && start < totitem; line++) {
91 3 fg_color = (start == select ? COLOR_SELECT : COLOR_UNSELECT);
92 3 if(!api_bSelectFile(++start - totdir, SELECT_SET) ||
93 3 !api_bGetSelectFileInfo(&curr_finfo))
94 3 return;
95 3 gfx_file_line(line);
96 3 }
97 2
98 2 if(flag) {
99 3 if(!api_bSearchDirInDir(SEARCH_MODE_CURRDIR))
100 3 return;
101 3 order = select + 1;
102 3 }
103 2 else
104 2 order = select - totdir + 1;
105 2 }
106 1 //#endif
107 1 if(api_bSelectFile(order, SELECT_SET)) {
108 2 api_bGetSelectFileInfo(&curr_finfo);
109 2 }
110 1 }
111
112 void screen_filebrowser_init(void)
113 {
114 1 gfx_file_browser(true);
C51 COMPILER V7.50 FILE_BROWER 08/18/2008 13:43:42 PAGE 3
115 1 screen_level = SCREEN_LEVEL_FILE_BROWSER;
116 1 }
117
118 void screen_filebrowser(UINT8 key)
119 {
120 1 INT8 dir;
121 1 UINT16 old_select, order;
122 1
123 1 switch(key) {
124 2 case KEY_MENU:
125 2 if(curr_finfo.etype == ENTRY_TYPE_FILE) {
126 3 api_bStop();
127 3 if(!api_bSelectFileOpen())
128 3 return;
129 3 screen_map(SCREEN_MP3);
130 3 }
131 2 else {
132 3 if(change_dir(&curr_finfo)) {
133 4 scan_dir_file(SEARCH_MODE_CURRDIR, search_extstr, 1);
134 4 gfx_file_browser(true);
135 4 }
136 3 }
137 2 return;
138 2 case KEY_NEXT:
139 2 dir = 1;
140 2 break;
141 2 case KEY_PREV:
142 2 dir = -1;
143 2 break;
144 2 case KEY_EOS:
145 2 deal_loop();
146 2 break;
147 2 default:
148 2 return;
149 2 }
150 1
151 1 fg_color = COLOR_UNSELECT;
152 1 gfx_file_line(select % ITEMS_PER_SCREEN);
153 1
154 1 old_select = select;
155 1 select += dir;
156 1
157 1 if(select >= totitem) {
158 2 if(dir > 0)
159 2 select = 0;
160 2 else
161 2 select = totitem - 1;
162 2 }
163 1
164 1 if(old_select < totdir && select >= totdir) {
165 2 if(!api_bSearchFileInDir(SEARCH_MODE_CURRDIR, search_extstr))
166 2 return;
167 2 }
168 1 else if(old_select >= totdir && select < totdir) {
169 2 if(!api_bSearchDirInDir(SEARCH_MODE_CURRDIR))
170 2 return;
171 2 }
172 1
173 1 if((select / ITEMS_PER_SCREEN) != select_page) {
174 2 /* New page */
175 2 gfx_file_browser(FALSE);
176 2 }
C51 COMPILER V7.50 FILE_BROWER 08/18/2008 13:43:42 PAGE 4
177 1 else {
178 2 if(select < totdir)
179 2 order = select + 1;
180 2 else
181 2 order = select - totdir + 1;
182 2
183 2 if(!api_bSelectFile(order, SELECT_SET) || !api_bGetSelectFileInfo(&curr_finfo))
184 2 return;
185 2
186 2 fg_color = COLOR_SELECT;
187 2 gfx_file_line(select % ITEMS_PER_SCREEN);
188 2
189 2 }
190 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 991 ----
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 + -