📄 emc_channelmanage.c
字号:
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 + -