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

📄 mediaplayeroutlook.c

📁 M3355的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
        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 + -