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

📄 emc_channelmanage.c

📁 关于嵌入式PCB板UI的程序
💻 C
📖 第 1 页 / 共 4 页
字号:
		drawLockedFlagInChManage(iOffset,highlight,FALSE);

#if 0/*by Allen,03-15-2006*/
	STOSD_FillRectangle(Handle_ProviewWindow, CM_ITEM_LOCK_X+CM_ITEM_LOCK_WIDTH, iOffset*(CM_ITEM_HEIGHT+4)+CM_ITEM_LOCK_Y+2,CM_ITEM_WIDTH-( CM_ITEM_LOCK_X+CM_ITEM_LOCK_WIDTH),CM_ITEM_HEIGHT-4, bgCHcolor);
#endif
}

/*AL06 Start*/
static void ClearChManageItemArea(int itemIndex)
{
	STOSD_Color_t backgroundcolor1,backgroundcolor2;	

	backgroundcolor1.Type = STOSD_COLOR_TYPE_PALETTE;
	backgroundcolor1.Value.PaletteEntry =143;
	
	backgroundcolor2.Type = STOSD_COLOR_TYPE_PALETTE;
	backgroundcolor2.Value.PaletteEntry =155;

	/*erase highlight frame*/
	HL_STOSD_DrawRectangle(Handle_ProviewWindow,CM_ITEM_X-3, (CM_ITEM_Y)+itemIndex*(CM_ITEM_HEIGHT),CM_ITEM_WIDTH+3,CM_ITEM_HEIGHT, bgCHcolor);
	HL_STOSD_DrawRectangle(Handle_ProviewWindow,CM_ITEM_X-2, (CM_ITEM_Y+1)+itemIndex*(CM_ITEM_HEIGHT),CM_ITEM_WIDTH+1,CM_ITEM_HEIGHT-2, bgCHcolor);
	/*erase content*/
	STOSD_FillRectangle(Handle_ProviewWindow, CM_ITEM_NUM_X,CM_ITEM_NUM_Y+2+itemIndex*CM_ITEM_HEIGHT,
			CM_ITEM_NUM_WIDTH,CM_ITEM_HEIGHT-4,backgroundcolor1);
	STOSD_FillRectangle(Handle_ProviewWindow, CM_ITEM_PROGNAME_X,CM_ITEM_PROGNAME_Y+2+ itemIndex*CM_ITEM_HEIGHT,
			CM_ITEM_PROGNAME_WIDTH,CM_ITEM_HEIGHT-4,backgroundcolor2);
	STOSD_FillRectangle(Handle_ProviewWindow,CM_ITEM_PROVIDER_X,CM_ITEM_PROGNAME_Y+2+ itemIndex*CM_ITEM_HEIGHT,
			CM_ITEM_PROVIDER_WIDTH,CM_ITEM_HEIGHT-4 ,backgroundcolor1);
	STOSD_FillRectangle(Handle_ProviewWindow, CM_ITEM_NETWORKNAME_X,CM_ITEM_NETWORKNAME_Y+2+ itemIndex*(CM_ITEM_HEIGHT),
			CM_ITEM_NETWORKNAME_WIDTH,CM_ITEM_HEIGHT-4,backgroundcolor2);
	STOSD_FillRectangle(Handle_ProviewWindow, CM_ITEM_FAVR_X, itemIndex*(CM_ITEM_HEIGHT)+CM_ITEM_FAVR_Y+2,CM_ITEM_FAVR_WIDTH,CM_ITEM_HEIGHT-4, backgroundcolor1);
	STOSD_FillRectangle(Handle_ProviewWindow, CM_ITEM_LOCK_X, itemIndex*(CM_ITEM_HEIGHT)+CM_ITEM_LOCK_Y+2,CM_ITEM_LOCK_WIDTH,CM_ITEM_HEIGHT-4, backgroundcolor2);
	//sttbx_Print("\n%d %d %d %d\n",CM_ITEM_LOCK_X+CM_ITEM_LOCK_WIDTH,itemIndex*(CM_ITEM_HEIGHT+4)+CM_ITEM_LOCK_Y+2,CM_ITEM_WIDTH-( CM_ITEM_LOCK_X+CM_ITEM_LOCK_WIDTH),CM_ITEM_HEIGHT-4);
#if 0/*by Allen,03-15-2006*/
	//STOSD_FillRectangle(Handle_ProviewWindow, CM_ITEM_LOCK_X+CM_ITEM_LOCK_WIDTH, itemIndex*(CM_ITEM_HEIGHT+4)+CM_ITEM_LOCK_Y+2,CM_ITEM_WIDTH-( CM_ITEM_LOCK_X+CM_ITEM_LOCK_WIDTH),CM_ITEM_HEIGHT-4, bgCHcolor);
#endif	
}

static void UpdateChManageWindowAfterDelete(void)
{
	int i,iOrigNoOfMenuElements;
	MENU_DATA_STRUCT *p = NULL;

	/*Clear Channel Item's Area*/
	/*NOTICE!!At any moment,we only need clear one item's area*/

	iOrigNoOfMenuElements = iNoOfAvailableMenuElements;
	
	if((iChOffInChManagement = getChannels(MAX_ITEMS_IN_CHANNELMANAGEMENT)) == INVALID_LINK)
	{
		sttbx_Print("The Database is empty!!!\n");
	}


	p=pstAvailableMenuDataHead;
	for(i = 0;i<iNoOfAvailableMenuElements;i++)
	{
		drawChManageItem(i,(char *)p->aucData,((i == iChOffInChManagement)?1:0));
		p=p->Next;
	}

	/* FF04, to erase the DELETE-CONFIRM window, we need clear the bottom empty menu items*/
	if(iNoOfAvailableMenuElements < MAX_ITEMS_IN_CHANNELMANAGEMENT)
	{
		for(i = iNoOfAvailableMenuElements; i<MAX_ITEMS_IN_CHANNELMANAGEMENT; i++)
		{
			ClearChManageItemArea(i);
		}
	}
	
}

static void DeleteProgramByIndex(int iProgIndex,short int sCurProgIndex)
{
	/*if it is the current program,must stop it first*/
	if(iProgIndex == sCurProgIndex)
		SRAVC_AVstop();
	
	/* mark it as FREE */
	astProgInfoTable[iProgIndex].status = ELEMENT_FREE;
	astProgInfoTable[iProgIndex].cNoOfValidAudioStruct = 0;
	/*erased the name of program and provider as well.*/
	astProgInfoTable[iProgIndex].cServiceProviderName[0] = '\0'; 
	astProgInfoTable[iProgIndex].cServiceName[0] = '\0';
	
	--ProgramList->NoOfValidPgms;
	
	if (astProgInfoTable[iProgIndex].sPrevProgIndex == INVALID_LINK)
	{
		/*  HEAD element is being deleted */
		if (astProgInfoTable[iProgIndex].sNextProgIndex == INVALID_LINK)
		{ 
			/* LIST has only one element */
	          	ProgramList->NoOfValidPgms = 0;
	         	ProgramList->HeadProgIndex = ProgramList->TailProgIndex = INVALID_LINK;
		}
	     	else
	     	{
			/* some more element(s) after this deleted one */
	         	ProgramList->HeadProgIndex = astProgInfoTable[iProgIndex].sNextProgIndex;
	          	astProgInfoTable[ProgramList->HeadProgIndex].sPrevProgIndex = INVALID_LINK;
       	}
	}
	else
	{
		/* not the HEAD element*/
     		if (astProgInfoTable[iProgIndex].sNextProgIndex == INVALID_LINK)
       	{
           		/* TAIL element is being deleted some more element(s) before this deleted one */
	      		ProgramList->TailProgIndex = astProgInfoTable[iProgIndex].sPrevProgIndex;
          		astProgInfoTable[ProgramList->TailProgIndex].sNextProgIndex = INVALID_LINK;
  		}
     		else
       	{
            		astProgInfoTable[astProgInfoTable[iProgIndex].sPrevProgIndex].sNextProgIndex=astProgInfoTable[iProgIndex].sNextProgIndex;
			astProgInfoTable[astProgInfoTable[iProgIndex].sNextProgIndex].sPrevProgIndex=astProgInfoTable[iProgIndex].sPrevProgIndex;

        	}
    	}
	SRDBE_UpdateProgramListStore();
}
/*AL06 End*/

/*draw Transponder Magagement related */
static void drawTransManageItem(U8 iOffset,char *str,BOOL highlight)
{
	int i;
	STOSD_Color_t textcolor,backgroundcolor1,backgroundcolor2;
	//EMCFont_Type fontType = EMCFontTypeArray[LangSelect+4];/*test*/
	EMCFont_Type fontType = FONT_MYFONT;

	char TransNum[4];	/*transponder number*/
	char TransName[MAX_NETWORK_NAME_LENGTH];	/*transponder name*/
	char TransFreq[4];	/*transponder frequency*/
	char NumProgs[4];

	backgroundcolor1.Type = STOSD_COLOR_TYPE_PALETTE;
	backgroundcolor1.Value.PaletteEntry =143;

	backgroundcolor2.Type = STOSD_COLOR_TYPE_PALETTE;
	backgroundcolor2.Value.PaletteEntry =155;

	for(i = 0;i<3;i++)
	{
		TransNum[i] = str[i];
	}
	TransNum[i] = '\0';

	for(i = 0;i<15;i++)
		TransName[i] = str[17+i];
	TransName[i] = '\0';

	//PrintAUC(TransName, 20);

	for(i = 0;i<3;i++)
		TransFreq[i] = str[33+i];
	TransFreq[i] = '\0';


	for(i=0; i<3; i++)
	{
		NumProgs[i] = str[50+i];
	}
	NumProgs[i] = '\0';
	
//		HL_STOSD_DrawRectangle(Handle_ProviewWindow,CM_ITEM_X-3, (CM_ITEM_Y)+iOffset*(CM_ITEM_HEIGHT),CM_ITEM_WIDTH+6,CM_ITEM_HEIGHT, whitecolor);

	
	/*draw the outer frame*/
	if(highlight)
	{
		textcolor = blackcolor;
		HL_STOSD_DrawRectangle(Handle_ProviewWindow,CM_ITEM_X-3, (CM_ITEM_Y)+iOffset*(CM_ITEM_HEIGHT),CM_ITEM_WIDTH+3,CM_ITEM_HEIGHT, whitecolor);
		HL_STOSD_DrawRectangle(Handle_ProviewWindow,CM_ITEM_X-2, (CM_ITEM_Y+1)+iOffset*(CM_ITEM_HEIGHT),CM_ITEM_WIDTH+1,CM_ITEM_HEIGHT-2, whitecolor);
	}
	else
	{
		textcolor = whitecolor;
		HL_STOSD_DrawRectangle(Handle_ProviewWindow,CM_ITEM_X-3, (CM_ITEM_Y)+iOffset*(CM_ITEM_HEIGHT),CM_ITEM_WIDTH+3,CM_ITEM_HEIGHT, bgCHcolor);
		HL_STOSD_DrawRectangle(Handle_ProviewWindow,CM_ITEM_X-2, (CM_ITEM_Y+1)+iOffset*(CM_ITEM_HEIGHT),CM_ITEM_WIDTH+1,CM_ITEM_HEIGHT-2, bgCHcolor);
	}
	/*draw content*/

	EMC_DrawTextRectangle(Handle_ProviewWindow,
			CM_NETWORK_NUM_X,CM_NETWORK_NUM_Y+2+iOffset*(CM_ITEM_HEIGHT ),
			CM_NETWORK_NUM_W,CM_ITEM_HEIGHT-4,
			TransNum,JLEFT,fontType,FALSE,
			textcolor,backgroundcolor1,backgroundcolor1);

	EMC_DrawTextRectangle(Handle_ProviewWindow,
		CM_NETWORK_NAME_X,CM_NETWORK_NAME_Y+2+iOffset*(CM_ITEM_HEIGHT ),
		CM_NETWORK_NAME_W,CM_ITEM_HEIGHT-4,
		TransName,JLEFT,fontType,FALSE,
		textcolor,backgroundcolor2,backgroundcolor2);

	EMC_DrawTextRectangle(Handle_ProviewWindow,
		CM_NETWORK_FREQ_X,CM_NETWORK_FREQ_Y+2+iOffset*(CM_ITEM_HEIGHT ),
		CM_NETWORK_FREQ_W,CM_ITEM_HEIGHT-4,
		TransFreq,JLEFT,fontType,FALSE,
		textcolor,backgroundcolor1,backgroundcolor1);


	EMC_DrawTextRectangle(Handle_ProviewWindow,
		CM_NETWORK_CHANS_X,CM_NETWORK_CHANS_Y+2+iOffset*(CM_ITEM_HEIGHT ),
		CM_NETWORK_CHANS_W,CM_ITEM_HEIGHT-4,
		NumProgs,JLEFT,fontType,FALSE,
		textcolor,backgroundcolor2,backgroundcolor2);

#if 0/*BLOCK COMMENTED by Allen,03-16-2006*/
	STOSD_FillRectangle(Handle_ProviewWindow, CM_NETWORK_CHANS_X+CM_NETWORK_CHANS_W,CM_NETWORK_CHANS_Y+2+iOffset*(CM_ITEM_HEIGHT ),
		CM_ITEM_WIDTH-(CM_NETWORK_CHANS_X+CM_NETWORK_CHANS_W),CM_ITEM_HEIGHT-4,backgroundcolor1);			

#endif
	
}




static void ClearTransManageItemArea(int itemIndex)
{
	STOSD_Color_t backgroundcolor1,backgroundcolor2;

	backgroundcolor1.Type = STOSD_COLOR_TYPE_PALETTE;
	backgroundcolor1.Value.PaletteEntry =143;

	backgroundcolor2.Type = STOSD_COLOR_TYPE_PALETTE;
	backgroundcolor2.Value.PaletteEntry =155;

	/*eraser highlight frame*/
	HL_STOSD_DrawRectangle(Handle_ProviewWindow,CM_ITEM_X-3, (CM_ITEM_Y)+itemIndex*(CM_ITEM_HEIGHT),CM_ITEM_WIDTH+3,CM_ITEM_HEIGHT, bgCHcolor);
	HL_STOSD_DrawRectangle(Handle_ProviewWindow,CM_ITEM_X-2, (CM_ITEM_Y+1)+itemIndex*(CM_ITEM_HEIGHT),CM_ITEM_WIDTH+1,CM_ITEM_HEIGHT-2, bgCHcolor);


	STOSD_FillRectangle(Handle_ProviewWindow, CM_NETWORK_NUM_X,CM_NETWORK_NUM_Y+2+itemIndex*(CM_ITEM_HEIGHT ),
			CM_NETWORK_NUM_W,CM_ITEM_HEIGHT-4,backgroundcolor1);
	STOSD_FillRectangle(Handle_ProviewWindow, CM_NETWORK_NAME_X,CM_NETWORK_NAME_Y+2+itemIndex*(CM_ITEM_HEIGHT ),
		CM_NETWORK_NAME_W,CM_ITEM_HEIGHT-4,backgroundcolor2);
	
	STOSD_FillRectangle(Handle_ProviewWindow, CM_NETWORK_FREQ_X,CM_NETWORK_FREQ_Y+2+itemIndex*(CM_ITEM_HEIGHT ),
		CM_NETWORK_FREQ_W,CM_ITEM_HEIGHT-4,backgroundcolor1);

	STOSD_FillRectangle(Handle_ProviewWindow, CM_NETWORK_CHANS_X,CM_NETWORK_CHANS_Y+2+itemIndex*(CM_ITEM_HEIGHT ),
		CM_NETWORK_CHANS_W,CM_ITEM_HEIGHT-4,backgroundcolor2);			

#if 0/*BLOCK COMMENTED by Allen,03-16-2006*/
	STOSD_FillRectangle(Handle_ProviewWindow, CM_NETWORK_CHANS_X+CM_NETWORK_CHANS_W,CM_NETWORK_CHANS_Y+2+itemIndex*(CM_ITEM_HEIGHT ),
		CM_ITEM_WIDTH-(CM_NETWORK_CHANS_X+CM_NETWORK_CHANS_W),CM_ITEM_HEIGHT-4,bgCHcolor);			
#endif

}




static void UpdateTransManageWindowAfterDelete(void)
/*
global modified:
	iNoOfTransponderMenuElements
	getTransponder() modify some variable

*/
{
	int i,iOrigNoOfMenuElements;
	MENU_DATA_STRUCT *p = NULL;

	/*Clear Channel Item's Area*/
	/*NOTICE!!At any moment,we only need clear one item's area*/

	iOrigNoOfMenuElements = iNoOfTransponderMenuElements;

	if((iTransOffInChManagement=getTransponders(MAX_ITEMS_IN_CHANNELMANAGEMENT))== INVALID_LINK)
	{
		sttbx_Print("The Database is empty!!!\n");
	}
	else
	{
		sttbx_Print("UpdateAfterDelete: iTransOffInChManagement = %d,iNoOfTransponderMenuElements=%d\n",iTransOffInChManagement,iNoOfTransponderMenuElements);
	}
	
	/*iNoOfTransponderMenuElements may be changed in getTransponders(),in case delete the last items in whole transponder*/
	p=pstTransponderMenuDataHead;
	for(i = 0;i<iNoOfTransponderMenuElements;i++)
	{
		drawTransManageItem(i,(char *)p->aucData,((i == iTransOffInChManagement)?1:0));
		p=p->Next;
	}

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

	
}

/*----------------delete confirm window related-------------------*/


/*4LINES*/


static void drawDeleteConfirmWindow(BOOL bshow)
/*
bShow: TRUE,	draw the window; FALSE, clear the window, redraw with backgroud
*/
{
	STOSD_Color_t bgcolor;
	STOSD_Color_t corner_color;

	bgcolor.Type = STOSD_COLOR_TYPE_PALETTE;
	
	corner_color.Type = STOSD_COLOR_TYPE_PALETTE;
	corner_color.Value.PaletteEntry = 0;	/*transparent*/
	if(bshow!=FALSE)
	{
	#if 0
		bgcolor.Value.PaletteEntry = 0x42; /*dark blue color*/		

		
		STOSD_FillRectangle(Handle_ProviewWindow,DELWIN_X,DELWIN_Y,DELWIN_W,DELWIN_H, bgcolor);

		//local_drawRoundWindowFrame1(Handle_ProviewWindow,DELWIN_X,DELWIN_Y,DELWIN_W,DELWIN_H, light,lightblue,blue,darkblue,corner_color);

		EMC_DrawTextFlatRectangle(Handle_ProviewWindow, 
			DELWIN_X+10 , DELWIN_Y+CM_ITEM_HEIGHT ,DELWIN_W-10, CM_ITEM_HEIGHT*2,
			" Sure to delete? ",blackcolor, bgcolor, bgcolor);
		
		EMC_DrawTextFlatRectangle(Handle_ProviewWindow, 
			DELWIN_X+20 , DELWIN_Y+2*CM_ITEM_HEIGHT ,35, CM_ITEM_HEIGHT-6,
			"OK",blackcolor, whitecolor, bgcolor);
		
		EMC_DrawTextFlatRectangle(Handle_ProviewWindow, 
			DELWIN_X +100, DELWIN_Y+2*CM_ITEM_HEIGHT ,40, CM_ITEM_HEIGHT-6,
			"EXIT",blackcolor, whitecolor, bgcolor);		
	#else
		HL_STOSD_DrawBMP(Handle_ProviewWindow, DELWIN_X,DELWIN_Y, Bitmap_Struct_Confirm_Delete);
	#endif
	}
	else
	{
		bgcolor.Value.PaletteEntry = 145;
	
		STOSD_FillRectangle(Handle_ProviewWindow,DELWIN_X,DELWIN_Y,DELWIN_W,DELWIN_H, bgCHcolor);
	}
	
}

static void drawChannelManagementWindow(void)
{
	light.Type = STOSD_COLOR_TYPE_PALETTE;
	lightblue.Type = STOSD_COLOR_TYPE_PALETTE;
	bgCHcolor.Type = STOSD_COLOR_TYPE_PALETTE;
	blue.Type = STOSD_COLOR_TYPE_PALETTE;
	darkblue.Type = STOSD_COLOR_TYPE_PALETTE;

	light.Value.PaletteEntry = 155;
	lightblue.Value.PaletteEntry = 143;
	bgCHcolor.Value.PaletteEntry = 199;/*84;*/
	blue.Value.PaletteEntry = 132;
	darkblue.Value.PaletteEntry = 71;
	
	/******************Clear the screen******************/
	EMC_HideAllRegions();
	
	//InitProgramsDBase();	//FF04
	
	/******************Draw the Dialog******************/

	drawCHMbackgroud();

	//STOSD_DrawLine(Handle_ProviewWindow,CM_X,CM_Y+30,CM_WIDTH,CM_HEIGHT,bgColor);
	if(bChannelManage == TRUE)
	{
		changeToChManage();

⌨️ 快捷键说明

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