int CSettings_PopulateMainContainer(CSettings* pMe) { int result = 0; ImageStaticWidget* imageWidget = NULL; IMenuModel * iMenuModal = NULL; IWidget* wItemList; IWidget* containerWidget = NULL; IWidget* pScrollBar = NULL; WExtent we; WidgetProp wp; IFont *piFont = 0; result = ISHELL_CreateInstance(pMe->pIShell, AEECLSID_IMAGESTATICWIDGET, (void**)&imageWidget); result += ISHELL_CreateInstance(pMe->pIShell, AEECLSID_MENUMODEL, (void**)&iMenuModal); result += ISHELL_CreateInstance(pMe->pIShell, AEECLSID_LISTWIDGET, (void**)&wItemList); result += ISHELL_CreateInstance(pMe->pIShell, AEECLSID_SCROLLBARWIDGET, (void**)&pScrollBar); result += ISHELL_CreateInstance(pMe->pIShell, AEECLSID_FONTSYSBOLD, (void**)&piFont); ISHELL_GetDeviceInfo(pMe->pIShell, &pMe->DeviceInfo); //load the strings pMe->str1 = (AECHAR*) MALLOC(20); pMe->str2 = (AECHAR*) MALLOC(20); result += ISHELL_LoadResString(pMe->pIShell, RIPPLEVAULT_RES_FILE, IDS_RANGE, pMe->str1, 20); result += ISHELL_LoadResString(pMe->pIShell, RIPPLEVAULT_RES_FILE, IDS_SHEDULER, pMe->str2, 20); //load the images pMe->imageInfo1.pwText = (AECHAR*)pMe->str1; pMe->imageInfo2.pwText = (AECHAR*)pMe->str2; IMENUMODEL_Add(iMenuModal,&pMe->imageInfo1,1,MMF_ENABLED); IMENUMODEL_Add(iMenuModal,&pMe->imageInfo2,2,MMF_ENABLED); //set the vidget to act as a menu modal vidget IWIDGET_SetModel(wItemList, IMENUMODEL_TO_IMODEL(iMenuModal)); //set the picklist widget properties IWIDGET_SetBorderWidth(wItemList, 0); IWIDGET_SetItemHeight(wItemList, 30); IWIDGET_SetItemWidth(wItemList, pMe->DeviceInfo.cxScreen); IWIDGET_SetHintCols(wItemList, 5); IWIDGET_GetPreferredExtent(wItemList, &we); IWIDGET_SetExtent(wItemList, &we); IWIDGET_SetFont((IWidget *)imageWidget, piFont); IWIDGET_SetSelectedShadowOffset((IWidget *)imageWidget,2); IWIDGET_SetShadowColor((IWidget *)imageWidget,MAKE_RGB(122,122,122)); IWIDGET_SetSelectedActiveBGColor((IWidget*)imageWidget, MAKE_RGB(128,128,255)); IWIDGET_SetProperty(pScrollBar, PROP_ACTIVE_SCROLLCOLOR, MAKE_RGB(128,128,255)); IDECORATOR_SetWidget((IDecorator*)pScrollBar, (IWidget *)wItemList); IDECORATOR_SetWidget((IDecorator*)wItemList, (IWidget *)imageWidget); // get the view model of the wItemList and register a listener // in order to to pick up operator selection { IModel* pickListViewModel = NULL; IWIDGET_GetViewModel(wItemList, &pickListViewModel); IMODEL_AddListenerEx(pickListViewModel, &pMe->menuListener, (PFNLISTENER)MenuModal_EventHandler, pMe); IMODEL_Release(pickListViewModel); } wp.bVisible = TRUE; wp.prop = 1; IPROPCONTAINER_Insert(pMe->mainContainer, pScrollBar, WIDGET_ZNORMAL, &wp); //set WID_FORM to the container result = IPROPCONTAINER_QueryInterface(pMe->mainContainer, AEEIID_WIDGET, (void**)&pMe->containerWidget); HANDLERDESC_Init(&pMe->settingsMenuHandler, CSettings_HandleEvent, pMe, CSettings_Delete); IFORM_SetHandler((IForm*)pMe->csettings, &pMe->settingsMenuHandler); if(result ==0) { IFORM_SetWidget((IForm*)pMe->csettings, WID_FORM, pMe->containerWidget); IWIDGET_MoveFocus(pMe->containerWidget, wItemList); } IWIDGET_Release((IWidget*)imageWidget); IMENUMODEL_Release(iMenuModal); IWIDGET_Release(wItemList); IWIDGET_Release(pScrollBar); if (pMe->containerWidget) IWIDGET_Release(pMe->containerWidget); RELEASEIF(piFont); if(result != 0) return EFAILED; return result; }
/*=========================================================================== FUNCTION ISmsApp_InitAppData DESCRIPTION This function initializes app specific data. PROTOTYPE: static boolean ISmsApp_InitAppData(IApplet* pi); PARAMETERS: pi [in]: Pointer to the IApplet structure. DEPENDENCIES None. RETURN VALUE TRUE: If the app has app data is allocated and initialized successfully FALSE: Either app data could not be allocated or initialized SIDE EFFECTS None. ===========================================================================*/ static boolean ISmsApp_InitAppData(IApplet* pi) { ISmsApp * pMe = (ISmsApp*)pi; int charHeight, pnAscent, pnDescent; AEEDeviceInfo di; int nErr; int i; AECHAR szwStr[32]; char szNumber[32]; #define MAX_ENC 32 uint32 *EncodingMoSms; uint32 nSize; IModel * pIModel = NULL; // Make sure the pointers we'll be using are valid if (pMe == NULL || pMe->a.m_pIShell == NULL) return FALSE; pMe->m_pIMenu = NULL; pMe->m_pISMSMsg = NULL; pMe->m_pISMS = NULL; pMe->m_pISMSStorage = NULL; // Determine the amount of available screen space ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&di); // Determine the height of a line of text charHeight = IDISPLAY_GetFontMetrics (pMe->a.m_pIDisplay, AEE_FONT_NORMAL, &pnAscent, &pnDescent); // Number of available lines equals the available screen // space divided by the height of a line, minus 3 for the // lines we always print at the top and bottom of the screen pMe->m_cMaxLine = (di.cyScreen / charHeight) - 3; nErr =ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_SMS, (void **)&pMe->m_pISMS); DBGPRINTF("CreateInstance of AEECLSID_SMS ret %d", nErr); if(nErr != AEE_SUCCESS) { return FALSE; } if ((ISMS_GetEncodingsAvailableForMOSMS(pMe->m_pISMS, NULL, (uint32*)&nSize) == SUCCESS) && ((EncodingMoSms = (uint32*)MALLOC(nSize)) != NULL) && (ISMS_GetEncodingsAvailableForMOSMS(pMe->m_pISMS, EncodingMoSms, (uint32*)&nSize) == SUCCESS)) { nSize = nSize/sizeof(uint32); DBGPRINTF("ISMS_GetEncodingsAvailableForMOSMS"); DBGPRINTF("size Encode ret:%d", nSize); for(i=0; i<nSize; i++) { DBGPRINTF("en[%d]=%x", i, EncodingMoSms[i]); } } if ((nErr = ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_SMSSTORAGE, (void**)&pMe->m_pISMSStorage)) != SUCCESS) { DBGPRINTF("CreateInstance SMSSTORAGE ret %d", nErr); return FALSE; } if (pMe->m_pISMSStorage && (SUCCESS == ISMSSTORAGE_QueryInterface(pMe->m_pISMSStorage, AEEIID_MODEL, (void**)&pIModel))) { IMODEL_AddListenerEx(pIModel, &pMe->m_SMSStorageModelListener, (PFNLISTENER)OATSMSStorage_ModelListener, pMe); IMODEL_Release(pIModel); pIModel = NULL; } ISHELL_LoadResString(pMe->a.m_pIShell, ISMS_RES_FILE, IDS_SMS_TAG, szwStr, sizeof(szwStr)); WSTRTOSTR(szwStr, szNumber, sizeof(szNumber)); pMe->m_tag = STRTOUL(szNumber, NULL, 10); ISHELL_LoadResString(pMe->a.m_pIShell, ISMS_RES_FILE, IDS_SMS_MT, szwStr, sizeof(szwStr)); WSTRTOSTR(szwStr, szNumber, sizeof(szNumber)); pMe->m_mt = STRTOUL(szNumber, NULL, 10); return TRUE; }