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