/*=========================================================================== FUNCTION: BuildMainMenu DESCRIPTION This function constructs the menu control that allows the user to select a usage example to execute. The command ID for each menu item is passed to the usage example function above when the user selects the menu item for that example. PROTOTYPE: static void BuildMainMenu(CallDemoApp * pMe) PARAMETERS: pMe: [in]: Contains a pointer to the usage app data structure. DEPENDENCIES None RETURN VALUE None SIDE EFFECTS None ===========================================================================*/ static void BuildMainMenu(CallDemoApp *pMe) { AEERect qrc; AEEDeviceInfo di; AECHAR * szBuf; // Make sure the pointers we'll be using are valid if (pMe == NULL || pMe->a.m_pIShell == NULL || pMe->m_pIMenu == NULL) { return; } if ((szBuf = (AECHAR *) MALLOC(TEXT_BUFFER_SIZE)) == NULL) { return; } // Set Title STR_TO_WSTR("CALLDEMO & CALLDEMOMsg Example", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_SetTitle(pMe->m_pIMenu, NULL, 0, szBuf); //Set the Rectangle for the Menu ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&di); qrc.x = 0; qrc.y = 0; qrc.dx = di.cxScreen; qrc.dy = di.cyScreen; IMENUCTL_SetRect(pMe->m_pIMenu, &qrc); //Add individual entries to the Menu // Add originate call to menu STR_TO_WSTR("1. Originate Call", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_CALL_ORIG, szBuf, 0); STR_TO_WSTR("2. End OutGoing Call", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_CALL_OUTGOING_END, szBuf, 0); STR_TO_WSTR("3. End Incoming Call", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_CALL_INCOMING_END, szBuf, 0); STR_TO_WSTR("4. Call and DTMF", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_CALL_DTMF, szBuf, 0); STR_TO_WSTR("5. Call Party", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_CALL_PARTY3, szBuf, 0); STR_TO_WSTR("6. Call answer", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_CALL_ANSWER, szBuf, 0); STR_TO_WSTR("7. Call redirect", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_CALL_REDIRECT, szBuf, 0); // Activate menu IMENUCTL_SetActive(pMe->m_pIMenu,TRUE); FREE(szBuf); }
/*=========================================================================== FUNCTION: BuildMainMenu DESCRIPTION This function constructs the menu control that allows the user to select a usage example to execute. The command ID for each menu item is passed to the usage example function above when the user selects the menu item for that example. PROTOTYPE: static void BuildMainMenu(ISmsApp * pMe) PARAMETERS: pMe: [in]: Contains a pointer to the usage app data structure. DEPENDENCIES None RETURN VALUE None SIDE EFFECTS None ===========================================================================*/ static void BuildMainMenu(ISmsApp *pMe) { AEERect qrc; AEEDeviceInfo di; AECHAR * szBuf; // Make sure the pointers we'll be using are valid if (pMe == NULL || pMe->a.m_pIShell == NULL || pMe->m_pIMenu == NULL) return; if ((szBuf = (AECHAR *) MALLOC(TEXT_BUFFER_SIZE)) == NULL) return; // Set Title STR_TO_WSTR("ISMS & ISMSMsg Example", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_SetTitle(pMe->m_pIMenu, NULL, 0, szBuf); //Set the Rectangle for the Menu ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&di); qrc.x = 0; qrc.y = 0; qrc.dx = di.cxScreen; qrc.dy = di.cyScreen; IMENUCTL_SetRect(pMe->m_pIMenu, &qrc); //Add individual entries to the Menu // Add SMS Sending to menu STR_TO_WSTR("1. SMS Tx ASCII", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_SMS_TX_ASCII, szBuf, 0); STR_TO_WSTR("2. SMS Tx UNICODE", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_SMS_TX_UNICODE, szBuf, 0); STR_TO_WSTR("3. SMS Tx UTF-8", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_SMS_TX_UTF8, szBuf, 0); // Add SMS Receive in TAPI method to menu STR_TO_WSTR("4. Rx SMS in method TAPI ", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_SMS_RX_TAPI_METHOD, szBuf, 0); // Add SMS Receive in ISMS method to menu STR_TO_WSTR("5. Rx SMS in method ISMSNotifier", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_SMS_RX_ISMS_METHOD, szBuf, 0); // SMS storage status STR_TO_WSTR("6. SMS storage status", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_SMS_STORE_STATUS, szBuf, 0); // read SMS from store STR_TO_WSTR("7. SMS store read", szBuf, TEXT_BUFFER_SIZE); IMENUCTL_AddItem(pMe->m_pIMenu, 0, 0, USAGE_SMS_STORE_ENUM_READ, szBuf, 0); // Activate menu IMENUCTL_SetActive(pMe->m_pIMenu,TRUE); FREE(szBuf); }
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; }
/*=========================================================================== FUNCTION: ABR_GetContactRec DESCRIPTION: This function get all record from address book and show every record as a manu item PARAMETERS: pMe [in] - Pointer to the CAddrBookRuim structure. This structure contains information specific to this applet. pMenu[out] - menu show all address book menu pnTotal[out] - all records count of address book DEPENDENCIES: None RETURN VALUE: AEE_SUCCESS - successfully enumate all record in address book other - fail SIDE EFFECTS: None ===========================================================================*/ int32 ABR_GetContactRec( CAddrBookRuim * pMe, AEECLSID ContactCLS, IMenuCtl* pMenu, uint32* pnTotal) { IAddrBook *pb; IAddrRec *pR; int nRet = 0; uint32 nTempTotal; boolean bFlgNameGet; boolean bFlgNumGet; AECHAR *aszNum, *aszName; if(pMe==NULL || pMe->pIShell==NULL || pMenu==NULL || pnTotal==NULL) { return (-1); } aszNum = (AECHAR *)MALLOC(MAX_CONTACT_NUM_SIZE*sizeof(AECHAR)); aszName = (AECHAR *)MALLOC(MAX_CONTACT_NAME_SIZE*sizeof(AECHAR)); if(aszNum==NULL || aszName==NULL) { return (-2); } // Clear any items from the IMenuCtl IMENUCTL_Reset( pMenu ); IMENUCTL_SetRect( pMenu, &pMe->m_rScreenRect ); IMENUCTL_SetTitle( pMenu, ADDRBOOKRUIM_RES_FILE, IDS_VIEW_MENU, NULL); nTempTotal = 0; if(!ISHELL_CreateInstance(pMe->pIShell, ContactCLS, (void **)&pb)) { nRet = IADDRBOOK_EnumRecInit(pb, AEE_ADDR_CAT_NONE, AEE_ADDRFIELD_NONE, NULL, 0); if(nRet == AEE_SUCCESS) { while((pR = IADDRBOOK_EnumNextRec(pb)) != NULL) { AEEAddrField *ptr = NULL; int i; int nFields; bFlgNameGet = FALSE; bFlgNumGet = FALSE; MEMSET( aszName, 0, MAX_CONTACT_NAME_SIZE*sizeof(AECHAR)); MEMSET( aszNum, 0, MAX_CONTACT_NUM_SIZE*sizeof(AECHAR)); nFields= IADDRREC_GetFieldCount(pR); for(i = 0; i < nFields; i++) { ptr = IADDRREC_GetField(pR,i); DBGPRINTF("lintao fID =%d", ptr->fID); // find name field and save it; if ( ptr->fID == AEE_ADDRFIELD_NAME ||ptr->fID == AEE_ADDRFIELD_FIRSTNAME ||ptr->fID == AEE_ADDRFIELD_LASTNAME ||ptr->fID == AEE_ADDRFIELD_NICKNAME) { if(bFlgNameGet==FALSE) { bFlgNameGet = TRUE; WSTRCPY(aszName, ptr->pBuffer); } } // find number field and save it; if ( ptr->fID >= AEE_ADDRFIELD_PHONE_WORK && ptr->fID <= AEE_ADDRFIELD_PHONE_OTHER) { if(bFlgNumGet==FALSE) { bFlgNumGet = TRUE; WSTRCPY(aszNum, ptr->pBuffer); } } } if(bFlgNameGet && bFlgNumGet) { nTempTotal++; IMENUCTL_AddItem(pMenu, NULL, 0, ABR_REC_LIST_ID + IADDRREC_GetRecID(pR), aszName, NULL); } } } IADDRBOOK_Release(pb); } else { nRet=1; // error : ISHELL_CreateInstance fail } *pnTotal = nTempTotal; IMENUCTL_SetActive( pMenu, TRUE ); FREEIF(aszNum); FREEIF(aszName); return nRet; }
/*======================================================================= Function: SamplePosDet_OptimSettings_HandleEvent() Description: Event handler function for the optimization mode settings menu. Prototype: boolean SamplePosDet_OptimSettings_HandleEvent(CSamplePosDet *pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam) Parameters: pMe: [in]. CSamplePosDet instance. eCode: [in]. Event code. wParam: [in]. Event wParam. dwParam: [in]. Event dwParam. Return Value: TRUE - If the event was handled by this menu. FALSE - If the event was not handled. Comments: None Side Effects: None See Also: None =======================================================================*/ boolean SamplePosDet_OptimSettings_HandleEvent(CSamplePosDet *pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam) { boolean bHandled = FALSE; IMenuCtl *pMenuCtl = SamplePosDet_GetScreenData( pMe ); switch( eCode ) { case EVT_SCREEN: if( wParam == SCREEN_PARAM_INIT ) { if( pMenuCtl ) { /* This is not expected to happen */ SamplePosDet_DrawScreen( pMe, 0 ); bHandled = TRUE; } else { if( ISHELL_CreateInstance( pMe->theApp.m_pIShell, AEECLSID_MENUCTL, (void **)&pMenuCtl ) == SUCCESS ) { //IMENUCTL_AddItem( pMenuCtl, SAMPLEPOSDET_RES_FILE, IDS_OPT_NONE, // AEEGPS_OPT_NONE, NULL, (uint32)pMenuCtl ); IMENUCTL_AddItem( pMenuCtl, SAMPLEPOSDET_RES_FILE, IDS_OPT_SPEED, AEEGPS_OPT_SPEED, NULL, (uint32)pMenuCtl ); IMENUCTL_AddItem( pMenuCtl, SAMPLEPOSDET_RES_FILE, IDS_OPT_ACCURACY, AEEGPS_OPT_ACCURACY, NULL, (uint32)pMenuCtl ); //IMENUCTL_AddItem( pMenuCtl, SAMPLEPOSDET_RES_FILE, IDS_OPT_PAYLOAD, // AEEGPS_OPT_PAYLOAD, NULL, (uint32)pMenuCtl ); IMENUCTL_AddItem( pMenuCtl, SAMPLEPOSDET_RES_FILE, IDS_OPT_DEFAULT, AEEGPS_OPT_DEFAULT, NULL, (uint32)pMenuCtl ); IMENUCTL_SetTitle( pMenuCtl, SAMPLEPOSDET_RES_FILE, IDS_OPT_SETTINGS_TITLE, NULL ); SamplePosDet_SetScreenData( pMe, (void *)pMenuCtl ); SamplePosDet_DrawScreen( pMe, 0 ); bHandled = TRUE; } } } else if( wParam == SCREEN_PARAM_CLOSE ) { IMENUCTL_Release( pMenuCtl ); SamplePosDet_SetScreenData( pMe, 0 ); pMe->currentHandler = 0; bHandled = TRUE; } else if( wParam == SCREEN_PARAM_PAINT ) { if( IMENUCTL_IsActive( pMenuCtl ) ) { IMENUCTL_Redraw( pMenuCtl ); } else { IMENUCTL_SetActive( pMenuCtl, TRUE ); /* Also causes a menu draw */ } } break; case EVT_KEY: if( wParam == AVK_CLR ) { SamplePosDet_GotoScreen( pMe, SCREENID_CONFIG, 0 ); bHandled = TRUE; break; } case EVT_KEY_PRESS: case EVT_KEY_RELEASE: bHandled = IMENUCTL_HandleEvent( pMenuCtl, eCode, wParam, dwParam ); break; case EVT_COMMAND: if( dwParam == (uint32)pMenuCtl ) { switch( wParam ) { case AEEGPS_OPT_SPEED: case AEEGPS_OPT_ACCURACY: // Set the optimization mode and save the settings pMe->gpsSettings.optim = (AEEGPSOpt)wParam; SamplePosDet_SaveGPSSettings(pMe); SamplePosDet_GotoScreen( pMe, SCREENID_CONFIG, 0 ); bHandled = TRUE; break; default: break; } } break; } return bHandled; }
/*======================================================================= Function: SamplePosDet_ConfigMenu_HandleEvent() Description: Event handler function for the configuration menu. Prototype: boolean SamplePosDet_ConfigMenu_HandleEvent(CSamplePosDet *pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam) Parameters: pMe: [in]. CSamplePosDet instance. eCode: [in]. Event code. wParam: [in]. Event wParam. dwParam: [in]. Event dwParam. Return Value: TRUE - If the event was handled by this menu. FALSE - If the event was not handled. Comments: None Side Effects: None See Also: None =======================================================================*/ boolean SamplePosDet_ConfigMenu_HandleEvent(CSamplePosDet *pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam) { boolean bHandled = FALSE; IMenuCtl *pMenuCtl = SamplePosDet_GetScreenData( pMe ); switch( eCode ) { case EVT_SCREEN: if( wParam == SCREEN_PARAM_INIT ) { if( pMenuCtl ) { /* This is not expected to happen */ SamplePosDet_DrawScreen( pMe, 0 ); bHandled = TRUE; } else { if( ISHELL_CreateInstance( pMe->theApp.m_pIShell, AEECLSID_MENUCTL, (void **)&pMenuCtl ) == SUCCESS ) { IMENUCTL_AddItem( pMenuCtl, SAMPLEPOSDET_RES_FILE, IDS_CONFIG_SERVER, IDS_CONFIG_SERVER, NULL, (uint32)pMenuCtl ); IMENUCTL_AddItem( pMenuCtl, SAMPLEPOSDET_RES_FILE, IDS_CONFIG_QOS, IDS_CONFIG_QOS, NULL, (uint32)pMenuCtl ); IMENUCTL_AddItem( pMenuCtl, SAMPLEPOSDET_RES_FILE, IDS_CONFIG_OPT, IDS_CONFIG_OPT, NULL, (uint32)pMenuCtl ); IMENUCTL_SetTitle( pMenuCtl, SAMPLEPOSDET_RES_FILE, IDS_CONFIG_TITLE, NULL ); SamplePosDet_SetScreenData( pMe, (void *)pMenuCtl ); SamplePosDet_DrawScreen( pMe, 0 ); bHandled = TRUE; } } } else if( wParam == SCREEN_PARAM_CLOSE ) { IMENUCTL_Release( pMenuCtl ); SamplePosDet_SetScreenData( pMe, 0 ); pMe->currentHandler = 0; bHandled = TRUE; } else if( wParam == SCREEN_PARAM_PAINT ) { if( IMENUCTL_IsActive( pMenuCtl ) ) { IMENUCTL_Redraw( pMenuCtl ); } else { IMENUCTL_SetActive( pMenuCtl, TRUE ); /* Also causes a menu draw */ } } break; case EVT_KEY: if( wParam == AVK_CLR ) { SamplePosDet_GotoScreen( pMe, SCREENID_MAINMENU, 0 ); bHandled = TRUE; break; } case EVT_KEY_PRESS: case EVT_KEY_RELEASE: bHandled = IMENUCTL_HandleEvent( pMenuCtl, eCode, wParam, dwParam ); break; case EVT_COMMAND: if( dwParam == (uint32)pMenuCtl ) { switch( wParam ) { case IDS_CONFIG_SERVER: SamplePosDet_GotoScreen( pMe, SCREENID_SERVER_SETTINGS, 0 ); bHandled = TRUE; break; case IDS_CONFIG_QOS: SamplePosDet_GotoScreen( pMe, SCREENID_QOS_SETTINGS, 0 ); bHandled = TRUE; break; case IDS_CONFIG_OPT: SamplePosDet_GotoScreen( pMe, SCREENID_OPTIM_SETTINGS, 0 ); default: break; } } break; } return bHandled; }