📄 fsgui_osd.c
字号:
return done;
}
int FSGUI_NormalNext(void)
{
int done = 0;
UINT16 dir_real_index = 0;
BYTE need_new_dir = FALSE;
UINT16 top = dir_set_top;
int temp = 0x01 << pFsJpeg->gifsFuncBtn ;
printf("##### FSGUI_NormalNext ---############--\n");
if (FSGUI_IsFolderEnd(pFsJpeg->fsnav_dir_now, PAGE_DOWN) == TRUE)//(pFsJpeg->fsnav_trk_now == pFsJpeg->last_mp3_entry)//the last file in current dir
{
need_new_dir = TRUE;
}
else //if (pFsJpeg->fsnav_trk_now < pFsJpeg->last_mp3_entry)//not change dir
{
dir_real_index = dir_set[top];
printf("\n-------not change dir---------\n");
do
{
if (FSGUI_IsFolderEnd(pFsJpeg->fsnav_dir_now, PAGE_DOWN) == TRUE)//(pFsJpeg->fsnav_trk_now >= (iso9660_dir[pFsJpeg->fsnav_dir_now].dir - 1))
{
need_new_dir = TRUE;
break;
}
pFsJpeg->fsnav_trk_now ++;
printf("file:%d------type:%d, name=%s, pFsJpeg->gifsFuncBtn:%d\n",
pFsJpeg->fsnav_trk_now,
FS_GetFileProperty(pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry,FILE_PROPERTY_CATEGORY),
FS_GetFileProperty(pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry,FILE_PROPERTY_NAME),
pFsJpeg->gifsFuncBtn);
//printf("file:%d------type:%d, name=%s, pFsJpeg->gifsFuncBtn:%d\n",pFsJpeg->fsnav_trk_now, iso9660_file[pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry].type,iso9660_file[pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry].name, pFsJpeg->gifsFuncBtn);
if (FS_GetFileProperty((pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry),FILE_PROPERTY_CATEGORY) == (pFsJpeg->gifsFuncBtn))
//if (iso9660_file[(pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry)].type == (pFsJpeg->gifsFuncBtn))
{
printf("\n### file FOUND---!!!!!!!!!!!\n");
if (pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)
{//when playing MP3, must refresh GUI
pFsJpeg->gifsState = FS_STATE_MP3;//after fs_MP3Mainloop, pFsJpeg->gifsState changed, must reset again.
if (pFsJpeg->fsnav_dir_now == dir_real_index)//update GUI only when the dir in GUI is same with playing dir
{
if ((info_mode == INFO_FULL) && (t_disp == 1))
show_info_banner_page();
else
FSGUI_OsdCmdDown();
}
FSGUI_ShowCurrentSelection((pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry));
}
break;
}
}while(1);
}
//change dir
if (need_new_dir == TRUE)
{
printf("--------change dir----------------\n");
do
{
if (top >= (pFsJpeg->iso9660_dir_cnt-1))
{
printf("############ all dir is played over --pFsJpeg->fsnav_trk_now:%d-\n",pFsJpeg->fsnav_trk_now);
top = 0;
//pFsJpeg->fsnav_dir_now = 0;
pFsJpeg->gbfsSlide = 0;
sys_cmd = 0;
pFsJpeg->gifsState = FS_STATE_LIST;
//fsGUI_RefreshMenu(1);
done = 1;
break;
}
top++;
dir_real_index = dir_set[top];
printf(" iso9660_dir[dir_real_index].type=%x, 0x01 << pFsJpeg->gifsFuncBtn :%d, pFsJpeg->gifsFuncBtn:%d, cnt :%d ,name :%s\n",iso9660_dir[dir_real_index].type, temp, pFsJpeg->gifsFuncBtn, dir_real_index, iso9660_dir[dir_real_index].name);
//printf("Compare result ;%x",((iso9660_dir[dir_real_index].type)& temp));
if (((iso9660_dir[dir_real_index].type) & (0x01 << pFsJpeg->gifsFuncBtn)))
{
//printf("dir-----pFsJpeg->fsnav_trk_now=%d,loc=%x\n", pFsJpeg->fsnav_trk_now,FS_GetFileProperty(pFsJpeg->fsnav_trk_now,FILE_PROPERTY_LOCATION));
////printf("dir-----pFsJpeg->fsnav_trk_now=%d,loc=%x\n", pFsJpeg->fsnav_trk_now,iso9660_file[pFsJpeg->fsnav_trk_now].loc);
// printf(" New dir entry iso9660_dir[dir_real_index].type=%x, cnt :%d ,name :%s\n",iso9660_dir[dir_real_index].type, dir_real_index, iso9660_dir[dir_real_index].name);
dir_set_top = top;
pFsJpeg->fsnav_dir_now = dir_real_index;
CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
pFsJpeg->fsnav_trk_now = FSGUI_FindFirstFileForDir(pFsJpeg->gifsFuncBtn, pFsJpeg->fsnav_dir_now);
if (pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)//when playing MP3, must refresh GUI
{
pFsJpeg->gifsState = FS_STATE_MP3;
FSGUI_RefreshMenu(1);
}
break;
}
}while(1);
}//if (need_new_dir == TRUE)
return done;
}
//UINT16 CurrentFiles[800];//record the index of subdir and files of current DIR
//some parameters explaination
//
//CurentFiles[] ---> record all the real index of subdir and files of a parent DIR
// NOTE:
// Here I treat the subdir as file. But their index is different.
//
// if subdir value = real index of subdir + SUBFOLDER_BASE
// if file value = real fill index in iso9660_file[]
//
//file_count_in_dir ---->total files count of a DIR
//
//file_index_in_dir ---> record the reordered index of files in CurentFiles[]
// main for UP/DOWN/LEFT/RIGHT to get correct file_current_in_page .
// range: 0 ~ file_count_in_dir
//
//fsnav_dir_now ---> real dir index value in iso9660_dir[]
// range: 0 ~ (ISO_DIR_MAX-1)
//
//
//file_current_in_page ---->file offset in current page.main for draw GUI.
// range: 0 ~ (ONEPAGE -1)
//
//file_array_in_page[] ----->record the indexs in current page, the value from CurentFiles[].
//
//
/*
*Func: fsGUI_Osd_init
*
*Description:
* init some parametres
*
*/
void FSGUI_Osdinit()
{
osd_init_mainmenu();
//osd_tog_region(0,OSD_ON);//
//osd_tog_region(1,OSD_ON);//
//osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
}
void FSGUI_OsdExitGUI()
{
//fsGUI_Osdinit();
system_state = SYSTEM_SETTING;
printf("### EXIT FSOSD GUI----\n");
//osd_init_mainmenu();
menu_level = 0;
menu_page = PLAYPAGE;
HL_menu = PARENT_MENU;
index_y1 = 0;
osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
//clear operation message
osd_draw_hline_region(0, region[1].osd_w*2-2, 0, 0, region[1].osd_h, 1);
show_mainmenu();
ShowPlayState(0);
}
/*
* Func: fsGUI_OsdMenu()
*
* Description:
*
* Show whole FSGUI
*
*/
void FSGUI_OsdMenu()
{
FSNav_MP3Init();
pFsJpeg->fsnav_dir_now = FSGUI_GetRootDir();
CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
printf("### fsGUI_osdMenu---\n");
pFsJpeg->gbfsSlide = 0;
//show GUI menu
FSGUI_RefreshMenu(0);
}
/*
* Description:
* if the playing dir change, refresh GUI.
*
* INPUT:
* mode : 0, show Dir content, HL in the first item.
* mode : 1, Show Dir content , HL according to the
* pFsJpeg->fsnav_trk_now
* pFsJpeg->first_mp3_entry
*
*/
void FSGUI_RefreshMenu(int mode)
{
int i = 0;
if (info_mode) //feeling 2004-05-26
exit_info_banner_page(0);
OSDGUI_Init();
//osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
OSDGUI_ShowDirInitPara();
FSGUI_GetOneDirContent(pFsJpeg->fsnav_dir_now);
//printf("In Refreshmenu pFsJpeg->fsnav_dir_now:%d,--\n",pFsJpeg->fsnav_dir_now);
if (mode == 1)
{
//Get the value of "pFsJpeg->file_index_in_dir"
for (i = 0; i < pFsJpeg->file_count_in_dir; i++)
{
if ((pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry) == CurrentFiles[i])
{
pFsJpeg->file_index_in_dir = i;
break;
}
}
}
//printf("####in Refresh FsJpeg->file_index_in_dir:%d file_current_in_page:%d-pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry-:%d \n",pFsJpeg->file_index_in_dir, pFsJpeg->file_current_in_page, pFsJpeg->fsnav_trk_now + pFsJpeg->first_mp3_entry);
OSDGUI_GetCurrentPage(PAGE_DOWN);
OSDGUI_DrawOnePage();
//printf("### value : %d--\n",(pFsJpeg->file_array_in_page[pFsJpeg->file_current_in_page]));
FSGUI_ShowCurrentSelection((pFsJpeg->file_array_in_page[pFsJpeg->file_current_in_page]));
FSGUI_OperationInit();
}
/*
* Description:
* after or before a operation, set initial state.
*
*/
void FSGUI_OperationInit(void)
{
#ifdef SURRORT_MP3_PREPLAY
FS_ClearPreplayFlag();
#endif//#ifdef SURRORT_MP3_PREPLAY
FSGUI_ShowOperationMsg();
}
UINT32 FSGUI_OsdCmdSelect()
{
UINT32 iRes = 0;
//printf("****** FSGUI SELECT******\n");
BYTE button_type;
UINT16 file_now;//file in a page
UINT16 file_total_now;//total file in array
button_type = OSDGUI_GetSelButtonType(pFsJpeg->file_current_in_page);
file_now = pFsJpeg->file_current_in_page;
file_total_now = pFsJpeg->file_array_in_page[file_now];
if(button_type == SUB_BUTTON)
FSGUI_ShowCurrentSelection(file_total_now);
else
FSGUI_OsdCmdRight();
iRes = 0x20000 | sys_cmd;
sys_cmd = 0;
return iRes;
}
UINT32 FSGUI_OsdCmdPlay()
{
UINT32 iRes = 0;
UINT16 real_file_index = 0;
UINT16 real_dir_index = 0;
UINT16 current_file_index = 0;
int i = 0;
//set play state.
play_state = VCD_STATE_MP3_FILELIST;
current_file_index = CurrentFiles[pFsJpeg->file_index_in_dir];
//play file and folder
if(current_file_index >= SUB_FOLDER_BASE)//if HL is folder,then get first file
{
real_dir_index = current_file_index - SUB_FOLDER_BASE;
//printf("000000iso9660_dir[%d].name:%s\n",real_dir_index,iso9660_dir[real_dir_index].name);
do
{
if(iso9660_dir[real_dir_index].dir > 0)
{
real_file_index = pFsJpeg->Dir_entry[real_dir_index];
break;
}
else
real_dir_index ++;
}while(1);
//printf("111111iso9660_dir[%d].name:%s\n",real_dir_index,iso9660_dir[real_dir_index].name);
}
else//HL is file ,real file
real_file_index = current_file_index;
pFsJpeg->gifsFuncBtn = FS_GetFileProperty(real_file_index,FILE_PROPERTY_CATEGORY);
//pFsJpeg->gifsFuncBtn = iso9660_file[real_file_index].type;
real_dir_index = FS_GetFileProperty(real_file_index,FILE_PROPERTY_PARENT_FOLDER);
//real_dir_index = iso9660_file[real_file_index].parent_dir;
if (real_dir_index == FSGUI_GetRootDir())//curent dir is root dir.
{ //main to show selection
FSGUI_GetOneDirContent(real_dir_index);
OSDGUI_GetCurrentPage(PAGE_DOWN);
}
//get dir_set[] index value
for (i = 0; i < pFsJpeg->iso9660_dir_cnt; i++)
{
if(dir_set[i] == real_dir_index)
{
dir_set_top = i;
break;
}
}
//get the current dir,trk
pFsJpeg->fsnav_dir_now = real_dir_index;
CalcDirFirstPage(pFsJpeg->fsnav_dir_now);
pFsJpeg->fsnav_trk_now = real_file_index - pFsJpeg->first_mp3_entry;
FSGUI_ShowCurrentSelection((pFsJpeg->file_array_in_page[pFsJpeg->file_current_in_page]));
//according to type,get some base value
if(pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)
{
pFsJpeg->gifsState = FS_STATE_MP3;
FSNav_MP3Init();
}
else if(pFsJpeg->gifsFuncBtn == FS_FUNC_JPEG)
{
//osd_init__();
pFsJpeg->gifsState = FS_STATE_JPEG;
cd_subtype = CDROM_JPEG;
pFsJpeg->g_nJpegMode = JPEG_NORMAL_MODE;
//close fsGUI
osd_tog_region(0,OSD_OFF);
osd_tog_region(1,OSD_OFF);
osd_draw_rect(0, 0, (MENU_BTN_XLEN+24)*16, BUTTON_Y_DIFF*8, 0);//clear the region.
pFsJpeg->gbfsSlide = 1;
}
//printf("IN fsGUI osd file:%d------type:%d, name=%s,parentdir :%s\n",
//pFsJpeg->fsnav_trk_now,
//FS_GetFileProperty(pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry, FILE_PROPERTY_CATEGORY),
//FS_GetFileProperty(pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry, FILE_PROPERTY_NAME),
//iso9660_dir[real_dir_index].name);
////printf("IN fsGUI osd file:%d------type:%d, name=%s,parentdir :%s\n",pFsJpeg->fsnav_trk_now, iso9660_file[pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry].type,iso9660_file[pFsJpeg->fsnav_trk_now+pFsJpeg->first_mp3_entry].name, iso9660_dir[real_dir_index].name);
iRes = CMD_FUNC | CMD_FUNC_PLAY;
return iRes;
}
UINT32 FSGUI_OsdCmdUp()
{
UINT32 iRes = 0;
iRes = OSDGUI_CmdUp();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -