/*=========================================================================== 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; }
void TS_SetMenuAttr(IMenuCtl * pMenu, AEECLSID clsMenu, uint16 nColorDepth, AEERect * pRect, uint32 dwProps) { AEEItemStyle sel, normal; AEEMenuColors col; // Menu Style normal.ft = MENU8_FT; normal.xOffset = 0; normal.yOffset = 0; normal.roImage = MENU8_RO; sel.ft = MENU8_SELECT_FT; sel.xOffset = 0; sel.yOffset = 0; sel.roImage = MENU8_SELECT_RO; // Menu Colors col.cSelText = MENU8_SELECT_TEXT; col.wMask = MENU8_COLOR_MASK; if (clsMenu == AEECLSID_MENUCTL) { col.cBack = MENU8_BACKGROUND; col.cSelBack = MENU8_SELECT_BACKGROUND; dwProps |= IMENUCTL_GetProperties(pMenu); } else if (clsMenu == AEECLSID_SOFTKEYCTL || clsMenu == AEECLSID_ICONVIEWCTL) { col.cBack = TB8_BACKGROUND; col.cSelBack = TB8_SELECT_BACKGROUND; dwProps |= MP_ICON_TEXT_TOP | MP_NO_ARROWS; } if (clsMenu == AEECLSID_MENUCTL || clsMenu == AEECLSID_SOFTKEYCTL || clsMenu == AEECLSID_ICONVIEWCTL) { IMENUCTL_SetStyle(pMenu, &normal, &sel); IMENUCTL_SetColors(pMenu, &col); IMENUCTL_SetProperties(pMenu, dwProps); if (pRect) IMENUCTL_SetRect(pMenu, pRect); } }
/*=========================================================================== 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; }