static void meaMvDrViewOk(ctk_screen_handle scrid) { CTK_UNUSED(scrid); if (hasMvInstance()) { (void)MEA_SIGNAL_SENDTO(MEA_MV_FSM, MEA_SIG_MV_DEACTIVATE); widget_send_update_event_to_wap(); } else { meaDeleteMvRrDrView(); if (MEA_STARTUP_MODE_VIEW == meaGetStartupMode() || MEA_STARTUP_MODE_DOWNLOAD == meaGetStartupMode()) (void)MEA_SIGNAL_SENDTO(MEA_CORE_FSM, MEA_SIG_CORE_TERMINATE_APP); } }
static void meaMvPropViewGoNext(ctk_screen_handle scrid) { CTK_UNUSED(scrid); (void)MEA_SIGNAL_SENDTO(MEA_MV_FSM, MEA_SIG_MV_PROP_OK); widget_send_update_event_to_wap(); return; }
static void meaMvPropViewGoBack(ctk_screen_handle scrid) { CTK_UNUSED(scrid); //meaDeleteMvPropView(); (void)MEA_SIGNAL_SENDTO(MEA_MV_FSM, MEA_SIG_MV_DEACTIVATE); widget_send_update_event_to_wap(); return; }
/*! * \brief Deletes the dialog with dialogHandle . * * \param dialogHandle The handle of the window that is to be deleted. * \return TRUE if the window has been deleted, otherwise FALSE. *****************************************************************************/ MSF_BOOL meaDeleteDialog(MsfWindowHandle dialogHandle) { /* Check all the global dialogs */ if (0 == dialogHandle) { return TRUE; } else if (meaConfirmDialog.dialogHandle == dialogHandle) { /* Confirm dialog */ (void)MSF_WIDGET_REMOVE(meaGetScreenHandle(), meaConfirmDialog.dialogHandle); (void)MSF_WIDGET_RELEASE(meaConfirmDialog.dialogHandle); (void)MSF_WIDGET_RELEASE(meaConfirmDialog.okActionHandle); (void)MSF_WIDGET_RELEASE(meaConfirmDialog.cancelActionHandle); memset(&meaConfirmDialog, 0, sizeof(MeaConfirmDialog)); return TRUE; } else if (meaDialog.dialogHandle == dialogHandle) { (void)MSF_WIDGET_RELEASE(meaDialog.dialogHandle); /* inform about removal of dialog, if requested */ if (MEA_NOTUSED_FSM != meaDialog.fsm) { (void)MEA_SIGNAL_SENDTO(meaDialog.fsm, meaDialog.signal); } memset(&meaDialog, 0, sizeof(MeaDialog)); /* Show the next dialog in the list */ if (!showDialog() && terminating) { /* Terminate */ #ifdef __UNIFIED_MSG_SUPPORT__ (void)MEA_SIGNAL_SENDTO(MEA_CORE_FSM, MEA_SIG_CORE_ABNORMAL_TERMINATE_APP); #else (void)MEA_SIGNAL_SENDTO(MEA_CORE_FSM, MEA_SIG_CORE_TERMINATE_APP); #endif } return TRUE; } return FALSE; }
/*! * \brief Signal handler for the multipart mixed message viewer * \param sig The received signal *****************************************************************************/ static void meaMmvMain(MeaSignal *sig) { switch ((MeaMmvSignalId) sig->type) { case MEA_SIG_MMV_ACTIVATE: if( mmvInstance != NULL ) { break; } meaMmvCreateInstance(&mmvInstance,(MeaMessage*)sig->p_param); /* activate MOB and let it do the browsing of attachments */ #ifdef WAP_SUPPORT //Change string to View meaMobActivate(mmvInstance->moList, MEA_MOB_SOP_NO_OP, MEA_STR_ID_VIEW, MEA_MMV_FSM, MEA_SIG_MMV_MOB_OP); #else meaMobActivate(mmvInstance->moList, MEA_MOB_SOP_NO_OP, MEA_STR_ID_VIEW_ATTACHMENTS, MEA_MMV_FSM, MEA_SIG_MMV_MOB_OP); #endif /* WAP_SUPPORT */ break; case MEA_SIG_MMV_DEACTIVATE: /* Clean-up the mmv instance */ if (mmvInstance) { meaMmvDeleteInstance(&mmvInstance); #ifdef WAP_SUPPORT (void)MEA_SIGNAL_SENDTO(MEA_MV_FSM, MEA_SIG_MV_PLAY_DONE); #endif /* WAP_SUPPORT */ } else { /* No MMV instance, delete MV directly.*/ (void)MEA_SIGNAL_SENDTO(MEA_MV_FSM, MEA_SIG_MV_DEACTIVATE); } break; case MEA_SIG_MMV_MOB_OP: /* Handle key press from MOB */ if (MEA_MOB_DEACTIVATED == (MeaMobOperation)sig->u_param1) { /* User selected Back, or MOB was deactivated */ (void)MEA_SIGNAL_SENDTO(MEA_MMV_FSM, MEA_SIG_MMV_DEACTIVATE); } else { handleMobOp(mmvInstance, (MeaMobOperation)sig->u_param1, sig->i_param, sig->p_param); } break; case MEA_SIG_MMV_MAKE_CALL_RSP: /* sig->u_param1 has a TRUE/FALSE result */ /* deliberately ignored since srh handles error dialogs for us */ break; case MEA_SIG_MMV_NAV_DEACTIVATE: /* Displayed menu was deactivated */ meaUiMmvDeleteMenu(); break; case MEA_SIG_MMV_NAV_SAVE: /* Save operation selected from menu */ saveMo(mmvInstance); break; case MEA_SIG_MMV_SAVE_DONE: /* Save operation finished */ MSF_LOG_MSG_OFF((MSF_LOG_DETAIL_HIGH, MSF_MODID_MEA, MAMMV_25089AF8905EFF9704992FDBC00AC3E6, "%s(%d): Save object done\n", __FILE__, __LINE__)); meaUiMmvDeleteMenu(); break; case MEA_SIG_MMV_CRH_DONE: /* Content router handler finished */ if (sig->u_param1 != MEA_CRH_VIEW_ATTACH_OK) { (void)meaShowDialog(MEA_GET_STR_ID(MEA_STR_ID_ATTACH_ERROR), MEA_DIALOG_ALERT); } meaUiMmvDeleteMenu(); break; case MEA_SIG_MMV_HANDLE_ACTION_RSP: /* Content router handler finished */ if (sig->u_param1 != MEA_CRH_VIEW_ATTACH_OK) { (void)meaShowDialog(MEA_GET_STR_ID(MEA_STR_ID_ATTACH_ERROR), MEA_DIALOG_ALERT); } meaUiMmvDeleteMenu(); break; default: MSF_LOG_MSG_OFF((MSF_LOG_DETAIL_HIGH, MSF_MODID_MEA, MAMMV_5D088F8A8F427BC1516107E77A681AE4, "%s(%d): mmvSignalHandler erroneous signal received(%d)\n", __FILE__, __LINE__, sig->type)); break; } meaSignalDelete(sig); }
/***************************************************************************** * FUNCTION * wap_bgsr_msg_hdlr * DESCRIPTION * Message Handler for primitives from BGSR * PARAMETERS * ilm_ptr [in] * RETURNS * void *****************************************************************************/ void wap_bgsr_msg_hdlr(ilm_struct *ilm_ptr) { switch(ilm_ptr->msg_id) { case MSG_ID_MMS_BGSR_CANCEL_SEND_RSP: case MSG_ID_MMS_BGSR_CANCEL_DOWNLOAD_RSP: case MSG_ID_MMS_BGSR_CANCEL_ALL_INBOX_RSP: meaDeleteMvStatusView(); #ifdef __UNIFIED_MSG_SUPPORT__ /* for notification prop/Dr/Rr screen (option menu is from these screen)*/ (void)MEA_SIGNAL_SENDTO(MEA_MV_FSM, MEA_SIG_MV_DEACTIVATE); #endif /* Bring down the navigation menu */ (void)MEA_SIGNAL_SENDTO(MEA_MH_FSM, MEA_SIG_MH_NAV_DEACTIVATE); (void)MEA_SIGNAL_SENDTO_I(MEA_MH_FSM, MEA_SIG_MH_UPDATE_FOLDER, MEA_FOLDER_NONE); break; case MSG_ID_MMS_BGSR_SEND_RSP: meaDeleteMvStatusView(); #ifdef __UNIFIED_MSG_SUPPORT__ /* for notification prop/Dr/Rr screen (option menu is from these screen)*/ (void)MEA_SIGNAL_SENDTO_U(MEA_MV_FSM, MEA_SIG_MV_DEACTIVATE, mmi_mms_bgsr_send_msg_id); #endif /* Bring down the navigation menu */ (void)MEA_SIGNAL_SENDTO(MEA_MH_FSM, MEA_SIG_MH_NAV_DEACTIVATE); (void)MEA_SIGNAL_SENDTO_IUU(MEA_MH_FSM, MEA_SIG_MH_UPDATE_FOLDER, MEA_FOLDER_NONE, mmi_mms_bgsr_send_msg_id, mmi_mms_bgsr_result); break; case MSG_ID_MMS_BGSR_DOWNLOAD_RSP: #ifdef MMS_SUPPORT mmcIsRecvMMSForJava(mmi_mms_bgsr_download_msg_id); #endif #ifdef MMS_FILE_PROTECT_SUPPORT if (genChkSumFile(mmi_mms_bgsr_download_msg_id)==MMS_RESULT_INSUFFICIENT_PERSISTENT_STORAGE) { meaShowDialog(MEA_GET_STR_ID(MEA_STR_ID_NO_PERSISTENT_STORAGE), MEA_DIALOG_ERROR); fldrMgrDeleteMessage(mmi_mms_bgsr_download_msg_id); } #endif /* MMS_FILE_PROTECT_SUPPORT */ meaDeleteMvStatusView(); #ifdef __UNIFIED_MSG_SUPPORT__ /* for notification prop/Dr/Rr screen (option menu is from these screen)*/ (void)MEA_SIGNAL_SENDTO_U(MEA_MV_FSM, MEA_SIG_MV_DEACTIVATE, mmi_mms_bgsr_download_msg_id); #endif /* Bring down the navigation menu */ (void)MEA_SIGNAL_SENDTO(MEA_MH_FSM, MEA_SIG_MH_NAV_DEACTIVATE); (void)MEA_SIGNAL_SENDTO_IUU(MEA_MH_FSM, MEA_SIG_MH_UPDATE_FOLDER, MEA_FOLDER_NONE, mmi_mms_bgsr_download_msg_id, mmi_mms_bgsr_result); break; case MSG_ID_MMS_BGSR_MOVE_TO_FOLDER_RSP: if(mmi_mms_bgsr_result == MMI_MMS_BGSR_RESULT_OK) { (void)MEA_SIGNAL_SENDTO_UU(MEA_MH_FSM, MEA_SIG_MH_BGSR_MOVE_TO_DRAFT_RSP, 0, mmi_mms_bgsr_op_msg_id); } else { (void)MEA_SIGNAL_SENDTO_UU(MEA_MH_FSM, MEA_SIG_MH_BGSR_MOVE_TO_DRAFT_RSP, 1, mmi_mms_bgsr_op_msg_id); } break; case MSG_ID_MMS_BGSR_NAV_ACTIVATE_BGSR_RSP: { (void)MEA_SIGNAL_SENDTO(MEA_MH_FSM, MEA_SIG_MH_NAV_ACTIVATE_BGSR_RSP); break; } case MSG_ID_MMS_BGSR_DELETE_MSG_RSP: if(mmi_mms_bgsr_result == MMI_MMS_BGSR_RESULT_OK || mmi_mms_bgsr_result == MMI_MMS_BGSR_RESULT_FAIL_FILE_NOT_FOUND ) { (void)MEA_SIGNAL_SENDTO_UU(MEA_MH_FSM, MEA_SIG_MH_DELETE_MSG, 0, mmi_mms_bgsr_op_msg_id); } else { (void)MEA_SIGNAL_SENDTO_UU(MEA_MH_FSM, MEA_SIG_MH_DELETE_MSG, 1, mmi_mms_bgsr_op_msg_id); } break; case MSG_ID_MMS_BGSR_DELETE_ALL_INBOX_RSP: #ifdef __UNIFIED_MSG_SUPPORT__ (void)MEA_SIGNAL_SENDTO_UU(MEA_MH_FSM, MEA_SIG_MH_UM_DELETE_ALL_MSG_REQ, 0, MEA_FOLDER_INBOX); #else (void)MEA_SIGNAL_SENDTO_UU(MEA_MH_FSM, MEA_SIG_MH_DELETE_ALL_MSG, 0, MEA_FOLDER_INBOX); #endif break; case MSG_ID_MMS_BGSR_DELETE_ALL_OUTBOX_RSP: #ifdef __UNIFIED_MSG_SUPPORT__ (void)MEA_SIGNAL_SENDTO_UU(MEA_MH_FSM, MEA_SIG_MH_UM_DELETE_ALL_MSG_REQ, 0, MEA_FOLDER_OUTBOX); #else (void)MEA_SIGNAL_SENDTO_UU(MEA_MH_FSM, MEA_SIG_MH_DELETE_ALL_MSG, 0, MEA_FOLDER_OUTBOX); #endif break; default: break; } }
/*! * \brief Read the header of the message to retrieve a body-part from * \param req The content routing request data * \return TRUE if successful, otherwise FALSE. *****************************************************************************/ static void crhReadBodyPart(CrhRequest *req) { unsigned long size = MEA_CRH_BUFFER_SIZE; MmsResult res; /* Check if the transaction has been opened */ if (NULL == req->transactionHandle) { /* Open transaction */ if (MMS_RESULT_OK != MMSlib_transactionOpen(MSF_MODID_MEA, &req->transactionHandle)) { crhCleanupInstance(MEA_CRH_VIEW_ATTACH_ERROR); return; } } /* Read body-part */ res = MMSlib_getBodyPart(MSF_MODID_MEA, req->bodyPartToRead->index, req->buffer, &size, &req->msgHandle, &req->transactionHandle); /*lint -e{788} */ switch (res) { case MMS_RESULT_OK: case MMS_RESULT_BUFFER_FULL: req->bodyPartToRead->readPos += size; req->sizeToWrite = (signed)size; switch (crhWriteToPipe()) { case MEA_CRH_WRITE_DONE: /* Done */ crhCleanupInstance(MEA_CRH_VIEW_ATTACH_OK); break; case MEA_CRH_WRITE_ERROR: /* Failed */ crhCleanupInstance(MEA_CRH_VIEW_ATTACH_ERROR); break; case MEA_CRH_WRITE_MORE_DATA: (void)MEA_SIGNAL_SENDTO(MEA_CRH_FSM, MEA_SIG_CRH_READ_BODYPART); break; case MEA_CRH_PIPE_DELAYED: /* A pipe notify is generated when the pipe can be read again */ break; default: MSF_LOG_MSG_OFF((MSF_LOG_DETAIL_HIGH, MSF_MODID_MEA, MACRH_D5ACEAD4EA5BF3C5AA3960BD4D04ABCE, "(%s) (%d) Unhandled pipe result\n", __FILE__, __LINE__)); return; } break; case MMS_RESULT_DELAYED: meaAsyncRegister(MMSlib_getFileHandle(MSF_MODID_MEA, req->transactionHandle), MEA_CRH_FSM, MEA_SIG_CRH_READ_BODYPART, 0); break; default: /* Major fault */ crhCleanupInstance(MEA_CRH_VIEW_ATTACH_ERROR); MSF_LOG_MSG_OFF((MSF_LOG_DETAIL_HIGH, MSF_MODID_MEA, MACRH_AAD39B378E27C013B68735CA95448AD8, "(%s) (%d) erroneous read result\n", __FILE__, __LINE__)); break; } }
static void crhMain(MeaSignal *sig) { if (NULL == sig) { meaPanic(TRUE); return; } if ((sig->type != MEA_SIG_CRH_START) && (NULL == crhInstance)) { MSF_LOG_MSG_OFF((MSF_LOG_DETAIL_HIGH, MSF_MODID_MEA, MACRH_40161465EE234C2892643D1BC846B15A, "(%s) (%d) No instance!\n", __FILE__, __LINE__)); return; } switch (sig->type) { case MEA_SIG_CRH_START: if (!crhCreateInstance()) { MSF_LOG_MSG_OFF((MSF_LOG_DETAIL_HIGH, MSF_MODID_MEA, MACRH_416E055D9FBD63FD20D07D4FB5143070, "(%s) (%d) failed to create instance\n", __FILE__, __LINE__)); /* Delete signal data */ MEA_FREE(sig->p_param); sig->p_param = NULL; } /* Init state */ crhInstance->state = MEA_CRH_STATE_INIT; /* Copy signal data */ crhInstance->bodyPartToRead = (MeaCrhBodyPart *)sig->p_param; sig->p_param = NULL; crhInitContentRouting(crhInstance->bodyPartToRead->fileName); break; case MEA_SIG_CRH_FILE_NOTIFY: switch (crhInstance->state) { case MEA_CRH_STATE_INIT: /* The previous get header was delayed, try again */ if (crhGetHeader()) { (void)MEA_SIGNAL_SENDTO(MEA_CRH_FSM, MEA_SIG_CRH_READ_BODYPART); crhInstance->state = MEA_CRH_STATE_PROCESS; } break; case MEA_CRH_STATE_PROCESS: /* The previous get body-part was delayed, try again */ crhReadBodyPart(crhInstance); break; } break; case MEA_SIG_CRH_READ_BODYPART: /* Read body-part */ crhReadBodyPart(crhInstance); break; case MEA_SIG_CRH_CANCEL: /* Cleanup if the operation was cancelled */ crhCleanupInstance(MEA_CRH_VIEW_ATTACH_OK); break; case MEA_SIG_CRH_NOTIFY: /* */ crhPipeNotify((MSF_INT32)sig->u_param1, (MSF_INT16)sig->i_param); break; case MEA_SIG_CRH_SEND_RSP: /* Check wheter the content can be handled */ if (MSF_CONTENT_STATUS_FAILED == sig->u_param1) { /* End content routing */ crhCleanupInstance(MEA_CRH_VIEW_ATTACH_NO_HANDLER); } else { /* Open message */ if (MMS_RESULT_OK != MMSlib_messageOpen(MSF_MODID_MEA, crhInstance->bodyPartToRead->mmsMsgId, crhInstance->bodyPartToRead->fileType , &crhInstance->msgHandle)) { crhCleanupInstance(MEA_CRH_VIEW_ATTACH_ERROR); break; } /* Open transaction */ if (MMS_RESULT_OK != MMSlib_transactionOpen(MSF_MODID_MEA, &(crhInstance->transactionHandle))) { crhCleanupInstance(MEA_CRH_VIEW_ATTACH_ERROR); break; } /* Show progress meter */ /*(void)meaPmViewShow(MEA_STR_ID_SHOW_ATTACH_PROGRESS, FALSE, TRUE, MEA_CRH_FSM, MEA_SIG_CRH_CANCEL);*/ /* Get header */ if (crhGetHeader()) { /* If the header was successfully retrieved start to read the requested bodypart */ (void)MEA_SIGNAL_SENDTO(MEA_CRH_FSM, MEA_SIG_CRH_READ_BODYPART); crhInstance->state = MEA_CRH_STATE_PROCESS; } } break; default: MSF_LOG_MSG_OFF((MSF_LOG_DETAIL_HIGH, MSF_MODID_MEA, MACRH_39E08AA63293875A5025796ECF3C5CBA, "(%s) (%d) unhandled signal\n", __FILE__, __LINE__)); break; } /* Deallocate the signal */ meaSignalDelete(sig); }
void meaTerminateApp(void) { (void)MEA_SIGNAL_SENDTO(MEA_CORE_FSM, MEA_SIG_CORE_TERMINATE_APP); }