📄 flipshow.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 05/03/21 8:31p $ ****************/
/*************** $Revision: 2.0 $ ****************/
/*************** ****************/
/*************** Description : File Menu ****************/
/*************** Info Panel Module ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : Jacob Lin ****************/
/**********************************************************************/
#pragma NOAREGS
#define __FLIPSHOW_C_
#include "../general.h"
#include "../osdshow.h"
#include "flcomm.h"
#include "flctrl.h"
#include "flconfig.h"
#if (defined(FSMENU_INFO_PANEL) && defined(PLAYER_FLMENU))
static void vWord2Str(WORD wVal, BYTE *pbStr) large;
void vFlIpShowTimeRemain(BYTE bHour,BYTE bMin, BYTE bSec) large;
void vFlIpShowTotalTime(BYTE bHour,BYTE bMin, BYTE bSec) large;
void vFlIpShowBitrateNew(WORD wBitrate) large;
#ifdef FL_CHK_FOLDER_NS
static void vFlIpShowFolderIndex(WORD wCurr) large;
#endif
static void vFlIpShowRptType(BYTE bRptType) large;
static void vFlIpShowListType(BYTE bType) large;
static void vFlIpShowEq(void) large;
static code BYTE pbISOFastDispTbl[] = { 0, 2, 4, 8, 16, 32 };
static code BYTE pbISOSlowDispTbl[] = { 0, 2, 4, 8, 16 };
typedef struct sInfoPanelArea
{
WORD wPanelPos[2];
BYTE bTimeout[2];
};
#define OSD_TIMEOUT_SHORTER 4 //tanglushan 0929
#ifdef BBK_NEW_GUI
#define MAX_SET_HLP_MSG 11
#endif
static code struct sInfoPanelArea _rInfoPanelArea[IP_INFO_MAX] =
{
{ { OSD_POS_FS_PLAYTIME, OSD_POS_FS_PLAYTIME }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_FS_TOTALTIME, OSD_POS_FS_TOTALTIME }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_FS_TOTALTIME2, OSD_POS_FS_TOTALTIME2 }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_FS_OPTION, OSD_POS_FS_OPTION }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_FS_ZOOM, OSD_POS_FS_ZOOM }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_FS_SLIDE, OSD_POS_FS_SLIDE }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_FS_LIST_TYPE, OSD_POS_FS_INFO_BAR }, { OSD_NO_DISAPPEAR, OSD_TIMEOUT_SHORTER } },
{ { OSD_POS_FS_RPT_TYPE, OSD_POS_FS_INFO_BAR }, { OSD_NO_DISAPPEAR, OSD_TIMEOUT_SHORTER } },
{ { OSD_POS_FS_PLAYLIST, OSD_POS_FS_PLAYLIST }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_FS_ITEM_INFO, OSD_POS_FS_ITEM_INFO }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_AUTHOR, OSD_POS_AUTHOR }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_TITLE, OSD_POS_TITLE }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_ALBUM, OSD_POS_ALBUM }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_GENRE, OSD_POS_GENRE }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_BITRATE, OSD_POS_BITRATE }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
{ { OSD_POS_ID3_TEXT, OSD_POS_ID3_TEXT }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
#ifdef SHUFFLEMODE_DISPLAY //songchen 061031
{ { OSD_POS_SHUFFLEMODE, OSD_POS_SHUFFLEMODE }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } },
#endif
{ { OSD_POS_FS_ADD_TO_PLAYLIST, OSD_POS_FS_ADD_TO_PLAYLIST }, { OSD_NO_DISAPPEAR, OSD_NO_DISAPPEAR } }
};
////////////////////////////////////////////////////////////////////////////////
// Utility Function
static void vWord2Str(WORD wVal, BYTE *pbStr) large
{
wVal = wWRDToBCD(wVal);
if((wVal & 0xF000) != 0)
{
pbStr[0] = 4;
pbStr[1] = BCD_HI(bHiByte(wVal)) + '0';
pbStr[2] = BCD_LO(bHiByte(wVal)) + '0';
pbStr[3] = BCD_HI(bLoByte(wVal)) + '0';
pbStr[4] = BCD_LO(bLoByte(wVal)) + '0';
}
else if((wVal & 0x0F00) != 0)
{
pbStr[0] = 3;
pbStr[1] = BCD_LO(bHiByte(wVal)) + '0';
pbStr[2] = BCD_HI(bLoByte(wVal)) + '0';
pbStr[3] = BCD_LO(bLoByte(wVal)) + '0';
}
else if((wVal & 0x00F0) != 0)
{
pbStr[0] = 2;
pbStr[1] = BCD_HI(bLoByte(wVal)) + '0';
pbStr[2] = BCD_LO(bLoByte(wVal)) + '0';
}
else
{
pbStr[0] = 1;
pbStr[1] = BCD_LO(bLoByte(wVal)) + '0';
}
}
static void vFlIpDrawInfo(BYTE bInfo, WORD wMsg, BYTE *pbStr) large
{
BYTE bTime;
WORD wPos;
wPos = _rInfoPanelArea[bInfo].wPanelPos[_bFlIpState];
bTime = _rInfoPanelArea[bInfo].bTimeout[_bFlIpState];
if (pbStr)
{
vOsdPosShowArg(wPos, wMsg, bTime, pbStr);
}
else
{
vOsdPosShow(wPos, wMsg, bTime);
}
}
///////////////////////////////////////////////////////////////////////////////
//
static void vFlIpShowRptType(BYTE bRptType) large
{
WORD wMsg;
switch(bRptType)
{
case SV_REPEAT_NONE:
wMsg = OSD_MSG_MP3_REPEAT_OFF;
break;
case SV_REPEAT_ALL:
wMsg = OSD_MSG_MP3_REPEAT_ALL;
break;
case SV_REPEAT_TRACK:
wMsg = OSD_MSG_MP3_REPEAT_ONE;
break;
case SV_SINGLE:
wMsg = OSD_MSG_MP3_SINGLE;
break;
default:
// TODO: add the error handling.
return;
}
vFlIpDrawInfo(IP_INFO_RPT_TYPE, wMsg, 0);
}
void vFlIpShowEq(void) large
{
_wStartX = 152;
_wStartY = 360;
_wEndX = SPTM_LINE_WIDTH;
_wEndY = SPTM_LINE_HEIGHT;
vShowEqBar(FL_MENU_WB, OSD_SPTM_SGRID, TRUE, 13, 8);
}
void vFlIpShowTimeRemain(BYTE bHour,BYTE bMin, BYTE bSec) large
{
BYTE pbTime[6];
BYTE i;
vSetMsgCol4(FL_MENU_WB, FLCOL_RED, FLCOL_RED, FLCOL_RED, FLCOL_WHITE);
if(bSharedInfo(SI_MP3_TOTAL_TIME_HH) != 0xFF)
{
vCheckTimeValid3(bHour,bMin, bSec);
pbTime[0] = 5;
pbTime[1] = BCD_LO(bHour) + '0';
pbTime[2] = BCD_HI(bMin) + '0';
pbTime[3] = BCD_LO(bMin) + '0';
pbTime[4] = BCD_HI(bSec) + '0';
pbTime[5] = BCD_LO(bSec) + '0';
vFlIpDrawInfo(IP_INFO_PLAYTIME, OSD_MSG_TIME_RIGHT_3, pbTime);
}
vSetMsgCol4(FL_MENU_WB, 0, 0, 0, FLCOL_WHITE);
}
void vFlIpShowTotalTime(BYTE bHour,BYTE bMin, BYTE bSec) large
{
BYTE pbTime[6];
BYTE i;
vCheckTimeValid3(bHour, bMin, bSec);
vSetMsgCol4(FL_MENU_WB, FLCOL_RED, FLCOL_RED, FLCOL_RED, FLCOL_GRAY);
pbTime[0] = 5;
pbTime[1] = BCD_LO(bHour) + '0';
pbTime[2] = BCD_HI(bMin) + '0';
pbTime[3] = BCD_LO(bMin) + '0';
pbTime[4] = BCD_HI(bSec) + '0';
pbTime[5] = BCD_LO(bSec) + '0';
vFlIpDrawInfo(IP_INFO_TOTALTIME2, OSD_MSG_TIME_RIGHT_3, pbTime);
vSetMsgCol4(FL_MENU_WB, 0, 0, 0, FLCOL_WHITE);
}
void vFlIpShowBitrateNew(WORD wBitrate) large
{
BYTE pbBr[5];
#ifdef GUI_II_YWB
_wStartX = FS_BITRATE_X+ FS_INFO_STR_EXTRA ; //songchen 061015
_wStartY = FS_BITRATE_Y;
vOsdClearPos(FL_MENU_WB, 400, 30);
#endif
if (wBitrate != 0xFFFF)
{
vWord2Str(wBitrate, pbBr);
}
else
{
pbBr[0] = 1;
pbBr[1] = '0';
}
switch(pbBr[0])
{
case 4:
vOsdPosPasteArg(OSD_POS_BITRATE, OSD_MSG_FL_BITRATE4, pbBr, 0);
break;
case 3:
vOsdPosPasteArg(OSD_POS_BITRATE, OSD_MSG_FL_BITRATE3, pbBr, 0);
break;
case 2:
vOsdPosPasteArg(OSD_POS_BITRATE, OSD_MSG_FL_BITRATE2, pbBr, 0);
break;
case 1:
pbBr[2] = ' ';
vOsdPosPasteArg(OSD_POS_BITRATE, OSD_MSG_FL_BITRATE2, pbBr, 0);
break;
default:
break;
}
}
#ifdef SHUFFLEMODE_DISPLAY //songchen 061101
void vFlIpShowShuffleMode(BYTE bShufflemode) large
{
_wStartX = FS_SHUFFLEMODE_X + FS_INFO_STR_EXTRA ; //songchen 061015
_wStartY = FS_SHUFFLEMODE_Y;
vOsdClearPos(FL_MENU_WB, 400, 30);
if(bShufflemode == SV_SHUFFLE)
{
vOsdMsgPaste(FL_MENU_WB,OSD_MSG_ON);
}
else
{
vOsdMsgPaste(FL_MENU_WB,OSD_MSG_OFF);
}
}
#endif
static code WORD _pwFlHelpMessage[MAX_SET_HLP_MSG] = { // include OFF
/* 00 */ OSD_MSG_NULL, //OSD_MSG_HELP_LIST_TYPE,
/* 01 */ OSD_MSG_NULL, //OSD_MSG_HELP_SLIDE_TIME,
/* 02 */ OSD_MSG_NULL, //OSD_MSG_HELP_FILE_SORT,
/* 03 */ OSD_MSG_NULL, //OSD_MSG_HELP_REPEAT_MODE,
/* 04 */ OSD_MSG_NULL, //OSD_MSG_HELP_OPEN_PLAYLIST,
/* 05 */ OSD_MSG_NULL, //OSD_MSG_HELP_PLAY_INFO,
/* 06 */ OSD_MSG_NULL, //OSD_MSG_HELP_ENTER_FOLDER,
/* 07 */ OSD_MSG_NULL, //OSD_MSG_HELP_PRESS_PLAY,
/* 08 */ OSD_MSG_FL_ADD_TO_PLAYLIST,
/* 09 */ OSD_MSG_FL_DEL_FROM_PLAYLIST,
/* 10 */ OSD_MSG_SWITCH_OPTION
};
static void vFlIpShowAddToPlayList(BYTE bParam) large
{
WORD wMsg;
wMsg = _pwFlHelpMessage[bParam];
vSetMsgCol4(FL_MENU_WB, 0, 0, 0, FLCOL_YELLOW);
vFlIpDrawInfo(IP_INFO_ADD_TO_PLAY_LIST, wMsg, 0);
vSetMsgCol4(FL_MENU_WB, 0, 0, 0, FLCOL_WHITE);
}
static void vFlIpShowSlideTime(BYTE bParam) large
{
BYTE pbTime[3];
WORD wMsg;
bParam = bHEXToBCD(bParam);
if(BCD_HI(bParam) > 0)
{
pbTime[0] = 2;
pbTime[1] = BCD_HI(bParam) + '0';
pbTime[2] = BCD_LO(bParam) + '0';
wMsg = OSD_MSG_FL_SLIDE_TIME;
}
else
{
pbTime[0] = 1;
pbTime[1] = BCD_LO(bParam) + '0';
wMsg = OSD_MSG_FL_SLIDE_TIME1;
}
vFlIpDrawInfo(IP_INFO_SLIDE, wMsg, pbTime);
}
static void vFlIpShowListType(BYTE bType) large
{
WORD wMsg;
switch(bType)
{
case FLPARM_LIST_FOLDER:
wMsg = OSD_MSG_FL_FOLDER;
break;
case FLPARM_LIST_DISC:
wMsg = OSD_MSG_FL_DISC;
break;
case FLPARM_LIST_PLAYLIST:
wMsg = OSD_MSG_FL_PLAYLIST;
break;
case FLPARM_LIST_INVALID:
wMsg = OSD_MSG_MP3_NORMAL_MODE;
break;
}
vFlIpDrawInfo(IP_INFO_LIST_TYPE, wMsg, 0);
}
static void vFlIpShowItemInfo(void) large
{
vFlIpDrawInfo(IP_INFO_ITEM_INFO, OSD_MSG_FL_PLAY_INFO, 0);
}
static void vFlIpShowFileType(BYTE bType) large
{
WORD wMsg;
//wMsg = _pwFlFileTypeMeg[bType];
switch(bType)
{
//case NO_FILE:
// wMsg = OSD_MSG_PLAY_NONE; //songchenx message:no types.
// break;
case AUDIO_FILE:
wMsg = OSD_MSG_PLAY_MP3_ONLY;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -