📄 file_brower.c
字号:
/******************
* file_brower.c
******************/
#include <string.h>
#include "api.h"
#include "lcd.h"
#include "key.h"
#include "common.h"
#include "ap_common.h"
#include "display.h"
#include "ui_pop_up_list.h"
#include "prefer.h"
#include "res_show.h"
#include "res.h"
#include "movie_utile.h"
#define MAINMENU_SELECT_MAX 6
#define ITEMS_PER_SCREEN 6
UINT8 select_page, select_base, select_max;
//extern code IMAGE image_table[];
void gfx_file_line(UINT8 line)
{
gfx_bg_rectangle(22, menu_pos[line], 96, 16);
lcd_max_str = 12;
if(curr_finfo.etype == ENTRY_TYPE_FILE) {
bResShowPic(MTVFILE,6,menu_pos[line]);
}
else
bResShowPic(DIR,6,menu_pos[line]);
gfx_filename(22, menu_pos[line]);
}
static void gfx_file_browser(BOOLEAN init)
{
BOOLEAN flag;
UINT8 data line;
UINT16 start, order;
if(init) {
//show background
bResShowPic(MENUTWO,0,0);
bResShowPic(MENU_TOP,0,140);
//show titiles
fg_color = COLOR_WHITE;
bg_color = 0x8B75;;
//gfx_set_bg(Color_MENU_def);
ResShowMultiString(FILESS, tUserPreference.u8LanguageId,
list_str_x_def,123);
bg_color = 0xF75F;
gfx_set_bg(0xF75F);
}
else
bResShowPic(CLR_MTWO,0,0);
select_page = select / ITEMS_PER_SCREEN;
start = select_page * ITEMS_PER_SCREEN;
line = 0;
flag = 0;
if(totdir && start < totdir) {
/* If select is on file, we need to research DIRs. */
if(select >= totdir)
if(!api_bSearchDirInDir(SEARCH_MODE_CURRDIR))
return;
for(; line < ITEMS_PER_SCREEN && start < totdir; line++) {
if(start == select) {
fg_color = COLOR_SELECT;
order = select + 1;
flag = 1;
}
else
fg_color = COLOR_UNSELECT;
if(!api_bSelectDirectory(++start, SELECT_SET) ||
!api_bGetSelectFileInfo(&curr_finfo))
return;
gfx_file_line(line);
}
}
/* Some files need to display, we need to research */
if(totfile && (line < ITEMS_PER_SCREEN)) {
if(line) {
if(!api_bSearchFileInDir(SEARCH_MODE_CURRDIR, search_extstr))
return;
}
for(; line < ITEMS_PER_SCREEN && start < totitem; line++) {
fg_color = (start == select ? COLOR_SELECT : COLOR_UNSELECT);
if(!api_bSelectFile(++start - totdir, SELECT_SET) ||
!api_bGetSelectFileInfo(&curr_finfo))
return;
gfx_file_line(line);
}
if(flag) {
if(!api_bSearchDirInDir(SEARCH_MODE_CURRDIR))
return;
order = select + 1;
}
else
order = select - totdir + 1;
}
if(api_bSelectFile(order, SELECT_SET)) {
api_bGetSelectFileInfo(&curr_finfo);
}
}
void screen_filebrowser_init(void)
{
gfx_file_browser(true);
screen_level = SCREEN_LEVEL_FILE_BROWSER;
}
void screen_filebrowser(UINT8 key)
{
INT8 dir;
UINT16 old_select, order;
switch(key) {
case KEY_MENU:
if(curr_finfo.etype == ENTRY_TYPE_FILE) {
api_bStop();
if(!api_bSelectFileOpen())
return;
screen_map(SCREEN_MOVIE);
}
else {
if(change_dir(&curr_finfo)) {
scan_dir_file(SEARCH_MODE_CURRDIR, search_extstr, 1);
gfx_file_browser(true);
}
}
return;
case KEY_NEXT:
dir = 1;
break;
case KEY_PREV:
dir = -1;
break;
case KEY_EOS:
deal_loop();
break;
default:
return;
}
fg_color = COLOR_UNSELECT;
//bg_color = 0xF75F;
gfx_file_line(select % ITEMS_PER_SCREEN);
old_select = select;
select += dir;
if(select >= totitem) {
if(dir > 0)
select = 0;
else
select = totitem - 1;
}
if(old_select < totdir && select >= totdir) {
if(!api_bSearchFileInDir(SEARCH_MODE_CURRDIR, search_extstr))
return;
}
else if(old_select >= totdir && select < totdir) {
if(!api_bSearchDirInDir(SEARCH_MODE_CURRDIR))
return;
}
if((select / ITEMS_PER_SCREEN) != select_page) {
/* New page */
gfx_file_browser(FALSE);
}
else {
if(select < totdir)
order = select + 1;
else
order = select - totdir + 1;
if(!api_bSelectFile(order, SELECT_SET) || !api_bGetSelectFileInfo(&curr_finfo))
return;
fg_color = COLOR_SELECT;
//bg_color = 0xF75F;
gfx_file_line(select % ITEMS_PER_SCREEN);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -