123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- #include "includes.h"
- SUT_CHECK_BOX sut_check_box;
- /*************************************************************************
- CheckBoxInit
- ***************************************************************************/
- void CheckBoxInit(struct SUT_CHECK_BOX *p,char **itemlist,char unicode,const char **iconlist,char *features,unsigned int type,unsigned char*check)
- {
- UI_STACKDEF *uiPtr=getStackStruct();
- unsigned char i,ch,index;
- p->item = itemlist;
-
- i = 0;
- while(i<LIST_ITEM_NUM_MAX)
- {
- ch=p->item[i][0];
- if(ch==0)break;
- i ++;
- }
- i=i-1;
- p->itemnum = i+1;
- p->pgaenum=i/LIST_ROW;
- if(p->pgaenum%LIST_ROW)p->pgaenum+=1;
- i=0;
- p->icon=iconlist;
-
- while(i<LIST_ITEM_NUM_MAX)
- {
- if(iconlist==NULL)break;
- ch=p->icon[i][0];
- if(ch==0)break;
- i ++;
- }
- p->iconnum=i;
-
- for(i=0;i<LIST_ITEM_NUM_MAX;i++){
- if(i<p->itemnum){
- p->features[i]=features[i];
- }else{
- p->features[i]=0;
- }
- }
- for(i=0;i<LIST_ITEM_NUM_MAX;i++){
- if(i<p->itemnum){
- p->checkstatus[i]=check[i];
- }else{
- p->checkstatus[i]=0;
- }
- }
-
- p->unicode=unicode;
- p->page = 0;
-
- p->handle = type;
-
- CheckBoxShow(p);
- }
- /********************************************************************************
- CheckBoxShowItem
- *******************************************************************************/
- void CheckBoxShowItem(struct SUT_CHECK_BOX *p,unsigned short handle)
- {
- unsigned short len;
- unsigned short x,y,hand;
- unsigned char buf[LIST_ITEM_TEXT_LEN_MAX+3];
- char str[LIST_ITEM_TEXT_LEN_MAX+1];
- char f;
- hand=handle % LIST_ROW;
- x=LIST_TOPX;
- //y=LIST_TOPY+handle*LIST_ITEM_HEGH;
- y=LIST_TOPY+hand*LIST_ITEM_HEGH;
- guiClearArea(x,y,LIST_BAR_LEN+16,LIST_ITEM_HEGH,guiGetBackColor());
- memset(buf,0,sizeof(buf));
- if(p->unicode){
- buf[LIST_ITEM_TEXT_LEN_MAX+2]=0;
- }else{
- strncpy((char *)buf,p->item[handle],sizeof(buf));
- buf[LIST_ITEM_TEXT_LEN_MAX+2]=0;
- }
- StrIntercept(str,(char *)buf,LIST_ITEM_TEXT_LEN_MAX);
-
- if(p->icon!=NULL){
- f=p->checkstatus[handle];
- guiShowBmp(x,y,p->icon[f+3]);
- x+=24;
- f= p->features[handle];
- guiShowBmp(x,y,p->icon[f]);
- guiShowStr(x+24+2,y,str, FONT_MODE_16X16, REVERSED_NO, guiGetForeColor(),guiGetBackColor());
- MSG_INFO(1,"str===%s,handler==%d,checkstatus==%d,features==%d",str,handle,p->checkstatus[handle],p->features[handle]);
-
- }else{
- guiShowStr(x,y,str, FONT_MODE_16X16, REVERSED_NO,guiGetForeColor(),guiGetBackColor());
- }
-
- }
-
- /********************************************************************************
- * Function:CheckBoxShowBar
- * display a bar
- *******************************************************************************/
- void CheckBoxShowBar(struct SUT_CHECK_BOX *p,REV_ENUM rev)
- {
- unsigned char x,y,h,handle;
- char str[LIST_ITEM_TEXT_LEN_MAX+1];
- x=LIST_TOPX;
- if(p->icon!=NULL){
- x+=24+2+24;
- }
- handle=p->handle%LIST_ROW;
- y=LIST_TOPY+handle*LIST_ITEM_HEGH;
- StrIntercept(str,p->item[p->handle],LIST_ITEM_TEXT_LEN_MAX);
- if(REVERSED_YES==rev) guiFillRect(x,y,LIST_BAR_LEN,y+32,guiGetBackColor());
- else guiFillRect(x,y,LIST_BAR_LEN,y+32,COLOR_STATUS_BAR);
-
- if(REVERSED_YES==rev) guiShowStr(x,y,str, FONT_MODE_16X16, rev,guiGetBackColor(),guiGetForeColor());
- else guiShowStr(x,y,str, FONT_MODE_16X16, rev,guiGetForeColor(), COLOR_STATUS_BAR);//COLOR_SEL_BAR
- }
- /********************************************************************************
- * Function:CheckBoxShow
- * display CheckBox
- *******************************************************************************/
- void CheckBoxShow(struct SUT_CHECK_BOX *p)
- {
- unsigned char i,j;
- unsigned short x,y;
-
- if(p->itemnum==0)return;
-
- j=p->page*LIST_ROW;
- for(i = j ; i <j+LIST_ROW ; i ++)
- {
- if(i >= p->itemnum){
- y=LIST_TOPY+(i % LIST_ROW)*LIST_ITEM_HEGH;
- guiClearArea(LIST_TOPX,y-1,LIST_BAR_LEN+18,LIST_ITEM_HEGH,guiGetBackColor());
- }else{
- CheckBoxShowItem(p,i);
- }
- }
- CheckBoxShowBar(p,REVERSED_NO);
- }
-
- /********************************************************************************
- CheckBoxResponse
- CheckBox控件的键盘�应处� 底层
- *******************************************************************************/
- unsigned long CheckBoxResponse(struct SUT_CHECK_BOX *p)
- {
- unsigned char temp,i;
- unsigned long g_ulKeyValue=getKeyValue();
- if(p->itemnum==0)return g_ulKeyValue;
-
- switch(g_ulKeyValue)
- {
- case MKEY_VALUE_UP:
-
- CheckBoxShowBar(p,REVERSED_YES);
- if(p->handle==0)p->handle=(p->itemnum-1);
- else p->handle --;
- temp=p->page;
- p->page=p->handle/LIST_ROW;
-
- if(temp!=p->page) CheckBoxShow(p);
- else CheckBoxShowBar(p,REVERSED_NO);
-
- break;
-
- case MKEY_VALUE_DOWN:
-
- CheckBoxShowBar(p,REVERSED_YES);
- p->handle ++;
- if(p->handle>=p->itemnum)p->handle=0;
- temp = p->page;
- p->page=p->handle/LIST_ROW;
-
- if(temp!=p->page) CheckBoxShow(p);
- else CheckBoxShowBar(p,REVERSED_NO);
-
- break;
-
- case MKEY_VALUE_MENU:
- if(p->handle==0&&p->checkstatus[0]==1){
-
- for(i=0;i<LIST_ITEM_NUM_MAX;i++){
- p->checkstatus[i]=1;
- }
- MSG_INFO(1,"ReFlashItemLeader1");
- ReFlashItemLeader(3,0);
-
- }else if(p->handle==0&&p->checkstatus[0]==0){
-
- for(i=0;i<LIST_ITEM_NUM_MAX;i++){
- p->checkstatus[i]=1;
- }
- MSG_INFO(1,"ReFlashItemLeader0");
- ReFlashItemLeader(2,0);
-
- }else{
- MSG_INFO(1,"reshow,%d",p->handle);
- if(p->checkstatus[p->handle]==1)p->checkstatus[p->handle]=0;
- else p->checkstatus[p->handle]=1;
-
- if(p->page==0){
- if(p->checkstatus[0]==1)p->checkstatus[0]=0;
- CheckBoxShowItem(p,0);
- }
- CheckBoxShowItem(p,p->handle);
- CheckBoxShowBar(p,REVERSED_NO);
- }
- break;
-
- default:
- return g_ulKeyValue;
- break;
- }
- return 0;
- }
|