bool IntersectRect(WRect *prcDest, const WRect *prcSrc1, const WRect *prcSrc2) { int aleft, atop, aright, abottom; // coordinates of prcSrc1 int bleft, btop, bright, bbottom; // coordinates of prcSrc2 // get the left, top, right, bottom coordinates of each source rect RCCOORD(prcSrc1, aleft, atop, aright, abottom); RCCOORD(prcSrc2, bleft, btop, bright, bbottom); // early rejection test if (aleft > bright || atop > bbottom || bleft > aright || btop > abottom) { if (prcDest) { SETAEERECT(prcDest, 0, 0, 0, 0); } return 0; // empty intersection } if (prcDest) { prcDest->x = MAX(aleft, bleft); prcDest->y = MAX(atop, btop); prcDest->dx = MIN(aright, bright) - prcDest->x+1; prcDest->dy = MIN(abottom, bbottom) - prcDest->y + 1; } return 1; }
// this function is called when your application is starting up boolean lizard_InitAppData(lizard* pMe) { // Get the device information for this handset. // Reference all the data by looking at the pMe->DeviceInfo structure // Check the API reference guide for all the handy device info you can get pMe->DeviceInfo.wStructSize = sizeof(pMe->DeviceInfo); ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&pMe->DeviceInfo); SETAEERECT( &pMe->m_rScreenRect, 0, 0, pMe->DeviceInfo.cxScreen, pMe->DeviceInfo.cyScreen); IGlobalVariable_New(pMe->a.m_pIShell, pMe->a.m_pIDisplay, &(pMe->DeviceInfo), (void **) &(pMe->glbVar)); pMe->glbVar->ClsId = pMe->a.clsID; pMe->glbVar->appState = APP_STATE_INIT; IMainUI_New( pMe->glbVar, 0, (void **)&(pMe->pMainUI)); IPositionThread_New(pMe->glbVar, 0, (void**)&(pMe->pPosThread),&( pMe->pMainUI->pPosUI)); // if there have been no failures up to this point then return success return TRUE; }
/* * 函数名称: PicBrowser::Init() * 功能介绍: 该函数为PicBrowser类的初始化函数,载入必要的资源。 * 输入参数: N/A * 输出参数: N/A * 返回值: 返回是否初始化成功 * 可能出现的意外: N/A */ boolean PicBrowser::Init() { AEEImageInfo mi; int nByteLoad=0; m_pwszTitle=(AECHAR *)MALLOC(MAX_STRING_LEN+1); //申请字符串资源空间 if(m_pwszTitle!=NULL) { nByteLoad=ISHELL_LoadResString(m_pIShell,FK_RES_FILE,IDS_TITLE,m_pwszTitle,MAX_STRING_LEN); //载入字符串 } m_pImage=ISHELL_LoadResImage(m_pIShell,FK_RES_FILE,IDB_PIC); //载入图片 if(m_pImage==NULL || nByteLoad==0) { m_bInitSuccess=FALSE; //资源装载失败 } else { m_nRed=255; //颜色值的R值初始化为255 //取图片信息 IIMAGE_GetInfo(m_pImage,&mi); m_nWidth=(int)mi.cx; m_nHeight=(int)mi.cy; //设置剪切矩形和图片初始位置 SETAEERECT(&m_rctImage,0,pApp->nNoarmalFontH,pApp->lcdW,pApp->lcdH-pApp->nNoarmalFontH); m_nImageDrawX=m_rctImage.x+(m_rctImage.dx-m_nWidth)/2; m_nImageDrawY=m_rctImage.y+(m_rctImage.dy-m_nHeight)/2; m_bInitSuccess=TRUE;//装载成功 } return m_bInitSuccess; }
/* * 函数名称: PicBrowser::Draw() * 功能介绍: 该函数为PicBrowser类的显示函数。作用是根据相应的位置信息和颜色信息在屏幕上显示一行字和一副图片。 * 输入参数: N/A * 输出参数: N/A * 返回值: 返回是否初始化成功 * 可能出现的意外: N/A */ void PicBrowser::Draw() { RGBVAL rgb; AEERect rctScreen; AECHAR pwszFailTip[7]= {0x8D44,0x6E90,0x88C5,0x8F7D,0x5931,0x8D25,0}; //资源装载失败 IDISPLAY_ClearScreen(m_pIDisplay); SETAEERECT(&rctScreen,0,0,pApp->lcdW,pApp->lcdH); if(!m_bInitSuccess) //若初始化失败,提示之 { IDISPLAY_DrawText(m_pIDisplay,AEE_FONT_NORMAL,pwszFailTip,-1,0,0,0,0); return; } //以下画彩色文字 rgb=IDISPLAY_SetColor(m_pIDisplay,CLR_USER_TEXT,MAKE_RGB(m_nRed,0,255-m_nRed)); IDISPLAY_DrawText(m_pIDisplay,AEE_FONT_NORMAL,m_pwszTitle,-1,0,0,0,0); IDISPLAY_SetColor(m_pIDisplay,CLR_USER_TEXT,rgb); //以下画图片 IDISPLAY_SetClipRect(m_pIDisplay,&m_rctImage); //设置剪切矩形 IDISPLAY_ClearScreen(m_pIDisplay); IIMAGE_Draw(m_pImage,m_nImageDrawX,m_nImageDrawY); IDISPLAY_DrawRect(m_pIDisplay,&m_rctImage,MAKE_RGB(0,0,0),RGB_NONE,IDF_RECT_FRAME); IDISPLAY_SetClipRect(m_pIDisplay,&rctScreen); //将剪切矩形设回来 }
uint32 IMainUI_Show(IMainUI* pUI){ CtlAddItem ai; AEERect rRect; boolean ok; pUI->glbVar->appState = APP_STATE_MAINUI; IDisplay_ClearScreen(pUI->glbVar->pIDisplay); IRESOURCE_LoadResource(pUI->glbVar->pIResouce, IDS_MAINUI_TITLE); IMENUCTL_SetTitle(pUI->pMenu, NULL, 0, pUI->glbVar->pIResouce->idsResource); // Add Items in the Menu IRESOURCE_LoadResource(pUI->glbVar->pIResouce, IDS_MAINUI_LOCATE); // Add Items in the Menu //ai.pText = pUI->glbVar->pIResouce->idsResource; ai.pImage = NULL; ai.pszResImage = ai.pszResText = NULL; ai.wImage = NULL; ai.wText = NULL; ai.dwData = 0; // Add New ai.wFont = AEE_FONT_NORMAL; ai.wItemID = IDS_MAINUI_LOCATE; //位置上报 IRESOURCE_LoadResource(pUI->glbVar->pIResouce, IDS_MAINUI_LOCATE); ai.pText = pUI->glbVar->pIResouce->idsResource; ai.wItemID = IDS_MAINUI_LOCATE; ok = IMENUCTL_AddItemEx(pUI->pMenu, &ai); //拍照上传 IRESOURCE_LoadResource(pUI->glbVar->pIResouce, IDS_MAINUI_PHOTO); ai.pText = pUI->glbVar->pIResouce->idsResource; ai.wItemID = IDS_MAINUI_PHOTO; IMENUCTL_AddItemEx(pUI->pMenu, &ai); SETAEERECT(&rRect, 0, 5, pUI->glbVar->pDevice->cxScreen, pUI->glbVar->pDevice->cyScreen - IDISPLAY_GetFontMetrics( pUI->glbVar->pIDisplay, AEE_FONT_NORMAL, NULL, NULL ) - 10); IMENUCTL_SetRect(pUI->pMenu, &rRect); IMENUCTL_SetActive(pUI->pMenu, FALSE); IMENUCTL_Redraw(pUI->pMenu); IRESOURCE_LoadResource(pUI->glbVar->pIResouce, IDS_MAINUI_SETTINGS); IMENUCTL_AddItem(pUI->pSK, NULL, NULL, IDS_MAINUI_SETTINGS, pUI->glbVar->pIResouce->idsResource, 0); IMENUCTL_Redraw(pUI->pSK); pUI->focusCTL = MAINUI_INIT; return AEE_SUCCESS; }
/*=========================================================================== This function draws the splash screen and brings up the main window after the splash timer runs out. ===========================================================================*/ void TS_DrawSplash(CTopSoupApp * pme,AECHAR* prompt,int msTimeout,PFNNOTIFY on_splashOver,void* pUser) { if( NULL == prompt ) return; if (pme->m_pWin) CTopSoupApp_DisableWin(pme); { IImage * pi = ISHELL_LoadResImage(pme->a.m_pIShell, NAVIGATE_RES_FILE, IDP_OBJECT_PROMPT); IStatic * pInfoStatic = NULL; if (pi) { AEERect rect; AEEImageInfo info; int16 x,y; IIMAGE_GetInfo(pi,&info); x = ( pme->m_rectWin.dx - info.cx ) / 2; y = pme->m_rectWin.y + ( pme->m_rectWin.dy - info.cy ) / 2; SETAEERECT(&rect,x,y,info.cx,info.cy); TS_DrawImage(pi, &rect, TRUE); ISHELL_CreateInstance(pme->a.m_pIShell, AEECLSID_STATIC, (void **)&pInfoStatic); ISTATIC_SetRect(pInfoStatic, &rect); ISTATIC_SetProperties(pInfoStatic, ST_MIDDLETEXT | ST_CENTERTEXT | ST_NOSCROLL); TS_FitStaticText(pme->a.m_pIDisplay, pInfoStatic, AEE_FONT_LARGE, prompt); TS_RELEASEIF(pi); TS_RELEASEIF(pInfoStatic); } // start the timer. if ( on_splashOver ) ISHELL_SetTimer(pme->a.m_pIShell, msTimeout, (PFNNOTIFY)on_splashOver, pUser); else ISHELL_SetTimer(pme->a.m_pIShell, msTimeout, (PFNNOTIFY)CTopSoupApp_onSplashDrawOver, pme); } }
/*============================================================================= FUNCTION: CDialerApp_SetupRecallDlg_Init DESCRIPTION: Initializes the controls for Calling dialog PARAMETERS: *pMe: CDialerApp object pointer RETURN VALUE: boolean: Returns TRUE if successful COMMENTS: SIDE EFFECTS: SEE ALSO: =============================================================================*/ boolean CDialerApp_SetupRecallDlg_Init(CDialerApp *pMe) { #if defined(FEATURE_WCDMA) || defined(FEATURE_GSM) IDialog *pActiveDlg; IStatic *pIStatic; IMenuCtl *pISoftKeyMenu; AEERect StaticRect; AEERect MenuRect; AECHAR *pszRecall = NULL; PRINT_FUNCTION_NAME(); // error checking if(pMe == NULL) { return FALSE; } pActiveDlg = CDialerApp_GetActiveDlg(pMe); // error checking if (pActiveDlg == NULL) { DIALER_ERR("Null pointer", 0,0,0); return FALSE; } // Get controls in dialog pIStatic = (IStatic*) IDIALOG_GetControl(pActiveDlg, IDC_STATIC_SETUP_RECALL); pISoftKeyMenu = (IMenuCtl*)IDIALOG_GetControl(pActiveDlg, IDC_SK_SETUP_RECALL); if((pIStatic == NULL) || (pISoftKeyMenu == NULL)) { DIALER_ERR("Null pointer", 0,0,0); return FALSE; // error } // init buffer pszRecall = (AECHAR*) MALLOC ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR)); if(pszRecall == NULL) { DIALER_ERR("No memory", 0,0,0); return FALSE; } // Update the softkey menu (void) IMENUCTL_DeleteAll(pISoftKeyMenu); (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE, IDS_OK, IDL_SK_SETUP_RECALL, NULL, 0); (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE, IDS_CANCEL, IDL_SK_SETUP_RECALL_CANCEL, NULL, 0); SetDefaultSoftkeyLook(pMe->a.m_pIShell, pISoftKeyMenu); // Set Static control size ISTATIC_GetRect(pIStatic, &StaticRect); IMENUCTL_GetRect(pISoftKeyMenu, &MenuRect); SETAEERECT(&StaticRect, 10, 10, pMe->m_rc.dx-20, pMe->m_rc.dy-MenuRect.dy-20); // Static Info Properties ISTATIC_SetRect(pIStatic, &StaticRect); ISTATIC_SetActive(pIStatic, FALSE); ISTATIC_SetProperties(pIStatic, ST_MIDDLETEXT | ST_CENTERTEXT | ST_NOSCROLL); (void) ISHELL_LoadResString(pMe->a.m_pIShell, DIALERAPP_RES_FILE, IDS_SETUP_RECALL, pszRecall, ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR))); (void) ISTATIC_SetText(pIStatic, pszRecall, NULL, AEE_FONT_BOLD, AEE_FONT_NORMAL); (void) IDIALOG_SetFocus(pActiveDlg, IDC_SK_SETUP_RECALL); FREEIF(pszRecall); return TRUE; #else return FALSE; #endif // defined(FEATURE_WCDMA) || defined(FEATURE_GSM) }
/*============================================================================= FUNCTION: CDialerApp_RecallDlg_Init DESCRIPTION: Initializes the controls for Calling dialog PARAMETERS: *pMe: CDialerApp object pointer RETURN VALUE: boolean: Returns TRUE if successful COMMENTS: SIDE EFFECTS: SEE ALSO: =============================================================================*/ boolean CDialerApp_RecallDlg_Init(CDialerApp *pMe) { #if defined(FEATURE_WCDMA) || defined(FEATURE_GSM) IDialog *pActiveDlg; IStatic *pIStatic; IMenuCtl *pISoftKeyMenu; AEERect StaticRect; AEERect MenuRect; AECHAR *pszRecall = NULL; AECHAR *pszName = NULL; CRecallDlgInfo *pDlgInfo = NULL; PRINT_FUNCTION_NAME(); // error checking if(pMe == NULL) { return FALSE; } pActiveDlg = CDialerApp_GetActiveDlg(pMe); // error checking if (pActiveDlg == NULL) { DIALER_ERR("Null pointer", 0,0,0); return FALSE; } pDlgInfo = (CRecallDlgInfo*) CDialerApp_GetActiveDlgInfo(pMe); // Get controls in dialog pIStatic = (IStatic*) IDIALOG_GetControl(pActiveDlg, IDC_STATIC_RECALL); pISoftKeyMenu = (IMenuCtl*)IDIALOG_GetControl(pActiveDlg, IDC_SK_RECALL); if((pIStatic == NULL) || (pISoftKeyMenu == NULL)) { DIALER_ERR("Null pointer", 0,0,0); return FALSE; // error } // init buffer pszRecall = (AECHAR*) MALLOC ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR)); if(pszRecall == NULL) { DIALER_ERR("No memory", 0,0,0); return FALSE; } pszName = (AECHAR*) MALLOC ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR)); if(pszName == NULL) { DIALER_ERR("No memory", 0,0,0); FREEIF(pszRecall); return FALSE; } // Update the softkey menu (void) IMENUCTL_DeleteAll(pISoftKeyMenu); if(AEECM_IS_VOICECALL_CONNECTED(pMe->m_pICM)) { (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE, IDS_HOLD_N_ACCEPT, IDL_RECALL_SK_HOLD_N_ACCEPT, NULL, 0); (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE, IDS_REL_N_ACCEPT, IDL_RECALL_SK_REL_N_ACCEPT, NULL, 0); } else { (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE, IDS_CALL, IDL_RECALL_SK_CALL, NULL, 0); } (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE, IDS_CANCEL, IDL_RECALL_SK_CANCEL, NULL, 0); SetDefaultSoftkeyLook(pMe->a.m_pIShell, pISoftKeyMenu); // Set Static control size ISTATIC_GetRect(pIStatic, &StaticRect); IMENUCTL_GetRect(pISoftKeyMenu, &MenuRect); SETAEERECT(&StaticRect, 10, 10, pMe->m_rc.dx-20, pMe->m_rc.dy-MenuRect.dy-20); // Static Info Properties ISTATIC_SetRect(pIStatic, &StaticRect); ISTATIC_SetActive(pIStatic, FALSE); ISTATIC_SetProperties(pIStatic, ST_MIDDLETEXT | ST_CENTERTEXT | ST_NOSCROLL); // Display name or number if(CheckAEEReturnStatus(ICM_GetCallInfo(pMe->m_pICM,pDlgInfo->callID, &(pMe->m_CallInfo), sizeof(AEECMCallInfo))) == TRUE) { CDialerApp_FormatNumberDisplayString(pMe, &(pMe->m_CallInfo), pszName, DIALERAPP_MAX_STR_SIZE, pMe->m_bNVAutoHyphen); (void) ISTATIC_SetText(pIStatic, pszName, NULL, AEE_FONT_BOLD, AEE_FONT_NORMAL); if(WSTRLEN(pMe->m_CallInfo.other_party_no) != 0) { if(pMe->m_bNVAutoHyphen == TRUE) { AECHAR *pszHyphen = CDialerApp_HyphenateNumberString( pMe->m_CallInfo.other_party_no); if(WSTRCMP(pszHyphen, pszName) != 0) { // want the phone number if it is not null and already being displayed (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE); (void) ISTATIC_SetTextEx(pIStatic, (byte*) pszHyphen, NULL, TRUE); } FREEIF(pszHyphen); } else { if(WSTRCMP(pMe->m_CallInfo.other_party_no, pszName) != 0) { // want the phone number if it is not null and already being displayed (void) ISTATIC_SetTextEx(pIStatic, (byte*) "\n", NULL, TRUE); (void) ISTATIC_SetTextEx(pIStatic, (byte*) pMe->m_CallInfo.other_party_no, NULL, TRUE); } } } } (void) ISHELL_LoadResString(pMe->a.m_pIShell, DIALERAPP_RES_FILE, IDS_AVAILABLE, pszRecall, ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR))); (void) ISTATIC_SetTextEx(pIStatic, (byte*) pszRecall, NULL, TRUE); (void) IDIALOG_SetFocus(pActiveDlg, IDC_SK_RECALL); FREEIF(pszRecall); FREEIF(pszName); return TRUE; #else return FALSE; #endif // defined(FEATURE_WCDMA) || defined(FEATURE_GSM) }
/*============================================================================= FUNCTION: CDialerApp_CallingDlg_Init DESCRIPTION: Initializes the controls for Calling dialog PARAMETERS: *pMe: CDialerApp object pointer RETURN VALUE: boolean: Returns TRUE if successful COMMENTS: SIDE EFFECTS: SEE ALSO: =============================================================================*/ boolean CDialerApp_CallingDlg_Init(CDialerApp *pMe) { IDialog *pActiveDlg; IStatic *pIStatic; IMenuCtl *pISoftKeyMenu; AEERect StaticRect; AEERect MenuRect; AECHAR *pszTitle = NULL; PRINT_FUNCTION_NAME(); // error checking if(pMe == NULL) { return FALSE; } pActiveDlg = CDialerApp_GetActiveDlg(pMe); // error checking if (pActiveDlg == NULL) { DIALER_ERR("Null pointer", 0,0,0); return FALSE; } // Get controls in dialog pIStatic = (IStatic*) IDIALOG_GetControl(pActiveDlg, IDC_STATIC_CALLING); pISoftKeyMenu = (IMenuCtl*)IDIALOG_GetControl(pActiveDlg, IDC_SK_CALLING); if((pIStatic == NULL) || (pISoftKeyMenu == NULL)) { DIALER_ERR("Null pointer", 0,0,0); return FALSE; // error } // init buffer pszTitle = (AECHAR*) MALLOC ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR)); if(pszTitle == NULL) { DIALER_ERR("No memory", 0,0,0); return FALSE; } // load the title #ifdef FEATURE_TTY if(CheckAEEReturnStatus(ICM_GetCallInfo(pMe->m_pICM, pMe->m_byCurrOrigCall, &(pMe->m_CallInfo), sizeof(AEECMCallInfo))) == FALSE) { DIALER_ERR("ICM_GetCallInfo FAILED", 0, 0, 0); return FALSE; } if( pMe->m_CallInfo.bTTYcall ) { (void) ISHELL_LoadResString(pMe->a.m_pIShell, DIALERAPP_RES_FILE, IDS_CALLING_TTY, pszTitle, ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR))); } else { (void) ISHELL_LoadResString(pMe->a.m_pIShell, DIALERAPP_RES_FILE, IDS_CALLING, pszTitle, ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR))); } #else (void) ISHELL_LoadResString(pMe->a.m_pIShell, DIALERAPP_RES_FILE, IDS_CALLING, pszTitle, ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR))); #endif // Update the softkey menu (void) IMENUCTL_DeleteAll(pISoftKeyMenu); (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE, IDS_END, IDL_SK_CALLING_END, NULL, 0); SetDefaultSoftkeyLook(pMe->a.m_pIShell, pISoftKeyMenu); // Set Static control size ISTATIC_GetRect(pIStatic, &StaticRect); IMENUCTL_GetRect(pISoftKeyMenu, &MenuRect); SETAEERECT(&StaticRect, 10, 10, pMe->m_rc.dx-20, pMe->m_rc.dy-MenuRect.dy-20); // Static Info Properties ISTATIC_SetRect(pIStatic, &StaticRect); ISTATIC_SetActive(pIStatic, FALSE); ISTATIC_SetProperties(pIStatic, ST_MIDDLETEXT | ST_UNDERLINE | ST_CENTERTITLE | ST_CENTERTEXT | ST_NOSCROLL); (void) ISTATIC_SetText(pIStatic, pszTitle, NULL, AEE_FONT_BOLD, AEE_FONT_NORMAL); (void) IDIALOG_SetFocus(pActiveDlg, IDC_SK_CALLING); // set timer for emergency calls "searching" if(CheckAEEReturnStatus(ICM_GetCallInfo(pMe->m_pICM, pMe->m_byCurrOrigCall, &(pMe->m_CallInfo), sizeof(AEECMCallInfo))) == TRUE) { if(pMe->m_CallInfo.call_type == AEECM_CALL_TYPE_EMERGENCY) { (void) ISHELL_SetTimer(pMe->a.m_pIShell, 1000, (PFNNOTIFY) CDialerApp_CallingDlg_DisplayRefresh, (void*) pMe); } } FREE(pszTitle); #ifdef FEATURE_UI_SECONDARY_DISP_SUPPORT #error code not present #endif return CDialerApp_CallingDlg_DisplayRefresh(pMe); }
/*============================================================================= FUNCTION: CDialerApp_SSRequestDlg_Init DESCRIPTION: Initializes the controls for SS Request dialog PARAMETERS: *pMe: CDialerApp object pointer RETURN VALUE: boolean: Returns TRUE if successful COMMENTS: SIDE EFFECTS: SEE ALSO: =============================================================================*/ boolean CDialerApp_SSRequestDlg_Init(CDialerApp *pMe) { #if defined(FEATURE_WCDMA) || defined(FEATURE_GSM) IDialog *pActiveDlg; IStatic *pIStatic; IMenuCtl *pISoftKeyMenu; AEERect StaticRect; AEERect MenuRect; AECHAR *pszStrBeg = NULL; AECHAR *pszStrEnd = NULL; AECHAR *pszBuf = NULL; AECHAR szFormat[] = {'%','s',' ','%','s','\0'}; CSSRequestDlgInfo *pDlgInfo = NULL; uint16 wIDSOp; PRINT_FUNCTION_NAME(); // error checking if(pMe == NULL) { return FALSE; } pActiveDlg = CDialerApp_GetActiveDlg(pMe); // error checking if (pActiveDlg == NULL) { DIALER_ERR("Null pointer", 0,0,0); return FALSE; } pDlgInfo = (CSSRequestDlgInfo*) CDialerApp_GetActiveDlgInfo(pMe); if(pDlgInfo == NULL) { DIALER_ERR("NULL Pointer", 0,0,0); return FALSE; } // Get controls in dialog pIStatic = (IStatic*) IDIALOG_GetControl(pActiveDlg, IDC_STATIC_SSREQUEST); pISoftKeyMenu = (IMenuCtl*)IDIALOG_GetControl(pActiveDlg, IDC_SK_SSREQUEST); if((pIStatic == NULL) || (pISoftKeyMenu == NULL)) { DIALER_ERR("Null pointer", 0,0,0); return FALSE; // error } // init buffer pszBuf = (AECHAR*) MALLOC ((DIALERAPP_MAX_STR_SIZE+DIALERAPP_MAX_NOTIF_BUFFER_SIZE)*sizeof(AECHAR)); pszStrBeg = (AECHAR*) MALLOC ((DIALERAPP_MAX_NOTIF_BUFFER_SIZE)*sizeof(AECHAR)); pszStrEnd = (AECHAR*) MALLOC ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR)); if((pszBuf == NULL) || (pszStrBeg == NULL) || (pszStrEnd == NULL)) { DIALER_ERR("No memory", 0,0,0); FREEIF(pszBuf); FREEIF(pszStrBeg); FREEIF(pszStrEnd); return FALSE; } switch(pDlgInfo->ssCode) { case AEESUPPSVC_CLIP: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_CLIP; break; case AEESUPPSVC_CLIR: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_CLIR; break; case AEESUPPSVC_COLP: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_COLP; break; case AEESUPPSVC_COLR: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_COLR; break; case AEESUPPSVC_ALL_FORWARDING_SS: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_ALL_FORWARDING_SS; break; case AEESUPPSVC_CFU: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_CFU; break; case AEESUPPSVC_ALL_CONDFWD_SS: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_ALL_CONDFWD_SS; break; case AEESUPPSVC_CFB: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_CFB; break; case AEESUPPSVC_CFNRY: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_CFNRY; break; case AEESUPPSVC_CFNRC: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_CFNRC; break; case AEESUPPSVC_CW: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_CW; break; case AEESUPPSVC_ALL_CALL_RSTRCT_SS: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_ALL_CALL_RSTRCT_SS; break; case AEESUPPSVC_BARRING_OUTGOING_CALLS: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_BARRING_OUTGOING_CALLS; break; case AEESUPPSVC_BAOC: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_BAOC; break; case AEESUPPSVC_BOIC: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_BOIC; break; case AEESUPPSVC_BOIC_EXHC: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_BOIC_EXHC; break; case AEESUPPSVC_BARRING_OF_INCOMING_CALLS: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_BARRING_OF_INCOMING_CALLS; break; case AEESUPPSVC_BAIC: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_BAIC; break; case AEESUPPSVC_BICROAM: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_BICROAM; break; case AEESUPPSVC_CCBS: wIDSOp = IDS_SUPPSYS_SS_CODE_E_TYPE_CCBS; break; default: wIDSOp = IDS_SS; break; } (void) ISHELL_LoadResString(pMe->a.m_pIShell, DIALERAPP_RES_FILE, wIDSOp, pszStrBeg, ((DIALERAPP_MAX_NOTIF_BUFFER_SIZE)*sizeof(AECHAR))); (void) ISHELL_LoadResString(pMe->a.m_pIShell, DIALERAPP_RES_FILE, IDS_REQUESTING, pszStrEnd, ((DIALERAPP_MAX_STR_SIZE)*sizeof(AECHAR))); WSPRINTF(pszBuf, (sizeof(AECHAR)*(DIALERAPP_MAX_NOTIF_BUFFER_SIZE+DIALERAPP_MAX_STR_SIZE)), szFormat, pszStrBeg, pszStrEnd); // Update the softkey menu (void) IMENUCTL_DeleteAll(pISoftKeyMenu); (void) IMENUCTL_AddItem(pISoftKeyMenu, DIALERAPP_RES_FILE, IDS_CANCELSSREQUEST, IDL_SK_SSREQUEST_CANCEL, NULL, 0); SetDefaultSoftkeyLook(pMe->a.m_pIShell, pISoftKeyMenu); // Set Static control size ISTATIC_GetRect(pIStatic, &StaticRect); IMENUCTL_GetRect(pISoftKeyMenu, &MenuRect); SETAEERECT(&StaticRect, 10, 10, pMe->m_rc.dx-20, pMe->m_rc.dy-MenuRect.dy-20); // Static Info Properties ISTATIC_SetRect(pIStatic, &StaticRect); ISTATIC_SetActive(pIStatic, FALSE); ISTATIC_SetProperties(pIStatic, ST_MIDDLETEXT | ST_CENTERTEXT | ST_NOSCROLL); // check if alpha should be displayed if(WSTRLEN(pDlgInfo->szAlpha) > 0) { (void) ISTATIC_SetText(pIStatic, NULL, pDlgInfo->szAlpha, AEE_FONT_BOLD, AEE_FONT_BOLD); } else { (void) ISTATIC_SetText(pIStatic, NULL, pszBuf, AEE_FONT_BOLD, AEE_FONT_BOLD); } (void) IDIALOG_SetFocus(pActiveDlg, IDC_SK_SSREQUEST); FREE(pszBuf); FREE(pszStrBeg); FREE(pszStrEnd); return TRUE; #else return FALSE; #endif /* defined(FEATURE_WCDMA) || defined(FEATURE_GSM) */ }
/*=========================================================================== This function redraws the main window. ===========================================================================*/ static void CWhereDetailsWin_Redraw(IWindow * po) { CWhereDetailsWin * pme = (CWhereDetailsWin *)po; if (!pme->m_bActive) return; //XXX __begin IDISPLAY_ClearScreen(pme->m_pIDisplay); TS_DrawBackgroud(po); { AECHAR bufRes[MP_MAX_STRLEN]; int a = 0, b = 0; int h = 0, xx = 0, yy = 0, dxx = 0, dyy = 0; AEERect rect; int xMargin = 0; ISHELL_LoadResString(pme->m_pOwner->a.m_pIShell,NAVIGATE_RES_FILE,IDS_STRING_WHERE_DETAILS_0, bufRes, sizeof(bufRes)); h = IDISPLAY_GetFontMetrics(pme->m_pIDisplay, WIN_FONT, &a, &b) + 12; xx = xMargin; yy = 64; dxx = pme->m_pOwner->m_cxWidth - 2; dyy = h; SETAEERECT(&rect, xx, yy, dxx, dyy); TS_DrawText(pme->m_pIDisplay, WIN_FONT, bufRes, &rect); ISHELL_LoadResString(pme->m_pOwner->a.m_pIShell,NAVIGATE_RES_FILE,IDS_STRING_WHERE_DETAILS_1, bufRes, sizeof(bufRes)); h = IDISPLAY_GetFontMetrics(pme->m_pIDisplay, WIN_FONT, &a, &b) + 12; xx = xMargin; yy += h; dxx = pme->m_pOwner->m_cxWidth - 2; dyy = h; SETAEERECT(&rect, xx, yy, dxx, dyy); TS_DrawText(pme->m_pIDisplay, WIN_FONT, bufRes, &rect); ISHELL_LoadResString(pme->m_pOwner->a.m_pIShell,NAVIGATE_RES_FILE,IDS_STRING_WHERE_DETAILS_2, bufRes, sizeof(bufRes)); h = IDISPLAY_GetFontMetrics(pme->m_pIDisplay, WIN_FONT, &a, &b) + 12; xx = xMargin; yy += h; dxx = pme->m_pOwner->m_cxWidth - 2; dyy = h; SETAEERECT(&rect, xx, yy, dxx, dyy); TS_DrawText(pme->m_pIDisplay, WIN_FONT, bufRes, &rect); ISHELL_LoadResString(pme->m_pOwner->a.m_pIShell,NAVIGATE_RES_FILE,IDS_STRING_WHERE_DETAILS_3, bufRes, sizeof(bufRes)); h = IDISPLAY_GetFontMetrics(pme->m_pIDisplay, WIN_FONT, &a, &b) + 12; xx = xMargin; yy += h; dxx = pme->m_pOwner->m_cxWidth - 2; dyy = h; SETAEERECT(&rect, xx, yy, dxx, dyy); TS_DrawText(pme->m_pIDisplay, WIN_FONT, bufRes, &rect); ISHELL_LoadResString(pme->m_pOwner->a.m_pIShell,NAVIGATE_RES_FILE,IDS_STRING_WHERE_DETAILS_4, bufRes, sizeof(bufRes)); h = IDISPLAY_GetFontMetrics(pme->m_pIDisplay, WIN_FONT, &a, &b) + 12; xx = xMargin; yy += h; dxx = pme->m_pOwner->m_cxWidth - 2; dyy = h; SETAEERECT(&rect, xx, yy, dxx, dyy); TS_DrawText(pme->m_pIDisplay, WIN_FONT, bufRes, &rect); ISHELL_LoadResString(pme->m_pOwner->a.m_pIShell,NAVIGATE_RES_FILE,IDS_STRING_WHERE_DETAILS_5, bufRes, sizeof(bufRes)); h = IDISPLAY_GetFontMetrics(pme->m_pIDisplay, WIN_FONT, &a, &b) + 12; xx = xMargin; yy += h; dxx = pme->m_pOwner->m_cxWidth - 2; dyy = h; SETAEERECT(&rect, xx, yy, dxx, dyy); TS_DrawText(pme->m_pIDisplay, WIN_FONT, bufRes, &rect); } IDISPLAY_Update(pme->m_pIDisplay); //XXX _end }
/*=========================================================================== FUNCTION SampleAppWizard_HandleEvent DESCRIPTION This is the EventHandler for this app. All events to this app are handled in this function. All APPs must supply an Event Handler. PROTOTYPE: boolean SampleAppWizard_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam) PARAMETERS: pi: Pointer to the AEEApplet structure. This structure contains information specific to this applet. It was initialized during the AEEClsCreateInstance() function. ecode: Specifies the Event sent to this applet wParam, dwParam: Event specific data. DEPENDENCIES none RETURN VALUE TRUE: If the app has processed the event FALSE: If the app did not process the event SIDE EFFECTS none ===========================================================================*/ static boolean MemChecker_HandleEvent(MemChecker* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam) { #if 1 // for debugging if (EVT_POINTER_DOWN == eCode) { AEERect rc; int x, y; AEE_POINTER_GET_XY((char *)dwParam, &x, &y); SETAEERECT(&rc, x, y, 2, 2); IDisplay_FillRect(pMe->a.m_pIDisplay, &rc, RGB_BLACK); IDisplay_Update(pMe->a.m_pIDisplay); } #endif if (pMe->m_pIDesktopWindow && IDesktopWindow_HandleEvent(pMe->m_pIDesktopWindow, eCode, wParam, dwParam)) { return TRUE; } switch (eCode) { // App is told it is starting up case EVT_APP_START: DBGPRINTF("##MemChecker_HandleEvent: EVT_APP_START ##############"); if (pMe->m_bBackground) { pMe->m_bBackground = FALSE; IContainer_Invalidate((IContainer *)pMe->m_pIDesktopWindow, NULL, NULL); return TRUE; } ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_APPLETCTL, (void **)&pMe->m_pIAppletCtl); IniFileParser_LoadFile(pMe->a.m_pIShell, MemChecker_ParseLineCB, pMe); // ClassFactory & DestopWindow pMe->m_pIClassFactory = XClassFactory_New(); IClassFactory_CreateInstance(pMe->m_pIClassFactory, XCLSID_DesktopWindow, (void **)&pMe->m_pIDesktopWindow); IWidget_SetName((IWidget*)pMe->m_pIDesktopWindow, "DesktopWindow"); IDesktopWindow_SetDisplay(pMe->m_pIDesktopWindow, pMe->a.m_pIDisplay); IWidget_SetRectEx((IWidget*)pMe->m_pIDesktopWindow, 0, 0, pMe->DeviceInfo.cxScreen, pMe->DeviceInfo.cyScreen); MemChecker_CreateMainMenu(pMe); return(TRUE); // App is told it is exiting case EVT_APP_STOP: DBGPRINTF("##MemChecker_HandleEvent: EVT_APP_STOP ###################"); if (pMe->m_bBackground) { *(boolean *)dwParam = FALSE; return TRUE; } CALLBACK_Cancel(&pMe->m_cbModUnload); CALLBACK_Cancel(&pMe->m_cbWaitForAppStartup); MemHook_Uninstall(); RELEASEIF(pMe->m_pIClassFactory); RELEASEIF(pMe->m_pIDesktopWindow); RELEASEIF(pMe->m_pIAppletCtl); return(TRUE); // App is being suspended case EVT_APP_SUSPEND: DBGPRINTF("##MemChecker_HandleEvent: EVT_APP_SUSPEND ################"); return(TRUE); // App is being resumed case EVT_APP_RESUME: DBGPRINTF("##MemChecker_HandleEvent: EVT_APP_RESUME #################"); IContainer_Invalidate((IContainer *)pMe->m_pIDesktopWindow, NULL, NULL); return(TRUE); // An SMS message has arrived for this app. Message is in the dwParam above as (char *) // sender simply uses this format "//BREW:ClassId:Message", example //BREW:0x00000001:Hello World case EVT_APP_MESSAGE: // Add your code here... return(TRUE); // If nothing fits up to this point then we'll just break out default: break; } return FALSE; }
/*=========================================================================== FUNCTION: CGMENUCTL_Redraw DESCRIPTION: Redraws the control on the device screen. If the control currently has focus, the control is drawn with a border. PARAMETERS: pCtl [in] - A pointer to a CGMeuCtl instance DEPENDENCIES: None RETURN VALUE: None SIDE EFFECTS: Updates the device screen. ===========================================================================*/ extern void CGMENUCTL_Redraw(CGMeuCtl* pMe) { AEEApplet* pApp = (AEEApplet*)GETAPPINSTANCE(); AEERect rRect; if (pMe) { int i, j, height, h, a, b; AEEImageInfo infSe, infIc; AEERect rec; int xx, yy, dxx, dyy; RGBVAL oldColor; GMenuItem * pData = NULL; TQueueList * p = pMe->m_pDataList; ZEROAT(&infSe); IDISPLAY_EraseRect(pApp->m_pIDisplay, &pMe->m_Rect); h = IDISPLAY_GetFontMetrics(pApp->m_pIDisplay, AEE_FONT_NORMAL, &a, &b); //绘制背景图 if (pMe->m_pImageBk) { IIMAGE_SetDrawSize(pMe->m_pImageBk, pMe->m_Rect.dx, pMe->m_Rect.dy); IIMAGE_Draw(pMe->m_pImageBk, pMe->m_Rect.x, pMe->m_Rect.y); } //确定菜单高度 if (pMe->m_pImageSe) { IIMAGE_GetInfo(pMe->m_pImageSe, &infSe); IIMAGE_SetDrawSize(pMe->m_pImageSe, pMe->m_Rect.dx, infSe.cy); } else { infSe.cx = pMe->m_Rect.dx; infSe.cy = h; } //绘制菜单项 i = 0; j = 0; height = pMe->m_Rect.y + 5; while (p) { AECHAR iTemText[256]; if (i < pMe->m_startIndex) { p = p->pNext; i++; continue; } if (j >= pMe->m_pageSize) { break; } pData = (GMenuItem*)p->pData; //加载菜单ICON if (pData->pImage == NULL && pData->pszResImage != NULL && pData->wImage != 0) { pData->pImage = ISHELL_LoadResImage(pApp->m_pIShell, pData->pszResImage, pData->wImage); } //加载菜单Text if (pData->pszResText != NULL && pData->wText != 0) { MEMSET(iTemText, 0, sizeof(AECHAR)*256); ISHELL_LoadResString(pApp->m_pIShell, pData->pszResText, pData->wText, iTemText, sizeof(AECHAR)* 256); pData->pText = iTemText; } if (i == pMe->m_Index) { if (pMe->m_pImageSe) IIMAGE_Draw(pMe->m_pImageSe, pMe->m_Rect.x, height + 2); ZEROAT(&infIc); if (pData->pImage) { IIMAGE_GetInfo(pData->pImage, &infIc); IIMAGE_Draw(pData->pImage, pMe->m_Rect.x, height + (infSe.cy - infIc.cy) / 2); } xx = pMe->m_Rect.x + infIc.cx + 2; yy = height + (infSe.cy - h) / 2 + 2; dxx = pMe->m_Rect.x + pMe->m_Rect.dx - xx; dyy = h; SETAEERECT(&rec, xx, yy, dxx, dyy); oldColor = IDISPLAY_SetColor(pApp->m_pIDisplay, CLR_USER_TEXT, pMe->m_Colors.cSelText); if (pMe->m_Properties & 0x02) IDISPLAY_DrawText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText + pMe->m_textPos, -1, xx + 1, yy, &rec, IDF_TEXT_TRANSPARENT); IDISPLAY_DrawText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText + pMe->m_textPos, -1, xx, yy, &rec, IDF_TEXT_TRANSPARENT); if (pMe->m_isActive) { if (IDISPLAY_MeasureText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText) > dxx) { if (IDISPLAY_MeasureText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText + pMe->m_textPos) > dxx) { pMe->m_textPos++; } else pMe->m_textPos = 0; //单行太长的话,动态显示 ISHELL_SetTimer(pApp->m_pIShell, 300, (PFNNOTIFY)CGMENUCTL_Redraw, (void*)pMe); } } height += infSe.cy; IDISPLAY_SetColor(pApp->m_pIDisplay, CLR_USER_TEXT, oldColor); } else { ZEROAT(&infIc); if (pData->pImage) { IIMAGE_GetInfo(pData->pImage, &infIc); IIMAGE_Draw(pData->pImage, pMe->m_Rect.x, height + (infSe.cy - infIc.cy) / 2); } xx = pMe->m_Rect.x + infIc.cx + 2; yy = height + (infSe.cy - h) / 2 + 2; dxx = pMe->m_Rect.x + pMe->m_Rect.dx - xx; dyy = h; SETAEERECT(&rec, xx, yy, dxx, dyy); oldColor = IDISPLAY_SetColor(pApp->m_pIDisplay, CLR_USER_TEXT, pMe->m_Colors.cText); if (pMe->m_Properties & 0x01) IDISPLAY_DrawText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText, -1, xx + 1, yy, &rec, IDF_TEXT_TRANSPARENT); IDISPLAY_DrawText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText, -1, xx, yy, &rec, IDF_TEXT_TRANSPARENT); height += infSe.cy; IDISPLAY_SetColor(pApp->m_pIDisplay, CLR_USER_TEXT, oldColor); } p = p->pNext; i++; j++; } IDISPLAY_Update(pApp->m_pIDisplay); return ; } }