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

📄 emc_epg.c

📁 关于嵌入式PCB板UI的程序
💻 C
📖 第 1 页 / 共 3 页
字号:
	clearEPGEventList();
#endif
	sttbx_Print("\niSelectedDay = %d,uCurrentDateForShow = %d\n",iSelectedDay,uCurrentDateForShow);
	/*---------------------------------------------------------------------------------*/
	/*iSelectedDay:			1-Mon,...,7-Sun	and this is changed when we press LEFT&RIGHT Key*/
	/*uCurrentDateForShow:	1-Mon,...,7-Sun	and this is always point to the current date              */
	/*---------------------------------------------------------------------------------*/
	if(iSelectedDay != uCurrentDateForShow)
	{
		drawEPGMenuDateBtnUnSelected(iSelectedDay-1);
		iSelectedDay = uCurrentDateForShow;
		drawEPGMenuDateBtnSelected(iSelectedDay-1);
	}
#if 0
	EMC_UpdateEPGCurrTimePeriod(-1);
	
	if(iEventItemOff<0 || iEventItemOff>=2)
		iEventItemOff = 0;
#endif
	ConvertTimeStampToTimeString(PFEvtInfoDataBlock[sProgIndex][0].startTime,time);
	ConvertTimeStampToTimeString(PFEvtInfoDataBlock[sProgIndex][0].startTime+PFEvtInfoDataBlock[sProgIndex][0].duration,&time[6]);
	/*display current page items*/
	time[5] = '-';
	time[11] = '\0';
	if(iPAL_Mode)
	{
		EMC_DrawTextRectangle(Handle_ProviewWindow, 
			EPG_SMALL_SCREEN_FRAME_X+42, EPG_SMALL_SCREEN_FRAME_Y+4, 158, 18,
			time,JLEFT,FONT_MYFONT,FALSE,
			whitecolor, dialogcolor,dialogcolor);
	}		
	EMC_DrawTSTextRectangle(Handle_ProviewWindow, 
		EPG_SMALL_SCREEN_FRAME_X+42, EPG_SMALL_SCREEN_FRAME_Y+4+(iPAL_Mode? 18: 0), 152, (iPAL_Mode? 18: 36),
		PFEvtInfoDataBlock[sProgIndex][0].eventName,JLEFT,FALSE,
		whitecolor, dialogcolor,dialogcolor);
#if 0	
	bRefreshEPGList = TRUE;
#endif
}

void msm_UpdateSkedProgInfo(void)
{
	if(bNeedUpdateSkedInfo)
	{
		drawEPGEventList(sProgIndex2bRetrieved,iSelectedDay,iCurrentTimePeriod);
		sttbx_Print("\n____________________msm_UpdateSkedProgInfo\n");
	}
}

void msm_ShowEPG(void)
{
	drawEPGMenu();
	msm_FeedbackMsg(cmd_Select);
}

void msm_ExitEPG(void)
{
	EMC_HideAllRegions();
	SRAVC_PositionVideoWindow(PRIMARY_DECODE,1, 0,0,0,0);
}

void msm_EPGProItemUp(void)
{
	MENU_DATA_STRUCT	*pstCurMenuData =  pstCurAvailableChannel;
	PROG_INFO_STRUCT 	*pstProgInfoTemp;
	BOOL bHighlight;
	short int sTempProgIndex = INVALID_LINK;
	int iTempProgNumber = 0;

	if(pstCurMenuData == NULL)
		return;
	
	if ( pstCurMenuData ->Prev != ( MENU_DATA_STRUCT * ) NULL )
	{
		bHighlight = 0;
		drawEPGItem(iChannelItemOff,(char *)pstCurMenuData ->aucData,bHighlight);
		--(iChannelItemOff);

		pstCurAvailableChannel = pstCurAvailableChannel->Prev;
		bHighlight = 1;
		drawEPGItem(iChannelItemOff,(char *)pstCurAvailableChannel ->aucData,bHighlight);
	}
	else
	{
		int	iItemOffTemp;
		if((channelPrevKeyFunc(iNoOfAvailableMenuElements,MAX_PROG_ITEMS_IN_EPG)) == INVALID_LINK)
			return;
		pstCurMenuData = pstAvailableMenuDataHead;
		pstCurAvailableChannel = pstAvailableMenuDataHead;
		/* calculate and print all the items available in the menu data list*/
		iItemOffTemp = 0;
		while(pstCurMenuData != NULL)
		{
			drawEPGItem(iItemOffTemp,(char *)pstCurMenuData ->aucData,(iItemOffTemp==0)?1:0);
			pstCurMenuData = pstCurMenuData->Next;
			iItemOffTemp++;
		}

	}
}

void msm_EPGProItemDown(void)
{
	MENU_DATA_STRUCT	*pstCurMenuData =  pstCurAvailableChannel;
	PROG_INFO_STRUCT 	*pstProgInfoTemp;
	BOOL bHighlight;
	short int sTempProgIndex = INVALID_LINK;
	int iTempProgNumber = 0;

	if(pstCurMenuData == NULL)
		return;

	if ( pstCurMenuData ->Next!= ( MENU_DATA_STRUCT * ) NULL )
	{
		bHighlight = 0;
		drawEPGItem(iChannelItemOff,(char *)pstCurMenuData ->aucData,bHighlight);
		++(iChannelItemOff);

		pstCurAvailableChannel = pstCurAvailableChannel->Next;
		bHighlight = 1;
		drawEPGItem(iChannelItemOff,(char *)pstCurAvailableChannel ->aucData,bHighlight);
	}
	else
	{
		int	iItemOffTemp;

		if(channelNextKeyFunc(iNoOfAvailableMenuElements) == INVALID_LINK)
			return;
		pstCurMenuData = pstAvailableMenuDataHead;
		pstCurAvailableChannel = pstAvailableMenuDataTail;
		
		/*calculate and print all the items available in the menu data list*/
		iItemOffTemp = 0;
		while(pstCurMenuData != NULL)
		{
			if(pstCurMenuData ->Next == NULL)
			{
				drawEPGItem(iItemOffTemp,(char *)pstCurMenuData ->aucData,1);
				break;
			}
			drawEPGItem(iItemOffTemp,(char *)pstCurMenuData ->aucData,0);
			pstCurMenuData = pstCurMenuData->Next;
			iItemOffTemp++;
		}

	}
}

void msm_EPGProItemSelect(void)
{
	MENU_DATA_STRUCT	*pstCurMenuData =  pstCurAvailableChannel;
	PROG_INFO_STRUCT 	*pstProgInfoTemp;
	BOOL bHighlight;
	short int sTempProgIndex = INVALID_LINK;
	int iTempProgNumber = 0;
	int iCurrDate = 0;

	if(pstCurMenuData == NULL)	/*wuhan added,07-06-2005*/
		return;
	
	setUpdateTips();
	//iCurrentProgramNo=iItemOff + 1;
	/*msm_ChannelDisplay(act_DirChNum); Wuhan added, 05-20-2005*/
	//DisplayProgram();
	sTempProgIndex = sProgIndex;	/*Wuhan added, 07-03-2005*/
	iTempProgNumber = iProgNumber;	/*Wuhan added, 07-03-2005*/
	channelSelectKeyFunc(iChannelItemOff,iNoOfAvailableMenuElements);
	/*AL05 Start*/
	sProgIndex2bRetrieved = sProgIndex;
	iProgNumberBeingRetrieved = iProgNumber;
	iCurrentProgramNo = iProgNumber;
	/*AL05 End*/
	
	//iCurrentProgramNo = iProgNumber;
	/*Wuhan added,06-22-2005*/
	//if ( ( pstProgInfoTemp = SRDBE_PositionProgInfoByUserProgramNo ( iCurrentProgramNo ) ) == NULL )
	/*Wuhan added, 07-03-2005*/
	if ( ( pstProgInfoTemp = SRDBE_CurProgInfo(&iCurrentProgramNo)) == NULL )
	{
		sttbx_Print("cannot get current program!!!\n");
	}
	else
	{
		clearEPGEventList();
		iEventItemOff = 0;	/*reset the event list selected item to 0,07-04-2005*/
		msm_NewChannelDisplay(cmd_DirChNum); 
	}
	sProgIndex = sTempProgIndex;	
	iProgNumber = iTempProgNumber;		

	/*Added by Allen,03-10-2006*/
	//sttbx_Print("\n@@@sProgIndex2bRetrieved = %d,eventCount = %d\n",sProgIndex2bRetrieved,SkedEvtInfoDataBlock[sProgIndex2bRetrieved].eventCount);
	sttbx_Print("\n@@@ SkedEvtInfoDataBlock[%d].eventcount = %d\n",sProgIndex2bRetrieved,SkedEvtInfoDataBlock[sProgIndex2bRetrieved].eventCount);
	drawEPGMenuDateBtnUnSelected(iSelectedDay-1);
	if(SkedEvtInfoDataBlock[sProgIndex2bRetrieved].eventCount!=0)
	{
		iSelectedDay = ConvertUTCDateToWeek(SkedEvtInfoDataBlock[sProgIndex2bRetrieved].events[0].startTime);/*1-Mon,...,7-Sun*/
		if(SkedEvtInfoDataBlock[sProgIndex2bRetrieved].eventsDateIndex[iSelectedDay].HeadEventIndex<SkedEvtInfoDataBlock[sProgIndex2bRetrieved].eventsDateIndex[iSelectedDay].TailEventIndex)
		{
			drawEPGEventList(sProgIndex2bRetrieved,iSelectedDay,0);
		}
	}
	else
	{
		iSelectedDay = uCurrentDateForShow;
		iCurrentTimePeriod = 0;
		bNeedUpdateSkedInfo = TRUE;
	}
	drawEPGMenuDateBtnSelected(iSelectedDay-1);
}

void msm_EPGEventItemUp(void)
{
	int i;
	SERVICE_EPG_INFO *astEventInfoTable = &SkedEvtInfoDataBlock[sProgIndex2bRetrieved];
	
	if(iEventItemOff == astEventInfoTable->eventsDateIndex[iSelectedDay].HeadEventIndex)
		return;
	if(iCurrentTimePeriod != 0 &&  iEventItemOff == astEventInfoTable->eventsDateIndex[iSelectedDay].HourIndex[iCurrentTimePeriod])
	{
		/*Need exchange the time period*/
		clearEPGEventList();
		drawEPGEventList(sProgIndex2bRetrieved,iSelectedDay,--iCurrentTimePeriod);
	}
	else if(iEventItemOff == iTopEventItem)
	{
		/*Need Page-Up*/
		--iEventItemOff;
		--iTopEventItem;
		for(i=0;i<MAX_EVENT_ITEMS_IN_EPG;i++)
			drawEPGEventItem(i,&(astEventInfoTable->events[iTopEventItem+i]),i==0? TRUE: FALSE);
	}
	else
	{
		/*Normal*/
		drawEPGEventItem(iEventItemOff-iTopEventItem,
				&(astEventInfoTable->events[iEventItemOff]),FALSE);
		--iEventItemOff;
		drawEPGEventItem(iEventItemOff-iTopEventItem,
				&(astEventInfoTable->events[iEventItemOff]),TRUE);
		
	}
	showSkedDescription(sProgIndex2bRetrieved);
}

void msm_EPGEventItemDown(void)
{
	int i;
	SERVICE_EPG_INFO *astEventInfoTable = &SkedEvtInfoDataBlock[sProgIndex2bRetrieved];

	sttbx_Print("\n++++++iCurrentTimePeriod = %d,iEventItemOff = %d,Tail = %d\n",iCurrentTimePeriod,iEventItemOff,astEventInfoTable->eventsDateIndex[iSelectedDay].TailEventIndex);

	if(iEventItemOff == astEventInfoTable->eventsDateIndex[iSelectedDay].TailEventIndex)
		return;
	if(iCurrentTimePeriod != 7 && iEventItemOff == astEventInfoTable->eventsDateIndex[iSelectedDay].HourIndex[iCurrentTimePeriod+1]-1)
	{
		/*Need exchange the time period*/
		clearEPGEventList();
		drawEPGEventList(sProgIndex2bRetrieved,iSelectedDay,++iCurrentTimePeriod);
	}
	else if(iEventItemOff == iTopEventItem+MAX_EVENT_ITEMS_IN_EPG-1)
	{
		/*Need Page-Down*/
		++iEventItemOff;
		++iTopEventItem;
		for(i=0;i<MAX_EVENT_ITEMS_IN_EPG;i++)
			drawEPGEventItem(i,&(astEventInfoTable->events[iTopEventItem+i]),i==MAX_EVENT_ITEMS_IN_EPG-1? TRUE: FALSE);
		
	}
	else
	{
		/*Normal*/
		drawEPGEventItem(iEventItemOff-iTopEventItem,
			&(astEventInfoTable->events[iEventItemOff]),FALSE);
		++iEventItemOff;
		drawEPGEventItem(iEventItemOff-iTopEventItem,
			&(astEventInfoTable->events[iEventItemOff]),TRUE);
	}
	showSkedDescription(sProgIndex2bRetrieved);
}

void msm_EPGChangeDate(int iClientCode)
{
	MENU_DATA_STRUCT	*pstCurMenuData =  pstCurAvailableChannel;
	PROG_INFO_STRUCT 	*pstProgInfoTemp;
	BOOL bHighlight;
	short int sTempProgIndex = INVALID_LINK;
	int iTempProgNumber = 0;

	if(pstCurMenuData == NULL ||iSelectedDay <= 0)
		return;

	clearEPGEventList();
	drawEPGMenuDateBtnUnSelected(iSelectedDay-1);
	if(iClientCode == 0/*rc_kKeyArrowLeft*/)
		iSelectedDay = (iSelectedDay == 1) ? 7 : iSelectedDay - 1;
	else
		iSelectedDay = (iSelectedDay == 7) ? 1 : iSelectedDay + 1;
	drawEPGMenuDateBtnSelected(iSelectedDay-1);	
	iCurrentTimePeriod = 0;
	updateEPGCurrTimePeriod(iCurrentTimePeriod);
	drawEPGEventList(sProgIndex2bRetrieved,iSelectedDay,iCurrentTimePeriod);
}

/*------------------------------------EOF---------------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -