📄 mmswap_interface.c
字号:
/*
+-------------------------------------------------------------------+
| PROJECT: MMS
| $Workfile: mmswap_interface.c
| $Description: mms-wap interface
| $Author: Talcon Hu
| CREATED: 06.20.2004
+-------------------------------------------------------------------+
*/
#define ENTITY_MFW
/* includes */
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#if defined (NEW_FRAME)
#include "typedefs.h"
#include "vsi.h"
#include "pei.h"
#include "custom.h"
#include "gsm.h"
#else
#include "stddefs.h"
#include "custom.h"
#include "gsm.h"
#include "vsi.h"
#endif
#include "mfw_mfw.h"
#include "mfw_win.h"
#include "mfw_kbd.h"
#include "mfw_edt.h"
#include "mfw_tim.h"
#include "mfw_phb.h"
#include "mfw_sms.h"
#include "mfw_icn.h"
#include "mfw_mnu.h"
#include "mfw_lng.h"
#include "mfw_sat.h"
#include "mfw_kbd.h"
#include "mfw_nm.h"
#include "dspl.h"
#include "ksd.h"
#include "psa.h"
#include "MmiMain.h"
#include "MmiDummy.h"
//JVJE #include "MmiMsgsEdit.h"
//#include "MmiLists.h"
#include "MmiMmi.h"
#include "mmidialogs.h"
#include "mmiblklangdb.h"
#include "wap_types.h"
#include "ATBWapACI.h"
#include "ATBData.h"
#include "ATBWapAUI.h"
#include "AUIWap.h"
#include "mmiMMSGlobalDef.h"
//begin xie
#include "mmsgloble.h"
#include "Mmisounds_defs.h" //add by xie 04-07-29
//end xie
#include "MMSAgent.h"
#include "wap_interface.h"
#define WAP_TRACE 1
#include "mmiutilapi.h"
#define TRACE_EVENT(f) WAP_TRACE_EVENT(("hyl,mmswap_interface.c-%s",f));
#define TRACE_FUNCTION(f) TRACE_EVENT(f)
static char fullname[30];
extern const char MMS_DIR[];
int MMS_WAP_Open(void)
{
TRACE_FUNCTION("MMS_WAP_Open");
#ifdef MMS_WAP_TEST
if(!ATB_wap_get_view(0))
AUI_mms_start();
else/*net has opened*/
wap_mms_evt_cb(NET_CONFIGURE_CNF, MMI_MMS_SUCCESS, NULL);
#else
AUI_mms_start();
#endif
return 1;
}
int MMS_WAP_Close(void)
{
TRACE_FUNCTION("MMS_WAP_Close");
wap_mms_evt_cb(
NET_CLOSE_CNF,
MMI_MMS_SUCCESS,
NULL);
return 1;
}
int MMS_WAP_Cancel()
{
TRACE_FUNCTION("MMS_WAP_Cancel");
if(get_mmslist_head(0))
ATB_mms_cancel( get_mmslist_head(0)->urlID );
handle_mms_queue_end();
wap_mms_evt_cb(
NET_CANCEL_CNF,
MMI_MMS_SUCCESS,
NULL);
return 1;
}
//int MMS_WAP_Send(unsigned char *data_p, int size, char *mmscaddr);
//modified by JeffreyYao, 1-7-2004
int MMS_WAP_Send(char *filename, char *mmscaddr)
{
T_MMS_WAP_DATA *data;
T_WAP_VIEW *view = ATB_wap_get_view(0);
TRACE_FUNCTION("MMS_WAP_Send ");WAP_DELAY(10);
WAP_TRACE_EVENT(("%s, %s",filename, mmscaddr));
// create a new mms-send data
data = mms_sendnew(filename,mmscaddr);
if(view == 0)//mms wap not opend
{
AUI_mms_start();
return 0;
}
//set_mmslist_process(data);
//if(view !=0 && get_mmslist_head(MMS_TYPE_SEND)==data)
if(get_mmslist_head(MMS_TYPE_SEND)==data)
{
TRACE_EVENT("MMS_WAP_Send -- enter handle_mmssend");
handle_mms_queue_begin();
}
return 1;
}
int MMS_WAP_Recv(char *filename, char *url)
{
T_MMS_WAP_DATA *data;
T_WAP_VIEW *view = ATB_wap_get_view(0);
TRACE_FUNCTION("MMS_WAP_Recv");
if(url ==NULL || url[0] ==0)
{
TRACE_FUNCTION(("Error,url is invalid"));
return 0;
}
WAP_TRACE_EVENT((filename));
data = mms_recvnew(filename,url);
if(view == 0)
{
AUI_mms_start();
return 0;
}
//set_mmslist_process(data);
if(get_mmslist_head(MMS_TYPE_RECV)==data)
{
TRACE_EVENT("enter handle_mms_queue_begin");
handle_mms_queue_begin();
}
return 1;
}
#ifdef NEW_MMI_MMS_INTERFACE
void MMS_MMI_NewMMS_notification(pMMI_MMS_EVENT event)
#else
void MMS_MMI_NewMMS_notification(T_NEW_MMS_TYPE type)
#endif
{
#if 1
// extern unsigned int MMS_Get_NewMMS_Sum();
// extern void MMS_Increase_NewMMS_Sum(); ////add by xie 04-07-29
extern BOOL gIsNewMMSIncoming;
extern void MMS_Sending_End(void); //add by xie 04-07-22
extern void MMS_Retrieving_End(void); //add by xie 04-07-23
WAP_TRACE_EVENT(("MMS_MMI_NewMMS_notification()"));
if(event == NULL)
return;
WAP_TRACE_EVENT(("EVENT TYPE:%d",event->type));
rvf_delay(5);
switch(event->type)
{
case MMS_NEW_NOTIF:
WAP_TRACE_EVENT(("MMS_NEW_NOTIF status %d", event->data.pnew_notif_data->status));
if(event->data.pnew_notif_data->status == MMI_MMS_SUCCESS)
{
//手动接收时,有新的消息到达,此时在收件箱中存放的是消息通知
P_MMS mms;
#if 0
MMS_Increase_NewMMS_Sum();//add by xie 04-07-29
WAP_TRACE_EVENT(("MMS_Increase_NewMMS_Sum called in MMS_NEW_NOTIF status"));
WAP_TRACE_EVENT(("MMS_Get_NewMMS_Sum = %d",MMS_Get_NewMMS_Sum()));
rvf_delay(10);
#endif
//成功提示用户收到新的mms通知
// MMS_Check_New_Stat();
// MMS_idle_display();
//存储收件箱,如果用户正在操作信箱,是否会出错?
if(mms = getMMS())
{
storemessagefolder(mms->manager->receivefolder);
gIsNewMMSIncoming = TRUE;
StartPlayByReason(SMSPLAY,0);
}
/*在idle下显示new mms 的动画*/
}
else
{
//自动接收失败
//失败则删除存储的文件
if(event->data.pnew_notif_data->filename != NULL)
{
sprintf(fullname, "%s%s", MMS_DIR, event->data.pnew_notif_data->filename);
ffs_remove(fullname);
WAP_TRACE_EVENT((fullname));
}
/*自动接受失败*/
}
// RcvFromMenu = FALSE;
break;
case MMS_NEW_MMS:
{
//自动接收时,成功收到MMS消息
P_MMS mms ;
#if 0
MMS_Increase_NewMMS_Sum();//add by xie 04-07-29
StartPlayByReason(SMSPLAY,0);
WAP_TRACE_EVENT(("MMS_Increase_NewMMS_Sum called in MMS_NEW_MMS status"));
WAP_TRACE_EVENT(("MMS_Get_NewMMS_Sum = %d",MMS_Get_NewMMS_Sum()));
rvf_delay(10);
#endif
WAP_TRACE_EVENT(("MMS_NEW_MMS status %d", event->data.pnew_mms_data->status));
if(event->data.pnew_mms_data->status != MMI_MMS_SUCCESS)/*auto recv failed*/
{
//失败则删除存储的文件
if(event->data.pnew_mms_data->filename != NULL)/*full name*/
{
//rintf(fullname, "%s%s", MMS_DIR, event->data.pnew_mms_data->filename);
WAP_TRACE_EVENT((event->data.pnew_mms_data->filename));
ffs_remove(event->data.pnew_mms_data->filename);
}
/*auto recv fail*/
info_mms_screen(0,MMS_SCREEN_ID_AUTORECVFAILED);
}
// 成功则收到新的mms,否则提示用户收到新的mms通知
// MMS_Check_New_Stat();
// MMS_idle_display();
// 存储收件箱,如果用户正在操作信箱,是否会出错?
if(mms = getMMS())
{
storemessagefolder(mms->manager->receivefolder);
StartPlayByReason(SMSPLAY,0);
gIsNewMMSIncoming = TRUE;
}
/*自动接受成功后的提示*/
}
break;
case MMS_DELIVERY:
WAP_TRACE_EVENT(("MMS_DELIVERY status"));
WAP_TRACE_EVENT(("%s",event->data.pdelivery_data->sender));
if(event->data.pdelivery_data->sender != NULL && event->data.pdelivery_data->sender[0] != 0)
{
//提示用户传送报告
// MMS_Show_delivery(event->data.pdelivery_data->sender);
}
break;
case MMS_RETRIVE:
WAP_TRACE_EVENT(("MMS_RETRIVE status %d", event->data.pretrive_data->status));
//MMS_Retrieving_End();
if(event->data.pretrive_data->status == MMI_MMS_SUCCESS)
{
// MMSReadOptionDetails_exit();
info_mms_screen(0,MMS_SCREEN_ID_RETRIEVESUCCESS);
}
else
{
if(event->data.pretrive_data->status == MMI_MMS_CANCLED)
{
WAP_TRACE_EVENT(("Cancled"));
//info_screen(NULL, TxtMMS, TxtMMSRecvCancelled, NULL, REMIND_COMPLETE);
info_mms_screen(0,MMS_SCREEN_ID_RETRIEVECANCLED);
}
else if(event->data.pretrive_data->status == MMI_MMS_FAILED)/*retrieve fail*/
{
info_mms_screen(0,MMS_SCREEN_ID_RETRIEVEFAILED);
}
else if(event->data.pretrive_data->status == MMI_MMS_BAD_PDU)
{
info_mms_screen(0,MMS_SCREEN_ID_BAD_PDU);
}
else
{
info_mms_screen(0,MMS_SCREEN_ID_NULL);
}
//删除存储的文件
if(event->data.pretrive_data->filename != NULL)
{
#define TEST
//char pathname[50];
//sprintf(pathname, "%s%s", MMS_DIR, event->data.pretrive_data->filename);
WAP_TRACE_EVENT(("RETRIEVE FAIL,remove file: %s",event->data.pretrive_data->filename));
#ifndef TEST
ffs_remove(event->data.pretrive_data->filename);
#else
ffs_rename(event->data.pretrive_data->filename,"/mms/message/retrieveerr.mms");
ffs_remove(event->data.pretrive_data->filename);
#endif
}
}
// RcvFromMenu = FALSE;
break;
case MMS_SEND:
WAP_TRACE_EVENT(("MMS_SEND status %d", event->data.psend_data->status));
if(event->data.psend_data->status == MMI_MMS_SUCCESS)
{
P_MMS mms;
info_mms_screen(0,MMS_SCREEN_ID_SENDSUCCESS);
//info_screen(NULL, TxtMMS, TxtMMSSendSuccess, NULL, REMIND_SUCCEED);
// 需要销毁编辑窗口,将消息从草稿箱删除
// 或者销毁播放窗口。
//Destroy_editor();
mms = getMMS();
if(mms->manager && mms->manager->unsendfolder && mms->manager->unsendfolder->currentmessage)
{
pMessage pMsg;
pMsg = (pMessage)manager_on_pickout(mms->manager->unsendfolder);
pMsg->state = MMS_MSG_TYPE_SEND;
manager_on_addmsg(mms->manager->sendfolder, pMsg);
manager_on_store();
}
// manager_on_delete(mms->manager->draftfolder);
// storemessagefolder(mms->manager->draftfolder);
WAP_TRACE_EVENT(("hyl,send mms success"));
}
else if(event->data.psend_data->status == MMI_MMS_FAILED)
{
//info_screen(NULL, TxtNull, TxtMMSSendFailed, NULL, REMIND_FAILURE);
info_mms_screen(0,MMS_SCREEN_ID_SENDFAILED);
WAP_TRACE_EVENT(("hyl,send mms failed!"));
}
else if(event->data.psend_data->status == MMI_MMS_CANCLED)
{
//info_screen(NULL, TxtMMS, TxtMMSSendCancelled, NULL, REMIND_COMPLETE);
info_mms_screen(0,MMS_SCREEN_ID_SENDCANCLED);
WAP_TRACE_EVENT(("hyl,send mms cancelled!"));
}
else
{
//info_screen(NULL, TxtMMS, TxtMMSSendFailed, NULL, REMIND_FAILURE);
info_mms_screen(0,MMS_SCREEN_ID_SENDFAILED);
WAP_TRACE_EVENT(("hyl,send mms unknown!"));
}
break;
default:
WAP_TRACE_EVENT(("default: error!"));
break;;
}
WAP_DELAY(30);
#endif
}
void MMS_Close_All(void)
{
TRACE_FUNCTION("MMS_Close_All");
/**check push queue,handle push queue************/
if(handle_push_queue())
return;
/***close mms ********/
AUI_mms_close();
/*manage destroy*/
MI_manager_on_destroy(MANAGER_MASK_MMSAGT);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -