⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmswap_interface.c

📁 是一个手机功能的模拟程序
💻 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 + -