📄 mediaplayeroutlook.c
字号:
bRet=FALSE;
else
{
iFirstDisplayNum=wAbosuluteHL - iRelativeHL;
iLastDisplayNum=(wTotalCount < iFirstDisplayNum+CONTENT_MAX_ITEM_COUNT-1) ? wTotalCount : (iFirstDisplayNum+CONTENT_MAX_ITEM_COUNT-1);
if( (iItem>=iFirstDisplayNum) && (iItem<=iLastDisplayNum) )
bRet=TRUE;
else
bRet=FALSE;
}
return bRet;
}
/********************************************************************/
// Refresh List scrolls status
void RefreshListScrolls(tPositionInfoInner *iPosInfoInner, tRefreshParam *iRefreshParam)
{
if(*(iRefreshParam->wListItemCount)>CONTENT_MAX_ITEM_COUNT) // list scroll exist
{
if(!bOutOfMPO)
{
if(ItemVisible(0, iPosInfoInner->wListHighlightIndex, iPosInfoInner->iListHighlightIndex, *(iRefreshParam->wListItemCount)))
DrawScrollBar(LEFT_TOP, MPO_NOTHING);
else
DrawScrollBar(LEFT_TOP, HIGHLIGHT_GRAY);
if(ItemVisible(*(iRefreshParam->wListItemCount)-1, iPosInfoInner->wListHighlightIndex, iPosInfoInner->iListHighlightIndex, *(iRefreshParam->wListItemCount)) )
DrawScrollBar(LEFT_BOT, MPO_NOTHING);
else
DrawScrollBar(LEFT_BOT, HIGHLIGHT_GRAY);
}
#ifdef _KARAOKE_ENABLE_
else
{
if(ItemVisible(0, iPosInfoInner->wListHighlightIndex, iPosInfoInner->iListHighlightIndex, *(iRefreshParam->wListItemCount)))
DrawScrollBar(LEFT_TOP, MPO_NOTHING);
else
DrawScrollBar(LEFT_TOP, HIGHLIGHT_NORMAL);
if(ItemVisible(*(iRefreshParam->wListItemCount)-1, iPosInfoInner->wListHighlightIndex, iPosInfoInner->iListHighlightIndex, *(iRefreshParam->wListItemCount)) )
DrawScrollBar(LEFT_BOT, MPO_NOTHING);
else
DrawScrollBar(LEFT_BOT, HIGHLIGHT_NORMAL);
}
#endif
}
else
{
DrawScrollBar(LEFT_TOP, MPO_NOTHING);
DrawScrollBar(LEFT_BOT, MPO_NOTHING);
}
}
/********************************************************************/
// Refresh List and Program scrolls status
void RefreshScrolls(tPositionInfoInner *iPosInfoInner, tRefreshParam *iRefreshParam)
{
RefreshListScrolls(iPosInfoInner, iRefreshParam);
}
/********************************************************************/
// Refresh Path Name
// Spec: if playing, show playing music's dirname + filename,
// if not, show highlight music's dirname
void RefreshPathName(tPositionInfoInner *iPosInfoInner, tRefreshParam *iRefreshParam)
{
DrawPath(iPosInfoInner->szFileName_xDir, HIGHLIGHT_NORMAL);
}
/********************************************************************/
// Clear List Playing Page Information
void ClearListPlayingInfo(tPositionInfoInner *iPosInfoInner)
{
iPosInfoInner->wListPlayingIndex_xDir=MPO_NOTHING;
iPosInfoInner->wListFileCount_xDir=0;
iPosInfoInner->wListItemCount_xDir=0;
strcpy(iPosInfoInner->szPathName_xDir, "");
strcpy(iPosInfoInner->szFileName_xDir, "");
}
/********************************************************************/
// Inner Position Initialize
void InitMediaPlayerPosition(tPositionInfoInner *iPosInfoInner)
{
if(!bInited)
{
iPosInfoInner->iPlayerFocused=MPO_NOTHING;
iPosInfoInner->iFocusObj=OBJ_LIST;
iPosInfoInner->iPrevFocusObj=OBJ_LIST;
iPosInfoInner->iPlayingObj=MPO_NOTHING;
iPosInfoInner->wListHighlightIndex=0;
iPosInfoInner->iListHighlightIndex=0;
iPosInfoInner->wListPlayingIndex=MPO_NOTHING;
iPosInfoInner->iListPlayingIndex=MPO_NOTHING;
iPosInfoInner->wListPlayingIndex_xDir=MPO_NOTHING;
ClearListPlayingInfo(iPosInfoInner);
iPosInfoInner->iCurLevel=0;
bInited=TRUE;
}
}
/*********************************************************************/
// Draw a full Media Player
// eg: 1. InitMediaPlayer(iDiscMediaType, iPlayerSelected);
// 2. DrawMediaPlayer(...);
void DrawMediaPlayer(tPositionInfoInner *iPosInfoInner, tRefreshParam *iRefreshParam )
{
ClearCanvas();
DrawMainSection();
RefreshStatusItem(iPosInfoInner, iRefreshParam);
DrawMediaTypeTabs();
RefreshListProgIcon(iPosInfoInner, iRefreshParam);
RefreshListContent(iRefreshParam->diListTable, -1, HIGHLIGHT_NORMAL);
RefreshProgrammedSign(iPosInfoInner);
RefreshScrolls(iPosInfoInner, iRefreshParam);
RefreshPathName(iPosInfoInner, iRefreshParam);
}
/*********************************************************************/
// Deactivite (remove highlight and playing) a full Media Player
void DeactivateMediaPlayer(tPositionInfoInner *iPosInfoInner, tRefreshParam *iRefreshParam )
{
if(iPosInfoInner->iListHighlightIndex!=MPO_NOTHING)
DrawListItemText(iPosInfoInner->iListHighlightIndex, iRefreshParam->diListTable[iPosInfoInner->iListHighlightIndex].szName, iRefreshParam->diListTable[iPosInfoInner->iListHighlightIndex].bType, HIGHLIGHT_NORMAL);
if(iPosInfoInner->iListPlayingIndex!=MPO_NOTHING)
DrawListItemSign(iPosInfoInner->iListPlayingIndex, FALSE, HIGHLIGHT_NORMAL);
}
/*********************************************************************/
// Initially activite (set highlight and playing) a full Media Player
void ActiviteMediaPlayer(tPositionInfoInner *iPosInfoInner, tRefreshParam *iRefreshParam )
{
if(iPosInfoInner->iListHighlightIndex!=MPO_NOTHING)
DrawListItemText(iPosInfoInner->iListHighlightIndex, iRefreshParam->diListTable[iPosInfoInner->iListHighlightIndex].szName, iRefreshParam->diListTable[iPosInfoInner->iListHighlightIndex].bType, HIGHLIGHT_FOCUS);
if(iPosInfoInner->iListPlayingIndex!=MPO_NOTHING)
if(iPosInfoInner->iListPlayingIndex>=0 && iPosInfoInner->iListPlayingIndex<CONTENT_MAX_ITEM_COUNT)
DrawListItemSign(iPosInfoInner->iListPlayingIndex, TRUE, HIGHLIGHT_NORMAL);
}
/********************************************************************/
// Draw MediaPlayer according to preset value, and Active it according to preset position
void ShowMediaPlayerAndActiveIt(tPositionInfoInner *iPosInfoInner, tRefreshParam *iRefreshParam)
{
bOutOfMPO=FALSE;
DrawMediaPlayer(iPosInfoInner, iRefreshParam);
ActiviteMediaPlayer(iPosInfoInner, iRefreshParam);
}
/********************************************************************/
// Process feed back case, draw media player outlook according to media player ap
void DrawMPOAccordingFeedback(tPositionInfoInner *iPosInfoInner, tRefreshParam *iRefreshParam)
{
// added for feedback and then init. it applys to VCD.
InitMediaPlayerPosition(iPosInfoInner);
// refresh content
if((iPosInfoInner->wListHighlightIndex-iPosInfoInner->iListHighlightIndex)==*(iRefreshParam->wListBeginIndex))
;
else
RefreshListContent(iRefreshParam->diListTable, iPosInfoInner->iListPlayingIndex, HIGHLIGHT_NORMAL);
//solve: in program list, playing. press prev in normal list, program list not refreshed
if((iPosInfoInner->wListHighlightIndex==*(iRefreshParam->wListHighlightIndex)) && ((iPosInfoInner->wListHighlightIndex-iPosInfoInner->iListHighlightIndex)==*(iRefreshParam->wListBeginIndex))) //highlight on same item
;
else
{
// clear old highlight
if((iPosInfoInner->iListHighlightIndex>=0) && (iPosInfoInner->iListHighlightIndex <= CONTENT_MAX_ITEM_COUNT-1))
DrawListItemText(iPosInfoInner->iListHighlightIndex, iRefreshParam->diListTable[iPosInfoInner->iListHighlightIndex].szName, iRefreshParam->diListTable[iPosInfoInner->iListHighlightIndex].bType, HIGHLIGHT_NORMAL);
// set new highlight
iPosInfoInner->wListHighlightIndex=*(iRefreshParam->wListHighlightIndex);
iPosInfoInner->iListHighlightIndex=*(iRefreshParam->wListHighlightIndex)-*(iRefreshParam->wListBeginIndex);
if((iPosInfoInner->iListHighlightIndex>=0) && (iPosInfoInner->iListHighlightIndex <= CONTENT_MAX_ITEM_COUNT-1))
{
#ifdef _KARAOKE_ENABLE_
if(bOutOfMPO && g_UiCrntSubFunc == UI_SUBFUNC_VOLUM)//changed by chena
DrawListItemText(iPosInfoInner->iListHighlightIndex, iRefreshParam->diListTable[iPosInfoInner->iListHighlightIndex].szName, iRefreshParam->diListTable[iPosInfoInner->iListHighlightIndex].bType, HIGHLIGHT_UNFOCUS);
else
#endif
DrawListItemText(iPosInfoInner->iListHighlightIndex, iRefreshParam->diListTable[iPosInfoInner->iListHighlightIndex].szName, iRefreshParam->diListTable[iPosInfoInner->iListHighlightIndex].bType, HIGHLIGHT_FOCUS);
}
}
if(iPosInfoInner->iListPlayingIndex==*(iRefreshParam->wListPlayingIndex)-*(iRefreshParam->wListBeginIndex)) //the same position
iPosInfoInner->wListPlayingIndex=*(iRefreshParam->wListPlayingIndex);
else
{
// clear form playing sign
if((iPosInfoInner->iListPlayingIndex>=0) && (iPosInfoInner->iListPlayingIndex <= CONTENT_MAX_ITEM_COUNT-1))
DrawListItemSign(iPosInfoInner->iListPlayingIndex, FALSE, HIGHLIGHT_NORMAL);
//set new playing sign
iPosInfoInner->iListPlayingIndex=*(iRefreshParam->wListPlayingIndex)-*(iRefreshParam->wListBeginIndex);
iPosInfoInner->wListPlayingIndex=*(iRefreshParam->wListPlayingIndex);
iPosInfoInner->wListPlayingIndex_xDir=iPosInfoInner->wListPlayingIndex;
if((iPosInfoInner->iListPlayingIndex>=0) && (iPosInfoInner->iListPlayingIndex <= CONTENT_MAX_ITEM_COUNT-1))
DrawListItemSign(iPosInfoInner->iListPlayingIndex, TRUE, HIGHLIGHT_NORMAL);
}
RefreshProgrammedSign(iPosInfoInner);
}
/********************************************************************/
// Save List Playing Page Information
void SaveListPlayingInfo(tPositionInfoInner *iPosInfoInner, tRefreshParam *iRefreshParam)
{
int i;
char strTemp[BUF_MAX];
iPosInfoInner->wListPlayingIndex_xDir=iPosInfoInner->wListPlayingIndex;
iPosInfoInner->wListFileCount_xDir=*(iRefreshParam->wListFileCount);
iPosInfoInner->wListItemCount_xDir=*(iRefreshParam->wListItemCount);
strcpy(iPosInfoInner->szPathName_xDir, iRefreshParam->szPathName);
strcpy(strTemp, iRefreshParam->szPathName);
strcat(strTemp, "\\");
for(i=0; (iRefreshParam->diListTable[iPosInfoInner->iListPlayingIndex].szName[i]!='-') && (iRefreshParam->diListTable[iPosInfoInner->iListPlayingIndex].szName[i+1]!='\0'); i++)
;
strcat(strTemp, iRefreshParam->diListTable[iPosInfoInner->iListPlayingIndex].szName+i+1);
strcpy(iPosInfoInner->szFileName_xDir, strTemp);
}
/********************************************************************/
// Play mode change
void PlayModeChange(tPositionInfoInner *iPosInfoInner, tRefreshParam *iRefreshParam)
{
if(*(iRefreshParam->wPlayMode)==UI_CORE_PAUSE)
{
DrawPlayback(*(iRefreshParam->wPlayMode), *(iRefreshParam->bIsSecondStop), *(iRefreshParam->bActionCtl), HIGHLIGHT_NORMAL);
}
else if (*(iRefreshParam->wPlayMode)==UI_CORE_STOP && *(iRefreshParam->bIsSecondStop))
{
// clear it
iPosInfoInner->iPlayingObj=MPO_NOTHING;
if((iPosInfoInner->iListPlayingIndex>=0) && (iPosInfoInner->iListPlayingIndex <= CONTENT_MAX_ITEM_COUNT-1))
DrawListItemSign(iPosInfoInner->iListPlayingIndex, FALSE, HIGHLIGHT_NORMAL);
iPosInfoInner->iListPlayingIndex=MPO_NOTHING;
iPosInfoInner->wListPlayingIndex=MPO_NOTHING;
ClearListPlayingInfo(iPosInfoInner);
// highlight jump to list item 0. need not show highlight, for move to first will do it
if(*(iRefreshParam->wListItemCount)==1)
;
else
DeactivateMediaPlayer(iPosInfoInner, iRefreshParam);
iPosInfoInner->iFocusObj=OBJ_LIST;
#ifdef _KARAOKE_ENABLE_
// if(!bOutOfMPO)//xianzhong for bug 223
#endif
{
// need not refresh track no, for move to first will do it
DrawPlayback(*(iRefreshParam->wPlayMode), *(iRefreshParam->bIsSecondStop), *(iRefreshParam->bActionCtl), HIGHLIGHT_NORMAL);
RefreshTrackTime(iPosInfoInner, iRefreshParam);
}
RefreshListProgIcon(iPosInfoInner, iRefreshParam);
RefreshPathName(iPosInfoInner, iRefreshParam);
}
else
{
if(iPosInfoInner->wListPlayingIndex_xDir!=MPO_NOTHING && iPosInfoInner->wListPlayingIndex==MPO_NOTHING)
;
else
SaveListPlayingInfo(iPosInfoInner, iRefreshParam);
#ifdef _KARAOKE_ENABLE_
// if(!bOutOfMPO)//xianzhong for bug 223
#endif
{
DrawPlayback(*(iRefreshParam->wPlayMode), *(iRefreshParam->bIsSecondStop), *(iRefreshParam->bActionCtl), HIGHLIGHT_NORMAL);
RefreshTrackTime(iPosInfoInner, iRefreshParam);
RefreshTrackNo(iPosInfoInner, iRefreshParam);
}
RefreshListProgIcon(iPosInfoInner, iRefreshParam);
RefreshPathName(iPosInfoInner, iRefreshParam);
}
}
/********************************************************************/
// Enter dir or Exit dir
void ChangeDir(tPositionInfoInner *iPosInfoInner, tRefreshParam *iRefreshParam, BOOL bEnterNotExit)
{
WORD iCurTrack, iTotalTrack;
MPO_ASSERT(iPosInfoInner->iCurLevel<C_DIRDEPTH);
// update list files
RefreshListContent(iRefreshParam->diListTable, MPO_NOTHING, HIGHLIGHT_NORMAL);
if(bEnterNotExit)
{
iPosInfoInner->iListCurLevelHighlight[iPosInfoInner->iCurLevel]=iPosInfoInner->iListHighlightIndex;
iPosInfoInner->iCurLevel++;
// highlight first one
iPosInfoInner->iListHighlightIndex=0;
iPosInfoInner->wListHighlightIndex=0;
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -