版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
MTK短信相關(guān)分類:MTK學(xué)習(xí)資料2012-04-0814:2732人閱讀評(píng)論(0)\o"收藏"收藏\o"舉報(bào)"舉報(bào)1、全局變量和資源短信箱容量[\custom\ps\IWIT23_07A_PMJ_BB\customer_ps_inc.h]
#defineCM_SMS_MAX_MSG_NUM400//手機(jī)+SIM卡[\custom\common\PLUTO_MMI\nvram_common_defs.h]#defineNVRAM_EF_SMSAL_SMS_TOTAL200//手機(jī)信箱和索引表[\custom\common\mmi_msg_context.c]unsignedshortmmi_frm_sms_inbox_list[CM_SMS_MAX_MSG_NUM];//收件箱索引表unsignedshortmmi_frm_sms_outbox_list[CM_SMS_MAX_MSG_NUM];//發(fā)件箱索引表mmi_frm_sms_msgbox_structmmi_frm_sms_msg_box[CM_SMS_MAX_MSG_NUM];//信箱[\plutommi\mmi\miscframework\miscframeworkinc\SMSApi.h]mmi_frm_sms_app_msgbox_enum//信箱類型枚舉MMI_FRM_SMS_APP_INBOX=0x02,MMI_FRM_SMS_APP_OUTBOX=0x04[\plutommi\mmi\miscframework\miscframeworkinc\SMSStruct.h]
mmi_frm_sms_msgbox_enum//信箱類型枚舉MMI_FRM_SMS_INBOX=0x02,MMI_FRM_SMS_OUTBOX=0x04,索引表mmi_frm_sms_inbox_list和索引表mmi_frm_sms_outbox_list,分別對應(yīng)【消息】菜單中的【收件箱】和【發(fā)件箱】。信箱mmi_frm_sms_msg_box保存的只是短信副本,用于顯示和其它處理,直接更改其數(shù)據(jù)對實(shí)際的短信無效,必須向L4層發(fā)送消息才能生效。通過索引列表(mmi_frm_sms_xxbox_list)在短信箱菜單和短信之間建立關(guān)聯(lián):>菜單>消息>收件箱>短信1-->mmi_frm_sms_inbox_list[itemIndex]-->smsIndex>短信2[...]>短信n短信箱(字串/屏幕)資源[plutommi\mmi\Messages\MessagesInc\MessagesResourceData.h]
STR_INBOX_MENUENTRY//“收件箱”STR_OUTBOX_MENUENTRY,//“發(fā)件箱”SCR_ID_MSG_INBOX_LIST//收件箱屏SCR_ID_MSG_OUTBOX_LIST,//發(fā)件箱屏幕STR_SCR6028_CAPTION//“消息選單”2、發(fā)短信2.1、發(fā)送過程SmsMoMtGuiInterface.c
SmsMoMtGuiInterfaceSmsPsHandlerSMSCoreSMSMsg
1mmi_msg_highlight_done短信編輯[完成]
mmi_msg_entry_send_option進(jìn)入[發(fā)送選項(xiàng)]
2mmi_msg_highlight_send_only高亮[(僅)發(fā)送]選項(xiàng)
3mmi_msg_send_msg_to_only_entry進(jìn)入[(僅)發(fā)送]選項(xiàng)
4
mmi_msg_send_msg_req
mmi_frm_sms_send_sms
mmi_frm_sms_write_action
mmi_frm_sms_read_action
5
mmi_frm_sms_pre_send_sms
6
mmi_frm_sms_send_sms_req
mmi_frm_sms_send_sms_seg
[......]
7
mmi_frm_sms_send_sms_rsp
mmi_msg_send_msg_rsp
HighlightWMessageHandler回到[寫短信]菜單項(xiàng)
2.2、發(fā)送過程詳解:2.2.1、短信編輯【完成】短信編輯編輯【完成】后,按[完成]鍵盤進(jìn)入發(fā)送選項(xiàng)單:[SmsMoMtGuiInterface.c]voidmmi_msg_highlight_done(void){mmi_msg_highlight_generic(STR_GLOBAL_OK,IMG_GLOBAL_OK,STR_GLOBAL_BACK,IMG_GLOBAL_BACK,mmi_msg_entry_send_option,GoBackHistory);[...]}進(jìn)入[發(fā)送選項(xiàng)],將默認(rèn)發(fā)送選項(xiàng)設(shè)為(僅)發(fā)送(SENDONLY):[SmsMoMtGuiInterface.c]voidmmi_msg_entry_send_option(void){[...]if(g_msg_cntx.sendMessageCase!=SEND_CASE_SEND_FROM_OTHER_APP){g_msg_cntx.sendMessageCase=SEND_CASE_SEND_ONLY;/*reset*/}[...]}2.2.1、選擇發(fā)送選項(xiàng)以(僅)發(fā)送(SENDONLY)為例。在高亮事件中注冊ENTRY函數(shù):[SmsMoMtGuiInterface.c]voidmmi_msg_highlight_send_only(void){#ifdef__MMI_SEND_BY_SEARCH_NAME__[...]#else/*__MMI_SEND_BY_SEARCH_NAME__*/mmi_msg_highlight_generic(STR_GLOBAL_OK,IMG_GLOBAL_OK,STR_GLOBAL_BACK,IMG_GLOBAL_BACK,mmi_msg_send_msg_to_only_entry,GoBackHistory);#endif/*__MMI_SEND_BY_SEARCH_NAME__*/}2.2.2、進(jìn)入【(僅)發(fā)送】選項(xiàng)[SmsMoMtGuiInterface.c]voidmmi_msg_send_msg_to_only_entry(void){[...]g_msg_cntx.msg_send_info.CurrSendSmsNumbers=0;g_msg_cntx.msg_send_info.TotalSendSmsNumbers=1;[...]elseif(g_msg_cntx.sendMessageCase!=SEND_CASE_SEND_FROM_PHB){memset(g_msg_cntx.smsPhoneNumber,0,(MAX_DIGITS+1)*ENCODING_LENGTH);[...]}mmi_msg_send_msg_req((U8*)g_msg_cntx.smsPhoneNumber,MMI_FRM_SMS_INVALID_INDEX,0);}2.2.3、設(shè)置短信發(fā)送請求標(biāo)志[SmsPsHandler.c]voidmmi_msg_send_msg_req(U8*number,U16replyindex,U8hidenumscreen){mmi_frm_sms_send_struct*sendData=OslMalloc(sizeof(mmi_frm_sms_send_struct));memset((S8*)sendData,0,sizeof(mmi_frm_sms_send_struct));#ifdef__MMI_UNIFIED_MESSAGE__if(!(mmi_um_get_current_msg_box_type()==UM_MSG_BOX_TYPE_UNSENT&&GetExitScrnID()==SCR_ID_MSG_OUTBOX_OPTION))#elseif(GetMessagesCurrScrnID()!=SCR_ID_MSG_OUTBOX_SEND_OPTION)#endif{sendData->sendrequire=MMI_FRM_SMS_SAVE_AFTER_FAIL;/*ML:tocontrolifwecanreleaseEMSornot*/}[...]mmi_frm_sms_send_sms(mmi_msg_send_msg_rsp,MOD_MMI,sendData);OslMfree(sendData);}2.3.4、注冊短信發(fā)送回調(diào)函數(shù)注冊短信發(fā)送回調(diào)函數(shù)(callback,mmi_msg_send_msg_rsp),調(diào)用短信發(fā)送預(yù)處理函數(shù)(action,mmi_frm_sms_pre_send_sms)[SMSCore.c]voidmmi_frm_sms_send_sms(PsFuncPtrU16callback,module_typemod_src,mmi_frm_sms_send_struct*sendData){mmi_frm_sms_send_struct*data=OslMalloc(sizeof(mmi_frm_sms_send_struct));memcpy((S8*)data,(S8*)sendData,sizeof(mmi_frm_sms_send_struct));mmi_frm_sms_write_action(callback,mod_src,data,mmi_frm_sms_pre_send_sms);}U8mmi_frm_sms_write_action(PsFuncPtrU16callback,module_typemod_src,void*data,PsFuncPtrfunction){mmi_frm_sms_action_structaction;action.mod_src=mod_src;action.data=data;action.callback=callback;action.action=function;[...]mmi_frm_sms_action_num++;[...]if(mmi_frm_sms_action_curr==MMI_FRM_SMS_INVALID_NUM){mmi_frm_sms_read_action();}returnTRUE;}U8mmi_frm_sms_read_action(void){PsFuncPtrcurrFuncPtr=mmi_frm_sms_action[mmi_frm_sms_action_head].action;void*currFuncData=mmi_frm_sms_action[mmi_frm_sms_action_head].data;[...]mmi_frm_sms_action_num--;[...]if(currFuncPtr!=NULL){(*currFuncPtr)(currFuncData);}[...]returnTRUE;}2.3.5、短信發(fā)送預(yù)處理[SMSMsg.c]voidmmi_frm_sms_pre_send_sms(void*inMsg){mmi_frm_sms_send_struct*sendData=(mmi_frm_sms_send_struct*)inMsg;[...]mmi_frm_sms_free_sendsms_data();sendSMS=OslMalloc(sizeof(mmi_frm_sms_send_struct));memcpy((S8*)sendSMS,(S8*)sendData,sizeof(mmi_frm_sms_send_struct));OslMfree(sendData);mmi_frm_sms_send_sms_req();}2.3.6、短信發(fā)送請求voidmmi_frm_sms_send_sms_req(void){[...]/*checkSC:getSCaddress,inMsgkeepstheflag*/if((sendSMS->sendcheck&MMI_FRM_SMS_SC)!=MMI_FRM_SMS_SC){[...首次進(jìn)入...]return;}/*checkDA:showinputscreen,inMsgkeepsthenumber*/if((sendSMS->sendcheck&MMI_FRM_SMS_DA)!=MMI_FRM_SMS_DA){[...二次進(jìn)入,彈出號(hào)碼輸入框...]elseif((strlen((S8*)sendSMS->number)==0)&&((sendSMS->sendrequire&MMI_FRM_SMS_REPLY)==0)){if(GetCurrScrnId()!=SCR_ID_MSG_NUMBER){mmi_frm_sms_entry_number();}return;}sendSMS->sendcheck=MMI_FRM_SMS_DA;}/*checkvalidityofDA*/[...]/*checkFDL:whenFDNon*/{[...號(hào)碼輸入完畢,按[確認(rèn)]到此...][...短信內(nèi)容編碼...]result=mmi_frm_sms_pack_sms();[...繪制發(fā)送短信發(fā)送界面...]mmi_frm_sms_entry_send();[...設(shè)置短信發(fā)送回調(diào)...]SetProtocolEventHandler(mmi_frm_sms_send_sms_rsp,PRT_MSG_ID_MMI_SMS_SEND_MSG_RSP);SetProtocolEventHandler(mmi_frm_sms_abort_sms_ind,PRT_MSG_ID_MMI_SMS_SEND_ABORT_START_IND);[...(如果是長短信,循環(huán))發(fā)送...]for(i=0;i<j;i++){mmi_frm_sms_send_sms_seg();}[...]}}voidmmi_frm_sms_send_sms_seg(void){MMI_FRM_SMS_SEND_MSG_REQ_STRUCT*sendSms;[...]mmi_frm_sms_send_message(MOD_MMI,MOD_L4C,0,PRT_MSG_ID_MMI_SMS_SEND_MSG_REQ,(oslParaType*)sendSms,NULL);[...]}2.3.7、短信發(fā)送回調(diào)無論發(fā)送是否成功(或者[取消]),最后返回并高亮[寫短信]菜單項(xiàng):HighlightWMessageHandler()。[SMSMsg.c]voidmmi_frm_sms_send_sms_rsp(void*inMsg){[...]mmi_frm_sms_callback_action((void*)number,sendResult);[...]}[SmsPsHandler.c]voidmmi_msg_send_msg_rsp(void*number,module_typemod,U16result){switch(result){caseMMI_FRM_SMS_OK:[...設(shè)置跳轉(zhuǎn)節(jié)點(diǎn)...]elseif(IsScreenPresent(SCR_ID_MSG_WRITE)){SetMessagesScrnIdToDelHistoryNodes(SCR_ID_MSG_WRITE);}[...刪除歷史屏幕,返回[寫短信]...]if(g_msg_cntx.msg_send_info.CurrSendSmsNumbers==g_msg_cntx.msg_send_info.TotalSendSmsNumbers){DeleteMessagesHistoryNodes();mmi_frm_sms_delete_screen_history();}[...]}}3、收短信3.1、短信接收過程l4a_callbackSMSMsgSmsPsHandlerMessagesMiscell1l4c_sms_new_msg_text_lind[...]mmi_frm_sms_new_sms_ind2mmi_frm_sms_new_smsmmi_frm_sms_indicate_smsmmi_frm_sms_new_msg_ind3mmi_msg_handle_new_msg_ind4mmi_msg_new_msg_indmmi_msg_entry_new_msg_ind3.2、接收過程詳解:3.2.1、收到新短信L4層收到短信,向MMI_Task遞交消息。[l4a_callback.c]voidl4c_sms_new_msg_text_lind(...){[…]ilm_ptr->msg_id=(kal_uint16)MSG_ID_MMI_SMS_DELIVER_MSG_IND;/*Setthemessageid*///MSG_ID_MMI_SMS_DELIVER_MSG_IND被注冊到mmi_frm_sms_new_sms_ind函數(shù):↘[SMSMsg.c]voidmmi_frm_sms_set_protocol_event_handler(void){SetProtocolEventHandler(mmi_frm_sms_new_sms_ind,PRT_MSG_ID_MMI_SMS_DELIVER_MSG_IND);[…]}[ProtocolEvents.h]#definePRT_MSG_ID_MMI_SMS_DELIVER_MSG_INDMSG_ID_MMI_SMS_DELIVER_MSG_IND[…]SEND_ILM(MOD_L4C,MOD_MMI,MMI_L4C_SAP,ilm_ptr);}MMI層收到新短信,更新短信計(jì)數(shù)器,轉(zhuǎn)換短信數(shù)據(jù),并壓入未讀短信隊(duì)列。短信過濾等操作放在CHISTIncRecvdSMS()之前。[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSMsg.c]voidmmi_frm_sms_new_sms_ind(void*inMsg){if((1==IsBlockAndEmergencyOnly()){[…]delete_pending_sms();[…]}CHISTIncRecvdSMS();/*convertL4datatoMMIdata*/mmi_frm_sms_convert_new_sms(msgInd,data);/*puttoawaitedlistlastentry,fromnowononlyprocessnewdataasawaitedlistlastentry*/mmi_frm_sms_add_new_sms(data,msgInd->no_msg_data,msgInd->msg_data);/*processnewsmsdata*/mmi_frm_sms_new_sms();[…]}3.2.2、短信分類新短信的信箱類型為MMI_FRM_SMS_AWAITS,消息類型為mmi_frm_sms_deliver_msg_struct,必須轉(zhuǎn)換為mmi_frm_sms_msgbox_struct類型,保存到全局的msgbox,并設(shè)置其信箱類型為MMI_FRM_SMS_UNREAD,添加其索引到inbox。[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSCore.c]voidmmi_frm_sms_new_sms(void){[...]caseMMI_FRM_SMS_AWAITS:{mmi_frm_sms_indicate_sms(index);}[...]}[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSCore.c]voidmmi_frm_sms_indicate_sms(U16index){[…]mmi_frm_sms_convert_mt_to_entry(data,entry);↘[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSUtil.c]voidmmi_frm_sms_convert_mt_to_entry(mmi_frm_sms_deliver_msg_struct*data,mmi_frm_sms_msgbox_struct*entry)type=MMI_FRM_SMS_UNREAD;//設(shè)置短信類型msgbox_index=mmi_frm_sms_add_sms_to_msgbox(entry,data->index,segment);//添加短信到inbox,關(guān)鍵!↘[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSUtil.c]U16mmi_frm_sms_add_sms_to_msgbox(mmi_frm_sms_msgbox_struct*entry,U16index,U8thisseg)entryindex=mmi_frm_sms_add_sms_entry(entry,index,thisseg);↘[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSUtil.c]U16mmi_frm_sms_add_sms_entry(mmi_frm_sms_msgbox_struct*data,U16L4index,U8thissegment)#endif/*__UNIFIED_MESSAGE_SIMBOX_SUPPORT__*/if((data->msgtype&MMI_FRM_SMS_INBOX)==MSMS_INBOX){type=MMI_FRM_SMS_INBOX;//短信分類}mmi_frm_sms_add_sms_to_list(entry,entryindex);↘[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSUtil.c]voidmmi_frm_sms_add_sms_to_list(mmi_frm_sm_msgbox_struct*data,U16index)caseMMI_FRM_SMS_UNREAD:[...添加索引到收件箱...]if(i==mmi_frm_sms_msg_check_num){mmi_frm_sms_new_msg_ind(msgbox_index);}[…]}[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSMsg.c]voidmmi_frm_sms_new_msg_ind(U16index){[…]if(mmi_frm_sms_interrupt_handler[i].msgid==PRT_MSG_ID_MMI_SMS_DELIVER_MSG_IND){mmi_frm_sms_interrupt_handler[i].callback((void*)data,MOD_MMI,MMI_FRM_SMS_OK);//callback注冊的函數(shù)為mmi_msg_handle_new_msg_ind↘[\plutommi\mmi\messages\messagessrc\SmsPsHandler.c]voidmmi_msg_set_protocol_event_handler(void){mmi_frm_sms_reg_interrupt_check(MOD_MMI,PRT_MSG_ID_MMI_SMS_DELIVER_MSG_IND,mmi_msg_handle_new_msg_ind);[…]}//對比mmi_msg_set_protocol_event_handler與mmi_frm_sms_set_protocol_event_handler,這兩個(gè)函數(shù)都使用了PRT_MSG_ID_MMI_SMS_DELIVER_MSG_INDbreak;[…]}3.2.3、新短信提示收到新短信之后,彈出“新短信”提示,如果當(dāng)前處在待機(jī)界面,則顯示新短信來自,并更改左軟鍵為[讀取]。[\plutommi\mmi\Messages\MessagesSrc\MessagesMiscell.c]voidmmi_msg_new_msg_ind(U16index){[...]#ifdef__UNIFIED_MESSAGE_SIMBOX_SUPPORT__mmi_msg_entry_new_sim_msg_ind();#else/*__UNIFIED_MESSAGE_SIMBOX_SUPPORT__*/mmi_msg_entry_new_msg_ind();//新短信查看入口[...]mmi_frm_sms_get_list_index(&type,&list_index,g_msg_cntx.msg_ind_index);↘[\plutommi\mmi\miscframework\miscframeworksrc\SMSCore.c]voidmmi_frm_sms_get_list_index(U16*type,U16*index,U16msgbox_index)mmi_frm_sms_get_sms_list_index(type,index,msgbox_index);↘voidmmi_frm_sms_get_sms_list_index(U16*type,U16*index,U16msgbox_index)while(i<mmi_frm_sms_inbox_size)[...]while(i<mmi_frm_sms_outbox_size)[...]while(i<mmi_frm_sms_bizbox_size)[...]//擴(kuò)展功能[...]mmi_msg_entry_new_msg_popup(MSG_NEW_MSG_NORMAL);//1.彈出新短信提示框#endif/*__UNIFIED_MESSAGE_SIMBOX_SUPPORT__*/[...]}[plutommi\mmi\Messages\MessagesSrc\MessagesMiscell.c]voidmmi_msg_entry_new_msg_ind(void){[...]g_msg_cntx.msg_ind_after_call=FALSE;if(IsKeyPadLockState()==0){ShowCategory154Screen(0,0,STR_SCR6035_LSK,IMG_SMS_COMMON_NOIMAGE,STR_GLOBAL_BACK,IMG_SMS_COMMON_NOIMAGE,(PU8)GetString(STR_NEW_MESSAGE_FROM_ID),//在待機(jī)界面顯示“消息來自:”(PU8)mmi_msg_get_new_msg_ind_string(),IMG_NEW_MESSAGE_NOTIFICATION_MSG_IN_IDLE,NULL);SetRightSoftkeyFunction(mmi_msg_go_back_from_new_msg_ind,KEY_EVENT_UP);SetLeftSoftkeyFunction(mmi_msg_get_msg_new,KEY_EVENT_UP);//左軟鍵[讀取]SetKeyHandler(mmi_msg_end_key_from_new_msg_ind,KEY_END,KEY_EVENT_DOWN);}[…]}3.3、【讀取】短信在待機(jī)屏按下[讀取]鍵,向底層請求短信內(nèi)容。閱讀短信內(nèi)容之后,按[返回]鍵,則退到收件箱。[\plutommi\mmi\messages\messagessrc\SmsPsHandler.c]voidmmi_msg_get_msg_new(void){[...]mmi_msg_get_msg_req(MMI_FRM_SMS_APP_NOBOX,g_msg_cntx.msg_ind_index);//發(fā)送讀取短信內(nèi)容的請求,注意,這里用的是NOBOXmmi_frm_sms_get_list_index(&type,&list_index,g_msg_cntx.msg_ind_index);[...]mmi_msg_exit_bizbox_list_dummy();↘[\plutommi\mmi\Messages\MessagesSrc\MessagesMiscell.c]voidmmi_msg_exit_inbox_list_dummy(void)currHistory.entryFuncPtr=mmi_msg_entry_inbox_list;//設(shè)置閱讀新短信之后按“返回”鍵跳轉(zhuǎn)到哪里。g_msg_cntx.toDisplayMessageList=TO_DISPLAY_MESSAGE_LIST_INBOX;//設(shè)置顯示頁面3.4、更新短信狀態(tài)讀取請求發(fā)出之后,L4層已經(jīng)把新短信狀態(tài)改成已讀,mmi_frm_sms_msg_box中的狀態(tài)也應(yīng)同步。[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSCore.c]voidmmi_frm_sms_read_sms(PsFuncPtrU16callback,module_typemod_src,U16type,U16index,MMI_BOOLchange_status)mmi_frm_sms_set_sms_status(type,index,MMI_FRM_SMS_INBOX);[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSUtil.c]U8mmi_frm_sms_set_sms_status(U16type,U16index,U16newtype){[...]switch(type){[...]caseMMI_FRM_SMS_INBOX:caseMMI_FRM_SMS_UNREAD:msgindex=mmi_frm_sms_inbox_list[index];mti=(mmi_frm_sms_msg_box[msgindex].msgtype&0xf000);mmi_frm_sms_msg_box[msgindex].msgtype=mti|newtype;//更改狀態(tài)break;[…]}3、短信箱3.1、信箱初始化開機(jī)時(shí),系統(tǒng)逐條讀取所有短信,保存到mmi_frm_sms_msg_box,然后根據(jù)短信類型(未讀/已讀/已發(fā)送...)將索引添加到對應(yīng)的mmi_frm_sms_xxbox_list。開機(jī)之后,收到新短信或者發(fā)送短信時(shí)選擇了“發(fā)送并保存”,則短信會(huì)即時(shí)添加到mmi_frm_sms_msg_box和各自對應(yīng)的mmi_frm_sms_xxbox_list。(1)voidmmi_frm_sms_convert_mt_to_entry()(2)voidmmi_frm_sms_convert_startup_read_to_entry()3.2、信箱入口以收件箱為例。入口函數(shù)并不直接生成列表,而是傳遞回調(diào)函數(shù)mmi_msg_inbox_list_get_item給Categrory。mmi_msg_pre_entry_inbox_list[\plutommi\mmi\Messages\MessagesSrc\SmsMoMtGuiInterface.c]voidmmi_msg_entry_inbox_list(void){[...]ShowCategory184Screen(STR_SCR6010_CAPTION,IMG_SMS_ENTRY_SCRN_CAPTION,STR_GLOBAL_OK,IMG_GLOBAL_OK,STR_GLOBAL_BACK,IMG_GLOBAL_BACK,numitem,mmi_msg_inbox_list_get_item,mmi_msg_inbox_list_get_hint,hiliteitem,guiBuffer);[...]}[\plutommi\mmi\GUI\GUI_SRC\wgui_dynamic_menuitems.c]voidload_dynamic_item_buffer(S32n_items){for(i=0;i<n_items;i++){if(dynamic_item_buffer.load_func(i,(UI_string_type)subMenuData[i],&image,3))//調(diào)用mmi_msg_inbox_list_get_item[...]}在mmi_msg_inbox_list_get_item函數(shù),取方號(hào)碼(或姓名)做信箱列表item標(biāo)題,并判斷短信的狀態(tài)(已讀/未讀)。[\plutommi\mmi\Messages\MessagesSrc\SmsMoMtGuiInterface.c]pBOOLmmi_msg_inbox_list_get_item(S32item_index,UI_string_typestr_buff,PU8*img_buff_p,U8str_img_mask)mmi_msg_inbox_list_get_item{[…]AnsiiToUnicodeString(temp,(S8*)mmi_frm_sms_get_address(MMI_FRM_SMS_APP_INBOX,(U16)item_index));//1取發(fā)件方號(hào)碼name=lookUpNumber(temp);//2取發(fā)件方姓名(如果電話本有記錄)[…]*img_buff_p=get_image(IMG_MESSAGE_UNREAD);//3未讀短信圖標(biāo)[…]*img_buff_p=get_image(IMG_MESSAGE_READ);//4已讀短信圖標(biāo)[…]}3.3、閱讀短信以收件箱為例。閱讀短信時(shí),并不是直接從全局?jǐn)?shù)組mmi_frm_sms_msg_box讀取,而是通過發(fā)送PRT_MSG_ID_MMI_SMS_GET_MSG_REQ獲得短信,讀取之后,短信的未讀狀態(tài)變?yōu)橐炎x。[\plutommi\mmi\Messages\MessagesSrc\SmsMoMtGuiInterface.c]voidmmi_msg_entry_inbox_list(void)SetLeftSoftkeyFunction(mmi_msg_get_msg_inbox,KEY_EVENT_UP);//設(shè)置左軟件[\plutommi\mmi\Messages\MessagesSrc\SmsPsHandler.c]voidmmi_msg_get_msg_inbox(void)g_msg_cntx.toDisplayMessageList=TO_DISPLAY_MESSAGE_LIST_INBOX;mmi_msg_get_msg_req(MMI_FRM_SMS_APP_INBOX,(U16)g_msg_cntx.currBoxIndex);//請求的是MMI_FRM_SMS_APP_INBOX短信[\plutommi\mmi\Messages\MessagesSrc\SmsPsHandler.c]voidmmi_msg_get_msg_req(U16type,U16index)mmi_frm_sms_read_sms(mmi_msg_get_msg_rsp,MOD_MMI,type,index,MMI_TRUE);[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSCore.c]voidmmi_frm_sms_read_sms(PsFuncPtrU16callback,module_typemod_src,U16type,U16index,MMI_BOOLchange_status){mmi_frm_sms_get_sms_index((mmi_frm_sms_msgbox_enum)type,index,data);//根據(jù)信箱類型,取得L4index。[...]mmi_frm_sms_set_sms_status(type,index,MMI_FRM_SMS_INBOX);//同步更改mmi_frm_sms_msg_box短信狀態(tài),底層短信狀態(tài)在發(fā)送讀取請求時(shí)更改。[...]mmi_frm_sms_write_action(callback,mod_src,data,mmi_frm_sms_read_sms_req);//提交讀取短信請求}[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSMsg.c]voidmmi_frm_sms_read_sms_req(void*inMsg)mmi_frm_sms_read_sms_seg();[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSMsg.c]U8mmi_frm_sms_read_sms_seg(void)SetProtocolEventHandler(mmi_frm_sms_read_sms_rsp,PRT_MSG_ID_MMI_SMS_GET_MSG_RSP);mmi_frm_sms_send_message(MOD_MMI,MOD_L4C,0,PRT_MSG_ID_MMI_SMS_GET_MSG_REQ,(oslParaType*)msgReq,NULL);讀取請求發(fā)送之后,在mmi_frm_sms_read_sms_rsp接收請求處理結(jié)果,顯示短信。[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSMsg.c]voidmmi_frm_sms_read_sms_rsp(void*inMsg)//短信請求應(yīng)答mmi_frm_sms_callback_action(&type,result);[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSMsg.c]voidmmi_frm_sms_callback_action(void*data,U16result)callback(data,(module_type)mod_src,result);//調(diào)用mmi_msg_entry_inbox_msg[\plutommi\mmi\messages\messagessrc\SmsMoMtGuiInterface.c]voidmmi_msg_entry_inbox_msg(void)//顯示短信內(nèi)容3.4、短信【選項(xiàng)】菜單1、選項(xiàng)菜單資源:SMS_INBOX_OPTIONS_MENUID//菜單IDSTR_GLOBAL_OPTIONS//字串資源2、選項(xiàng)菜單入口:[\plutommi\mmi\messages\messagessrc\SmsMoMtGuiInterface.c]voidmmi_msg_entry_option_inbox(void)3、菜單子選項(xiàng)的初始化:[\plutommi\customer\custresource\pluto_mmi\res_mmi\Res_Messages.c]voidPopulateMessagesResData(void){[...]ADD_APPLICATION_MENUITEM((SMS_INBOX_OPTIONS_MENUID,/*1.收件箱短信的[選項(xiàng)]菜單*/0,NUM_MESSAGES_INBOXOP_MENU,/*2.[選項(xiàng)]菜單項(xiàng)個(gè)數(shù)*/SMS_INBOX_OPT_REPLY_MENUID,/*3.[回復(fù)]選項(xiàng)*/SMS_INBOX_OPT_DELETE_MENUID,/*4.[刪除]選項(xiàng)*/[...]STR_GLOBAL_OPTIONS,IMG_SMS_COMMON_NOIMAGE));[...]}短信相關(guān)的高亮注冊集中在mmi_msg_set_highlight_handler,可以從這里快速查找到[選項(xiàng)]各子項(xiàng):[\plutommi\mmi\messages\messagessrc\SmsMoMtGuiInterface.c]voidmmi_msg_set_highlight_handler(void){[...]SetHiliteHandler(SMS_INBOX_OPT_REPLY_MENUID,mmi_msg_highlight_reply);SetHiliteHandler(SMS_INBOX_OPT_EDIT_MENUID,mmi_msg_highlight_edit);SetHiliteHandler(SMS_INBOX_OPT_FORWARD_MENUID,mmi_msg_highlight_forward);[...]}4、業(yè)務(wù)信箱業(yè)務(wù)信箱沿用原有的收/發(fā)件箱模式,但由于無法保存自定義的短信狀態(tài)值,所以必須自行建一個(gè)狀態(tài)映射表,用以保存是否業(yè)務(wù)短信。4.1、定義相關(guān)資源[\custom\common\mmi_msg_context.c]unsignedshortmmi_frm_sms_inbox_list[CM_SMS_MAX_MSG_NUM];unsignedshortmmi_frm_sms_outbox_list[CM_SMS_MAX_MSG_NUM];unsignedshortmmi_frm_sms_bizbox_list[CM_SMS_MAX_MSG_NUM];//addmmi_frm_sms_msgbox_structmmi_frm_sms_msg_box[CM_SMS_MAX_MSG_NUM];[\custom\common\mmi_msg_context.h]externunsignedshortmmi_frm_sms_inbox_list[CM_SMS_MAX_MSG_NUM];externunsignedshortmmi_frm_sms_outbox_list[CM_SMS_MAX_MSG_NUM];externunsignedshortmmi_frm_sms_drafts_list[CM_SMS_MAX_MSG_NUM];externunsignedshortmmi_frm_sms_bizbox_list[CM_SMS_MAX_MSG_NUM];//add[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSUtil.c]staticU16mmi_frm_sms_msgbox_size=0;staticU16mmi_frm_sms_inbox_size=0;staticU16mmi_frm_sms_outbox_size=0;staticU16mmi_frm_sms_bizbox_size=0;//add[\plutommi\mmi\miscframework\miscframeworkinc\SMSStruct.h]mmi_frm_sms_msgbox_enumMMI_FRM_SMS_INBOX=0x02,//readMMI_FRM_SMS_OUTBOX=0x04,MMI_FRM_SMS_BIZUNREAD=0x200,//addMMI_FRM_SMS_BIZINBOX=0x400,//add[\plutommi\mmi\miscframework\miscframeworkinc\SMSApi.h]typedefenum{[...]MMI_FRM_SMS_APP_INBOX=0x02,MMI_FRM_SMS_APP_OUTBOX=0x04,MMI_FRM_SMS_APP_BIZUNREAD=0x200,//addMMI_FRM_SMS_APP_BIZINBOX=0x400,//add[...]}mmi_frm_sms_app_msgbox_enum;[\plutommi\mmi\messages\messagesinc\MessagesResourceData.h]typedefenum{[...]SCR_ID_MSG_BIZBOX_MSG,//addSCR_ID_MSG_BIZBOX_LIST,//addMESSAGES_SCR_ID_DEFINES_MAX}MESSAGES_SCREEN_ENUM;[\plutommi\mmi\messages\messagesinc\MessagesResourceData.h]typedefenum{MESSAGES_MENU_WMESSAGE,MESSAGES_MENU_INBOX,MESSAGES_MENU_OUTBOX,MESSAGES_MEUN_BIZBOX,//add[...]NUM_MESSAGES_MAIN_MENU}MESSAGES_MAIN_MENU_ENUMS;[\plutommi\mmi\messages\messagesinc\SmsGuiInterfaceType.h]TO_DISPLAY_MESSAGE_LIST_NONE,TO_DISPLAY_MESSAGE_LIST_INBOX,TO_DISPLAY_MESSAGE_LIST_OUTBOX,TO_DISPLAY_MESSAGE_LIST_BIZBOX,//add4.2、接收業(yè)務(wù)短信4.2.1、新短信類型[\plutommi\mmi\miscframework\miscframeworksrc\SMSCore.c]voidmmi_frm_sms_read_sms(PsFuncPtrU16callback,module_typemod_src,U16type,U16index,MMI_BOOLchange_status){[...]if(TRUE==IsBusinessPlatformNumber(mmi_frm_sms_msg_box[index].number)){mmi_frm_sms_set_sms_status(type,index,MMI_FRM_SMS_BIZINBOX);}else{mmi_frm_sms_set_sms_status(type,index,MMI_FRM_SMS_INBOX);}[...]}[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSUtil.c]voidmmi_frm_sms_convert_mt_to_entry(mmi_frm_sms_deliver_msg_struct*data,mmi_frm_sms_msgbox_struct*entry){[...]if(TRUE==IsBusinessPlatformNumber((S8*)data->addr_number.number))/*是否業(yè)務(wù)短信*/type=MMI_FRM_SMS_BIZUNREAD;elsetype=MMI_FRM_SMS_UNREAD;[...]}4.2.2、添加到信箱[\plutommi\mmi\miscframework\miscframeworksrc\SMSUtil.c]U16mmi_frm_sms_add_sms_to_msgbox(mmi_frm_sms_msgbox_struct*entry,U16index,U8thisseg){U16entryindex;/*1.addtomsgentry*/entryindex=mmi_frm_sms_add_sms_entry(entry,index,thisseg);[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSUtil.c]U16mmi_frm_sms_add_sms_entry(mmi_frm_sms_msgbox_struct*data,U16L4index,U8thissegment){[...]#endif/*__UNIFIED_MESSAGE_SIMBOX_SUPPORT__*/if((data->msgtype&MMI_FRM_SMS_BIZBOX)==MMI_FRM_SMS_BIZBOX){type=MMI_FRM_SMS_BIZBOX;}elseif((data->msgtype&MMI_FRM_SMS_INBOX)==MMI_FRM_SMS_INBOX){type=MMI_FRM_SMS_INBOX;}[...]}/*2.updatemsglist*/if(mmi_frm_sms_list_done){mmi_frm_sms_add_sms_to_list(entry,entryindex);[\plutommi\mmi\miscframework\miscframeworksrc\SMSUtil.c]voidmmi_frm_sms_add_sms_to_list(mmi_frm_sms_msgbox_struct*data,U16index){[...]if((data->msgtype&MMI_FRM_SMS_UNREAD)==MMI_FRM_SMS_UNREAD){type=MMI_FRM_SMS_UNREAD;}elseif((data->msgtype&MMI_FRM_SMS_INBOX)==MMI_FRM_SMS_INBOX){type=MMI_FRM_SMS_INBOX;}elseif((data->msgtype&MMI_FRM_SMS_BIZUNREAD)==MMI_FRM_SMS_BIZUNREAD){type=MMI_FRM_SMS_BIZUNREAD;}if((data->msgtype&MMI_FRM_SMS_BIZINBOX)==MMI_FRM_SMS_BIZINBOX){type=MMI_FRM_SMS_BIZINBOX;}[...]switch(type){caseMMI_FRM_SMS_BIZUNREAD:caseMMI_FRM_SMS_BIZINBOX:[...]mmi_frm_sms_bizbox_list[i]=index;//把索引添加到業(yè)務(wù)信箱的索引表mmi_frm_sms_bizbox_size++;break;caseMMI_FRM_SMS_UNREAD:caseMMI_FRM_SMS_INBOX:[...]}}returnentryindex;/*3.返回入口索引*/}//執(zhí)行mmi_msg_get_msg_req(MMI_FRM_SMS_APP_NOBOX,g_msg_cntx.msg_ind_index);發(fā)送讀取短//信請求之后,在voidmmi_frm_sms_read_sms_rsp(void*inMsg)[\plutommi\mmi\MiscFramew//ork\MiscFrameworkSrc\SMSMsg.c]收到應(yīng)答:caseSMSAL_REC_READ:type=(msgRsp->mti<<12)|mmi_frm_sms_msg_box[g_msg_cntx.msg_ind_index].msgtype;/*直接使用短信本身的類型,以區(qū)分業(yè)務(wù)信箱和普通信箱*/[\plutommi\mmi\messages\messagessrc\SmsPsHandler.c]voidmmi_msg_get_msg_rsp(void*data,module_typemod,U16result)caseMMI_FRM_SMS_BIZBOX:mmi_msg_entry_bizbox_msg();//讀取業(yè)務(wù)信箱的短信內(nèi)容[\plutommi\mmi\messages\messagessrc\SmsMoMtGuiInterface.c]voidmmi_msg_entry_bizbox_msg(void)[\plutommi\mmi\messages\messagessrc\SmsMoMtGuiInterface.c]U8*mmi_msg_get_bizbox_header(void)voidmmi_msg_go_back_from_bizbox_msg(void)//跳轉(zhuǎn)到業(yè)務(wù)信箱-》[\plutommi\mmi\miscframework\miscframeworksrc\SMSUtil.c]U8*mmi_frm_sms_get_sms_address(U16type,U16index)caseMMI_FRM_SMS_BIZBOX:entryindex=mmi_frm_sms_bizbox_list[index];[\plutommi\mmi\miscframework\miscframeworksrc\SMSUtil.c]U16mmi_frm_sms_get_sms_list_size(U16type)caseMMI_FRM_SMS_BIZBOX:returnmmi_frm_sms_bizbox_size4.2.3、新業(yè)務(wù)短信提示[\plutommi\mmi\messages\messagessrc\MessagesMiscell.c]voidmmi_msg_new_msg_ind(U16index){[…]//彈出新短信提示框if(MMI_FRM_SMS_APP_BIZUNREAD==mmi_frm_sms_msg_box[index].msgtype){mmi_msg_entry_new_msg_popup(MSG_NEW_MSG_BUSINESS);//彈出新業(yè)務(wù)短信提示框}else{mmi_msg_entry_new_msg_popup(MSG_NEW_MSG_NORMAL);}[…]mmi_msg_entry_new_msg_ind();[…]}[\plutommi\mmi\Messages\MessagesSrc\MessagesMiscell.c]voidmmi_msg_entry_new_msg_ind(void){[…]if(MMI_FRM_SMS_APP_BIZUNREAD==mmi_frm_sms_msg_box[g_msg_cntx.msg_ind_index].msgtype){titleID=STR_NEW_BUSINESS_MESSAGE_FROM;}else{titleID=STR_NEW_MESSAGE_FROM_ID;}[…]//在待機(jī)界面顯示“新短信來自:”ShowCategory154Screen(0,0,STR_SCR6035_LSK,IMG_SMS_COMMON_NOIMAGE,STR_GLOBAL_BACK,IMG_SMS_COMMON_NOIMAGE,(PU8)GetString(titleID),(PU8)mmi_msg_get_new_msg_ind_string(),IMG_NEW_MESSAGE_NOTIFICATION_MSG_IN_IDLE,NULL);[…]}4.3、閱讀新短信4.3.1、響應(yīng)【讀取】鍵、發(fā)送“讀取”請求voidmmi_msg_get_msg_new(void){[...]g_msg_cntx.msg_ind_in_idle=FALSE;mmi_msg_get_msg_req(MMI_FRM_SMS_APP_NOBOX,g_msg_cntx.msg_ind_index);mmi_frm_sms_get_list_index(&type,&list_index,g_msg_cntx.msg_ind_index);[...]if(!pending){if(type==MMI_FRM_SMS_BIZUNREAD||type==MMI_FRM_SMS_BIZINBOX){mmi_msg_exit_bizbox_list_dummy();g_msg_cntx.toDisplayMessageList=TO_DISPLAY_MESSAGE_LIST_BIZBOX;}else{mmi_msg_exit_inbox_list_dummy();g_msg_cntx.toDisplayMessageList=TO_DISPLAY_MESSAGE_LIST_INBOX;}}[...]}4.3.2、設(shè)置【返回】鍵路徑[\plutommi\mmi\Messages\MessagesSrc\MessagesMiscell.c]voidmmi_msg_exit_bizbox_list_dummy(void){historycurrHistory;memset(&currHistory,0,sizeof(currHistory));currHistory.scrnID=SCR_ID_MSG_BIZBOX_LIST;SetMessagesCurrScrnID(0);g_msg_cntx.MessagesScrnIdToDelHistoryNodes=SCR_ID_MSG_BIZBOX_LIST;g_msg_cntx.MessagesScrnIdDelUptoHistoryNodes=SCR_ID_MSG_BIZBOX_LIST;currHistory.entryFuncPtr=mmi_msg_entry_bizbox_list;//詳見3.4查看業(yè)務(wù)信箱memset((S8*)currHistory.inputBuffer,0,ENCODING_LENGTH);AddHistory(currHistory);}4.3.3、接收“讀取”請求的回復(fù)[\plutommi\mmi\miscframework\miscframeworksrc\SMSMsg.c]voidmmi_frm_sms_read_sms_rsp(void*inMsg){[...]caseSMSAL_REC_READ:mmi_frm_sms_msg_box[g_msg_cntx.msg_ind_index].msgtype;type=(msgRsp->mti<<12)|mmi_frm_sms_index_list[g_msg_cntx.msg_ind_index].prevtype;[...]mmi_frm_sms_callback_action(&type,result);}[\plutommi\mmi\messages\messagessrc\SmsPsHandler.c]voidmmi_msg_get_msg_rsp(void*data,module_typemod,U16result){[...]caseMMI_FRM_SMS_BIZBOX:mmi_msg_entry_bizbox_msg();[...]}4.3.4、顯示短信內(nèi)容[\plutommi\mmi\messages\messagessrc\SmsMoMtGuiInterface.c]voidmmi_msg_entry_bizbox_msg(void){U8*guiBuffer=NULL;U8*pHeader;EMSData*pEms;U16strtitle;if(IsScreenPresent(SCR_ID_MSG_PROCESSING)){HistoryReplace(SCR_ID_MSG_PROCESSING,SCR_ID_MSG_BIZBOX_MSG,mmi_msg_entry_bizbox_msg);return;}EntryNewScreen(SCR_ID_MSG_BIZBOX_MSG,mmi_msg_exit_generic,mmi_msg_entry_bizbox_msg,NULL);PRINT_INFORMATION_2((MMI_TRACE_G6_SMS,"*[SmsMoMtGuiInterface.c]mmi_msg_entry_bizbox_msg*\n"));#ifdef__UNIFIED_MESSAGE_LIST_OPTION_SUPPORT__if(IsScreenPresent(SCR_ID_MSG_BIZBOX_LIST_OPTION)){SetMessagesScrnIdToDelHistoryNodes(SCR_ID_MSG_BIZBOX_LIST_OPTION);}else#endif/*__UNIFIED_MESSAGE_LIST_OPTION_SUPPORT__*/{SetMessagesScrnIdToDelHistoryNodes(SCR_ID_MSG_BIZBOX_MSG);}SetMessagesCurrScrnID(SCR_ID_MSG_BIZBOX_MSG);GetCurrEndKeyDownHandler();guiBuffer=GetCurrGuiBuffer(SCR_ID_MSG_BIZBOX_MSG);GetEMSDataForView(&pEms,0);pHeader=mmi_msg_get_bizbox_header();g_msg_cntx.number_from_phb=0;#ifdefined(__MMI_MESSAGES_EMS__)EnableDisableAudioPlayback();#endif#ifdef__MMI_MESSAGES_CHAT__if(pEms->listHead==NULL){if(gChatInvitation){SetChatInboxIndex(PendingSaveSendData.msgboxindex);strtitle=STR_CHAT_INVITATION;}elseif(CheckForInvitationMsg(pEms->textBuffer,(S32)pEms->textLength,TRUE)==TRUE){SetChatInboxIndex(PendingSaveSendData.msgboxindex);strtitle=STR_CHAT_INVITATION;if(guiBuffer==NULL){RemoveInvitationChar();}}else{strtitle=STR_SCR6024_CAPTION;gChatInvitation=0;}}else{st
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年礦業(yè)權(quán)抵押融資合同示范3篇
- 二零二五年新型環(huán)保欄桿研發(fā)、生產(chǎn)安裝合同3篇
- 二零二五版礦業(yè)權(quán)轉(zhuǎn)讓與安全生產(chǎn)監(jiān)管服務(wù)合同集3篇
- 二零二五版建筑工程BIM模型優(yōu)化與交付合同3篇
- 二零二五年混凝土施工安全生產(chǎn)責(zé)任書合同3篇
- 二零二五版掛靠出租車綠色出行獎(jiǎng)勵(lì)合同3篇
- 提前終止2025年度租賃合同2篇
- 商鋪售后返租合同糾紛的司法解釋與實(shí)踐(2025年版)2篇
- 二零二五版畜禽養(yǎng)殖合作經(jīng)營合同書3篇
- 二零二五年度廢舊玻璃回收利用合同書3篇
- 專題6.8 一次函數(shù)章末測試卷(拔尖卷)(學(xué)生版)八年級(jí)數(shù)學(xué)上冊舉一反三系列(蘇科版)
- GB/T 4167-2024砝碼
- 老年人視覺障礙護(hù)理
- 《腦梗塞的健康教育》課件
- 《請柬及邀請函》課件
- 中小銀行上云趨勢研究分析報(bào)告
- 遼寧省普通高中2024-2025學(xué)年高一上學(xué)期12月聯(lián)合考試語文試題(含答案)
- 青海原子城的課程設(shè)計(jì)
- 2023年年北京市各區(qū)初三語文一模分類試題匯編 - 作文
- 常州大學(xué)《新媒體文案創(chuàng)作與傳播》2023-2024學(xué)年第一學(xué)期期末試卷
- 麻醉蘇醒期躁動(dòng)患者護(hù)理
評(píng)論
0/150
提交評(píng)論