コード例 #1
0
ファイル: txtlayer.c プロジェクト: silview/C100A
//==================================================================
//function name:    TxtLayer_Destroy
//author:           
//date:             2008-10-7
//description:      TxtLayer destroy 
//parameters:       
//return:           if success return 
//                  if fail return the number of fail
//modify history: 
//==================================================================
//------------------------------------------------------------------------------------------------------------
__u32 TxtLayer_Destroy(txtlayer_man_t *ptxtlayer)
{
  //  __u8   err;
    __u32  ret;

 
	ptxtlayer->status |= TXTBOX_REQDEL;

	while(ptxtlayer->status & TXTBOX_ONDRAW)
	{
		esKRNL_TimeDly(3);
	} 
	
    ret = TxtBuffer_Destroy(ptxtlayer->txtbuffer);
    if(ret!= OK)
    {
        return __LINE__;
    }

    ret = TxtList_Destroy(ptxtlayer->txtlist);
    if(ret != OK)
    {
        return __LINE__;
    }

	if(ptxtlayer->focus_lyr)
	{
		GUI_LyrWinDelete(ptxtlayer->focus_lyr);
		ptxtlayer->foucs_FB = NULL;
		ptxtlayer->focus_lyr = 0;
	}

	ptxtlayer->status &= (~TXTBOX_REQDEL);

    TXTBOX_MEMFREE(ptxtlayer);   

	return OK;
	
}     
コード例 #2
0
ファイル: txtlayer.c プロジェクト: silview/C100A
//==================================================================
//function name:    TxtLayer_Create
//author:           
//date:             2008-10-7
//description:      TxtLayer create 
//parameters:       
//return:           if success return 
//                  if fail return the number of fail
//modify history: 
//==================================================================
//------------------------------------------------------------------------------------------------------------
txtlayer_man_t* TxtLayer_Create(H_LYR TxtLayer,__hdle txtbox,__u32 item_w)
{
 //   __u8                        err;
    __u32                       bpp;
    __u32                       ret;
//    __u32                       size;
	txtlayer_man_t *            ptxtlayer = (txtlayer_man_t *)NULL;
    
    ptxtlayer                           = (txtlayer_man_t *)TXTBOX_MALLOC(sizeof(txtlayer_man_t));
    if(!ptxtlayer)
    {
        goto error;
    }
    /*create txtbuffer of this TxtLayer object*/
    ptxtlayer->txtbuffer                = (txtbuffer_man_t *)TxtBuffer_Create(); 
    ptxtlayer->ptxtbox                  = (struct tag_TXTBOX_DATA *)txtbox;
    ptxtlayer->layer                    =  TxtLayer;
	ptxtlayer->focus_lyr				= 0;
	ptxtlayer->chg_fb					= NULL;
	ptxtlayer->foucs_FB					= NULL;
    ret                                 = TxtLayer_GetLayerInfo(ptxtlayer);
    if(ret != OK)
    {
        __msg("get layer information failed!\n");
        goto error;
    }
    bpp                                 = TxtLayer_GetBPP(ptxtlayer);
    ptxtlayer->txtlist                  = NULL;
    ptxtlayer->mode                     = 0;
	ptxtlayer->status                   = 0;
    ptxtlayer->status                   |= TXTBOX_INIT;
    ptxtlayer->draw_font                = NULL;
    ptxtlayer->backup                   = EPDK_FALSE;
    ptxtlayer->backalpha                = EPDK_FALSE;
    if(item_w != 0)
    {
        if(ptxtlayer->txtbuffer->rectsz.height < item_w)
        {
            __inf("no enough page!\n");
            goto error;
        }
    }  
      
    /*create txtlist of this TxtLayer*/
    ptxtlayer->txtlist = TxtList_Create();
    
    ptxtlayer->txtlist->bpp = bpp;
	
    ptxtlayer->layer   = TxtLayer;
    ptxtlayer->head_fb = NULL;
	ptxtlayer->tail_fb = NULL;
    return ptxtlayer;
 error:
 	if(ptxtlayer->txtlist)
 	{
 		TxtList_Destroy(ptxtlayer->txtlist);
 	}

	if(ptxtlayer->focus_lyr)
	{
		GUI_LyrWinDelete(ptxtlayer->focus_lyr);
		ptxtlayer->foucs_FB = NULL;
		ptxtlayer->focus_lyr = 0;
	}
	
    if(ptxtlayer)
    {
        __inf("delete ptxtlayer\n");
        TXTBOX_MEMFREE(ptxtlayer);
    }  

    return NULL;
}
コード例 #3
0
ファイル: home.c プロジェクト: shuntianxia/86Box
static __s32 homeWndProc(__gui_msg_t * msg)
{
    HomeDescriptor * hdp;
    H_WIN wndGesture;
    EWin_InheritInfo_ForHeader * extWinIfno;
	H_WIN hwnd;
    char name[20];
	
    hdp = (HomeDescriptor *)GUI_WinGetAddData(msg->h_deswin);
    if (NULL == hdp) {
        if (GUI_MSG_CREATE != msg->id) {
            LogE("Failed to get home window private date, message ID (%d)", msg->id);
            return GUI_ManWinDefaultProc(msg);
        }
    }
   
    switch (msg->id) {
    case GUI_MSG_CREATE:
        hdp = homeWndInit(msg);
        if (!hdp) {
            GUI_PostQuitMessage(msg->h_deswin);
            LogE("Create Home window failed");
            return -1;
        }
		if(hdp->ewii.suspend){
           GUI_SetTimer(msg->h_deswin,SUSPEND_TIMER,6000,NULL);
		}else{
           __msg("suspend is null");
		}
        GUI_WinSetAddData(msg->h_deswin, (__u32)hdp);
        GUI_WinSetFocusChild(hdp->hFocusWin);
        break;
    case GUI_MSG_DESTROY:
        GG_GestureClose(hdp->inertia);
        if (hdp->ewii.gdi.font) {
            GUI_SFT_ReleaseFont(hdp->ewii.gdi.font);
        }
        esMEMS_Mfree(0, hdp);
        break;
    case GUI_MSG_TOUCH:
#ifdef THIS_DEBUG
        //LogMI("Touch:%x,%d,%d", msg->dwAddData1, LOSWORD(msg->dwAddData2), HISWORD(msg->dwAddData2));
#endif  
         if(standy_en){
	        if(hdp->ewii.suspend == 1){
		           dsk_display_lcd_on();
	        }else if(hdp->ewii.suspend == 2){
	            
			}else if(hdp->ewii.suspend == 3){
				GUI_LyrWinDelete(hdp->StandyWindow);
			}
			standy_en = 0;
			break;
         }
		 if(LOSWORD(msg->dwAddData2) > 320 || HISWORD(msg->dwAddData2) > 240){
		 	break;
		 }
		GUI_ResetTimer(msg->h_deswin,SUSPEND_TIMER,6000,NULL);
        if (GUI_MSG_TOUCH_DOWN == msg->dwAddData1) {
            wndGesture = EWin_GestureAttrCollect(GUI_WinGetFocusChild(msg->h_deswin), LOSWORD(msg->dwAddData2), HISWORD(msg->dwAddData2));
            if (wndGesture) {
                extWinIfno = GUI_WinGetAttr(wndGesture);
                GG_GestureOnDown(hdp->inertia, msg, LOSWORD(msg->dwAddData2), HISWORD(msg->dwAddData2), &extWinIfno->gestureArgs);
            }
        } else if (GUI_MSG_TOUCH_MOVE == msg->dwAddData1) {
            GG_GestureOnMove(hdp->inertia, msg, LOSWORD(msg->dwAddData2), HISWORD(msg->dwAddData2));
        } else if (GUI_MSG_TOUCH_UP == msg->dwAddData1) {
            GG_GestureOnUp(hdp->inertia, msg, LOSWORD(msg->dwAddData2), HISWORD(msg->dwAddData2));
        }else if(GUI_MSG_TOUCH_LONGDOWN == msg->dwAddData1){
            GG_GestureOnLpress(hdp->inertia, msg, LOSWORD(msg->dwAddData2), HISWORD(msg->dwAddData2));
		}
        break;
    case GUI_MSG_TIMER:
        if (HOME_GESTURE_TIMER == msg->dwAddData1) {
            GG_GestureOnTimer(hdp->inertia, msg);
        }else if(SUSPEND_TIMER == msg->dwAddData1){
         	if(!standy_en){
	            if(hdp->ewii.suspend==1){
	                 dsk_display_lcd_off();
					 //standy_en = 1;
				}else if(hdp->ewii.suspend==2){
	                 msg->h_deswin = GUI_WinGetFocusChild(msg->h_deswin);
					 msg->id = GUI_MSG_USER_GESTURE_DONE;
					 msg->dwAddData2 = MAKELONG(320,0);
					 GUI_PostMessage(msg);
					 //standy_en = 1;
				}else if(hdp->ewii.suspend==3){
					 hdp->StandyWindow = StandyWndCreate("d:\\res\\boot_ui\\logo.bmp");
				}else{
	                
				}
				standy_en = 1;
         	}
		}
        break;
    case GUI_MSG_USER_WIN_CHANGE:
        if (HOME_SUBWIN_UPDATE == msg->dwAddData2) {
			GUI_LyrWinSetSta(hdp->ewii.lyrLow,GUI_LYRWIN_STA_SLEEP);
			GUI_LyrWinSetSta(hdp->ewii.lyrHigher,GUI_LYRWIN_STA_SLEEP);
			GUI_LyrWinSetSta(hdp->ewii.inilyrHigher,GUI_LYRWIN_STA_SLEEP);
            hdp->hFocusWin = SettingWndCreate(&hdp->ewii);
			if(hdp->hFocusWin){
            	GUI_WinSetFocusChild(hdp->hFocusWin);
			}
        }else if(HOME_SUBWIN_SETTING_TIME== msg->dwAddData2){
			GUI_LyrWinSetSta(hdp->ewii.inilyrHigher,GUI_LYRWIN_STA_SLEEP);
			GUI_LyrWinSetSta(hdp->ewii.lyrHigher,GUI_LYRWIN_STA_SLEEP);
			GUI_LyrWinSetSta(hdp->ewii.lyrLow,GUI_LYRWIN_STA_SLEEP);
            hdp->hFocusWin = Setting_TimeWndCreate(&hdp->ewii);
			if(hdp->hFocusWin){
            	GUI_WinSetFocusChild(hdp->hFocusWin);
			}
		}else {
            if(GUI_ManWinDelete(hdp->hFocusWin)==ORANGE_OK){
            	GUI_WinSetFocusChild(GUI_WinGetFirstChild(msg->h_deswin));
			    GUI_LyrWinSetSta(hdp->ewii.lyrLow,GUI_LYRWIN_STA_ON);
				GUI_LyrWinSetSta(hdp->ewii.lyrHigher,GUI_LYRWIN_STA_ON);
				GUI_LyrWinSetSta(hdp->ewii.inilyrHigher,GUI_LYRWIN_STA_ON);
            }
        }
        break;
    default:
#ifdef THIS_DEBUG
//        LogMI("Unhandled home window message (%d)", msg->id);
#endif
		GUI_ManWinDefaultProc(msg);
        break;
    }
    return 0;
}