⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file_brower.c

📁 智原mp3 SDK 开发包 与巨力 有mp3 wma ogg decoder
💻 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 + -