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

📄 emc_channelmanage.c

📁 关于嵌入式PCB板UI的程序
💻 C
📖 第 1 页 / 共 4 页
字号:
	}
	else
	{
		changeToTransManage();
	}
	/*****************Show Dialog Window***********************/
	EMC_ShowRegion();
	
}


void msm_ShowChannelManage(void)
{
	drawChannelManagementWindow();
}

void msm_ChannelManageModeExchange(void)
{	
	if(bChannelManage)
	{
		bChannelManage = FALSE;
		changeToTransManage();
	}
	else
	{
		bChannelManage = TRUE;
		changeToChManage();
	}
}

void msm_ChannelManageItemUp(void)
{	
	BOOL HIGHLIGHT;
	MENU_DATA_STRUCT *pstCurMenuData;
	
	if(bChannelManage)
		pstCurMenuData = pstCurAvailableChannel;
	else
		pstCurMenuData = pstCurTransponder;
	
	if(pstCurMenuData == NULL)
		return;
	if ( pstCurMenuData ->Prev != ( MENU_DATA_STRUCT * ) NULL )
	{
		/*the current chosen item is not at the beginning of menu items that on screen*/

		HIGHLIGHT = 0;
		if(bChannelManage)
		{
			drawChManageItem(iChOffInChManagement,(char *)pstCurMenuData ->aucData,HIGHLIGHT);
			--(iChOffInChManagement);

			pstCurAvailableChannel = pstCurAvailableChannel->Prev;
			HIGHLIGHT = 1;
			drawChManageItem(iChOffInChManagement,(char *)pstCurAvailableChannel ->aucData,HIGHLIGHT);
		}				
		else
		{/*transponder*/

			HIGHLIGHT = 0;
			drawTransManageItem(iTransOffInChManagement,(char *)pstCurMenuData ->aucData,HIGHLIGHT);
			--(iTransOffInChManagement);

			pstCurTransponder= pstCurTransponder->Prev;
			HIGHLIGHT = 1;
			drawTransManageItem(iTransOffInChManagement,(char *)pstCurTransponder ->aucData,HIGHLIGHT);

		}

	}
	else
	{
		int	iItemOffTemp;
		if(bChannelManage)
		{
			if((channelPrevKeyFunc(iNoOfAvailableMenuElements,MAX_ITEMS_IN_CHANNELMANAGEMENT)) == INVALID_LINK)
				return;
			pstCurMenuData = pstAvailableMenuDataHead;
			pstCurAvailableChannel = pstAvailableMenuDataHead;
		}		
		else
		{
			if((transponderPrevKeyFunc(iNoOfTransponderMenuElements, MAX_ITEMS_IN_CHANNELMANAGEMENT)) == INVALID_LINK)
				return;
			pstCurMenuData = pstTransponderMenuDataHead;
			pstCurTransponder = pstTransponderMenuDataHead;

		}

		iItemOffTemp = 0;
		while(pstCurMenuData != NULL)
		{
			if(bChannelManage)
				drawChManageItem(iItemOffTemp,(char *)pstCurMenuData ->aucData,(iItemOffTemp==0)?1:0);
			else
				drawTransManageItem(iItemOffTemp,(char *)pstCurMenuData ->aucData,(iItemOffTemp==0)?1:0);
			pstCurMenuData = pstCurMenuData->Next;
			iItemOffTemp++;
		}
	}
}

void msm_ChannelManageItemDown(void)
{
	BOOL HIGHLIGHT;
	MENU_DATA_STRUCT *pstCurMenuData;
	
	if(bChannelManage)
		pstCurMenuData = pstCurAvailableChannel;
	else
		pstCurMenuData = pstCurTransponder;
	if(pstCurMenuData == NULL)
		return;

	if ( pstCurMenuData ->Next!= ( MENU_DATA_STRUCT * ) NULL )
	{
		/*the current chosen item is not at the end of menu items that on screen*/
		HIGHLIGHT = 0;
		if(bChannelManage)
		{
			drawChManageItem(iChOffInChManagement,(char *)pstCurMenuData ->aucData,HIGHLIGHT);
			++(iChOffInChManagement);

			pstCurAvailableChannel = pstCurAvailableChannel->Next;
			HIGHLIGHT = 1;
			drawChManageItem(iChOffInChManagement,(char *)pstCurAvailableChannel ->aucData,HIGHLIGHT);
		}		
		else
		{/*transponder*/
			HIGHLIGHT = 0;
			drawTransManageItem(iTransOffInChManagement,(char *)pstCurMenuData ->aucData,HIGHLIGHT);
			++(iTransOffInChManagement);

			pstCurTransponder = pstCurTransponder->Next;
			HIGHLIGHT = 1;
			drawTransManageItem(iTransOffInChManagement,(char *)pstCurTransponder->aucData,HIGHLIGHT);
		}
		
	}
	else
	{
		/*the current chosen item is at end of menu items that on screen*/
		int	iItemOffTemp;

		if(bChannelManage)
		{
			if(channelNextKeyFunc(iNoOfAvailableMenuElements) == INVALID_LINK)
				return;
			pstCurMenuData = pstAvailableMenuDataHead;
			pstCurAvailableChannel = pstAvailableMenuDataTail;
		}		
		else
		{/*transponder*/
			if(transponderNextKeyFunc(iNoOfTransponderMenuElements) == INVALID_LINK)
				return;
			pstCurMenuData = pstTransponderMenuDataHead;
			pstCurTransponder= pstTransponderMenuDataTail;
		}
		
		iItemOffTemp = 0;
		while(pstCurMenuData != NULL)
		{
			if(pstCurMenuData ->Next == NULL)
			{
				if(bChannelManage)
					drawChManageItem(iItemOffTemp,(char *)pstCurMenuData ->aucData,1);
				else
					drawTransManageItem(iItemOffTemp,(char *)pstCurMenuData ->aucData,1);

				break;
			}

			if(bChannelManage)
				drawChManageItem(iItemOffTemp,(char *)pstCurMenuData ->aucData,0);
			else
				drawTransManageItem(iItemOffTemp,(char *)pstCurMenuData ->aucData,0);

			pstCurMenuData = pstCurMenuData->Next;
			iItemOffTemp++;
		}

	}
}

void msm_ChannelManageItemSelect(void)
{
	int iProgNumberTemp;
	short int sProgIndexTemp;
	
	if(bChannelManage)
	{
		sttbx_Print("\niChOffInChManagement = %d , iNoOfAvailableMenuElements = %d\n",iChOffInChManagement,iNoOfAvailableMenuElements);
		sProgIndexTemp = sProgIndex;
		iProgNumberTemp = iProgNumber;
		channelSelectKeyFunc(iChOffInChManagement,iNoOfAvailableMenuElements);
		sProgIndex2bRetrieved = sProgIndex;
		iProgNumberBeingRetrieved = iProgNumber;
		iCurrentProgramNo = iProgNumber;
		sProgIndex = sProgIndexTemp;
		iProgNumber = iProgNumberTemp;
		//msm_ChannelDisplay(act_DirChNum); 
		msm_NewChannelDisplay(cmd_DirChNum); 
	}					

}

void msm_SetChannelFavorate(void)
{
	int iProgNumberTemp;
	short int sProgIndexTemp;
	MENU_DATA_STRUCT *pstCurMenuData;
	
	if(iNoOfAvailableMenuElements <= 0)
		return;
	if(bChannelManage)
	{
		sProgIndexTemp = sProgIndex;
		iProgNumberTemp = iProgNumber;
		channelSelectKeyFunc(iChOffInChManagement,iNoOfAvailableMenuElements);
		if(!SRDBE_IsProgFavorite(iProgNumber))
		{
			SRDBE_SetProgFavorite(iProgNumber);
			pstCurAvailableChannel->aucData[INDEX_FAVORITE_FLAG] = '1';
			drawFavoriteFlagInChManage(iChOffInChManagement,1,TRUE);
		}
		else
		{
			SRDBE_ClrProgFavorite(iProgNumber);
			pstCurAvailableChannel->aucData[INDEX_FAVORITE_FLAG] = '0';
			drawFavoriteFlagInChManage(iChOffInChManagement,1,FALSE);
		}
		sProgIndex = sProgIndexTemp;
		iProgNumber = iProgNumberTemp;
	}

}

void msm_LockChannelItem(void)
{
	int iProgNumberTemp;
	short int sProgIndexTemp;
	MENU_DATA_STRUCT *pstCurMenuData;

	/*Lock the Prog. selected*/
	if(iNoOfAvailableMenuElements <= 0)
		return;
	if(bChannelManage)
	{
		sProgIndexTemp = sProgIndex;
		iProgNumberTemp = iProgNumber;
		channelSelectKeyFunc(iChOffInChManagement,iNoOfAvailableMenuElements);
		if(!SRDBE_IsProgLocked(iProgNumber))
		{
			SRDBE_LockProg(iProgNumber);
			pstCurAvailableChannel->aucData[INDEX_LOCKED_FLAG] = '1';
			drawLockedFlagInChManage(iChOffInChManagement,1,TRUE);
		}
		else
		{
			SRDBE_UnlockProg(iProgNumber);
			pstCurAvailableChannel->aucData[INDEX_LOCKED_FLAG] = '0';
			drawLockedFlagInChManage(iChOffInChManagement,1,FALSE);
		}
		sProgIndex = sProgIndexTemp;
		iProgNumber = iProgNumberTemp;
	}

}

void msm_DeleteChannelItem(void)
{
	if(bChannelManage)
	{
		if(iNoOfAvailableMenuElements<=0)
			return;
	}
	else
	{
		if(iNoOfTransponderMenuElements<=0)
			return;
	}
	
	/* when come here:  delete key pressed, and the confirm window is no shown */
	currMenuState = DVB_CONFIRM_DEL;
	
	/*	show confirm window	*/
	drawDeleteConfirmWindow(TRUE);
			

}

void msm_ChannelManageExit(void)
{
	EMC_HideAllRegions();
}

void msm_CancelChannelDelete(void)
{
	int i;
	MENU_DATA_STRUCT *pMenuToDraw = NULL;

	drawDeleteConfirmWindow(FALSE);
	if(bChannelManage)
	{
		pMenuToDraw = pstAvailableMenuDataHead;
		for(i = 0;i<iNoOfAvailableMenuElements;i++)
		{
			drawChManageItem(i,(char*)(pMenuToDraw->aucData),(i == iChOffInChManagement)?1:0);
			pMenuToDraw=pMenuToDraw->Next;
		}
		for(i = iNoOfAvailableMenuElements; i<MAX_ITEMS_IN_CHANNELMANAGEMENT; i++)
		{
			ClearChManageItemArea(i);
		}
		
	}
	else
	{
		pMenuToDraw = pstTransponderMenuDataHead;
		for(i = 0;i<iNoOfTransponderMenuElements;i++)
		{
			drawTransManageItem(i,(char*)(pMenuToDraw->aucData),(i == iTransOffInChManagement)?1:0);
			pMenuToDraw=pMenuToDraw->Next;
		}

		for(i = iNoOfTransponderMenuElements; i< MAX_ITEMS_IN_CHANNELMANAGEMENT; i++)
		{
			ClearTransManageItemArea(i);
		}

	}

}

void msm_PerformChannelDelete(void)
{
	if(bChannelManage)
	{									
		if(iNoOfAvailableMenuElements <= 0)
			return;
		
		channelSelectKeyFunc(iChOffInChManagement,iNoOfAvailableMenuElements);
		sttbx_Print("\ndelete program index = %d,no = %d\n",sProgIndex,iProgNumber);
		DeleteProgramByIndex(sProgIndex,sProgIndex2bRetrieved);

		if ( PositionProgInfoNeg (1) == INVALID_LINK )
		{
			/*如果前面没有节目,则设为-1,这样在
			  getChannels()中就会从最开始开始读取*/
			sProgIndex2bRetrieved = INVALID_LINK;
		}
		else
		{
			iProgNumberBeingRetrieved = iProgNumber;
			sProgIndex2bRetrieved = sProgIndex;
			iCurrentProgramNo = iProgNumberBeingRetrieved;
		}
		sttbx_Print("\nafter delete,the prev one's index = %d,no = %d\n",sProgIndex,iProgNumber);
		/*Update the screen*/
		UpdateChManageWindowAfterDelete();
	}
	else
	{
		/*------------Detete transponder-----------------------*/
		if(iNoOfTransponderMenuElements <= 0)
			return;						
		
		transponderDeleteFunc(iTransOffInChManagement,iNoOfTransponderMenuElements,MAX_ITEMS_IN_CHANNELMANAGEMENT);

		UpdateTransManageWindowAfterDelete();
	}
}
/*--------------------------------------EOF---------------------------------------*/

⌨️ 快捷键说明

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