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

📄 mmimms_main.c

📁 彩信的源代码,包括彩信的打包,发送,接收,解包,对做彩信软件的朋友有帮助.
💻 C
📖 第 1 页 / 共 5 页
字号:
		slide->content_cur = content;
		MMS_DelContent(slide,p_cur_doc);
		slide->image_flag = 0;
	}
	return 1;
}

/* ----------------------------------------------------------------------------
* Function Name: MMIMMS_DeleteCurVideo
* Purpose:从当前页删除视频
* Input:  pMMS_EDocument:编辑文档
* Returns:
* Author:nihongf@mobilesoft.com.cn
* ----------------------------------------------------------------------------*/ 
T_WORD MMIMMS_DeleteCurVideo(pMMS_EDocument p_cur_doc)
{
	uint16			 	type = 0;
	pMMS_Content 	content = NULL;
	pMMS_Slide   		slide = p_cur_doc->slide_cur; 
	if(slide->video_flag)
	{
		content = slide->content_root;
		while (content)
		{
			if (content->type == MMS_TYPE_MP4 ||
				content->type == MMS_TYPE_3GP )
			{
				type = (uint16)content->type;
				break;
			}
			content = content->next;
		}
		slide->content_cur = content;
		MMS_DelContent(slide,p_cur_doc);
		slide->video_flag = 0;
	}
	return 1;
}

/* ----------------------------------------------------------------------------
* Function Name: CmsMmsAddNewAddr
* Purpose: 将新地址加入到地址链表中
* Input:  head:	地址链表指针
		  addr:	新地址指针
		  bAddNode:增加的结点
* Returns: 地址链表指针
* Author:nihongf@mobilesoft.com.cn
* ----------------------------------------------------------------------------*/ 
LOCAL p_MMS_RECEPIENT	CmsMmsAddNewAddr( p_MMS_RECEPIENT head , char* addr , int bAddNode )
{
	if( !head )	return NULL;

	SCI_MEMCPY( head->m_address , addr , MAX_NAME_LENGTH );
//	SCI_TRACE_LOW( "addr list1 : %s.\n" , head->m_address );
	if( bAddNode )
	{
		head->p_next = (p_MMS_RECEPIENT)cms_malloc( sizeof( MMS_RECEPIENT ) );
		if( head->p_next )
		{
			SCI_MEMSET( head->p_next , 0 , sizeof( MMS_RECEPIENT) );		
		}
	}
	return head->p_next;
}

/* ----------------------------------------------------------------------------
* Function Name: CmsMmsParseRecepient
* Purpose: 将得到的字符串解析生成地址链表
* Input:  __head:	地址链表指针
		  str:	字符串
* Returns: void
* Author:nihongf@mobilesoft.com.cn
* ----------------------------------------------------------------------------*/ 
void CmsMmsParseRecepient(p_MMS_RECEPIENT __head, char *str)
{
	p_MMS_RECEPIENT	head = __head;
	int		nAddrCount = 0;
	const	char*	chToken = " ,;";
	char	chAddr[ 64 ] , *ptrAddr = chAddr;
	while( str && *str )
	{
		if( !strchr( chToken , *str ) )
		{
			if( ptrAddr - chAddr <= MAX_NAME_LENGTH )
			{
				*ptrAddr++ = *str;
			}
			else
			{
				SCI_TRACE_LOW( "addr too long , cut ...... \n" );
			}			
		}
		else
		{	
			if( ptrAddr != chAddr )
			{
				if( ++nAddrCount > MMIMMS_MAX_ADDRESS_NUM )
				{
					SCI_TRACE_LOW( "hehe , too many addr , ignore.....\n" );
					break;
				}
				*ptrAddr = 0;
				head = CmsMmsAddNewAddr( head , chAddr , 1 );			
			}
			ptrAddr = chAddr; 			
		}
		++str;
	}
	*ptrAddr = 0;
	CmsMmsAddNewAddr( head , chAddr , 0 );
}

/******************************************************************************
 * 函数定义:	MmsDelAllReceiver
 * 函数说明:	删除所有收件人
 * 参数说明:	p_receiver:	收件人列表头指针
 * 返回值:		空 
********************************************************************************/
void MmsDelAllReceiver(p_MMS_RECEPIENT* p_receiver)
{
	p_MMS_RECEPIENT p_temp = NULL;
	p_MMS_RECEPIENT p_temp2 = NULL;
	p_temp = *p_receiver;
	while(p_temp != NULL)
	{
		p_temp2 = p_temp->p_next;
		cms_free(p_temp);
		p_temp = p_temp2;
	}
	*p_receiver = NULL;
}


/* ----------------------------------------------------------------------------
* Function Name: MMIMMS_AddImage
* Purpose:在当前页添加图像
* Input:  T_Composer_Image:	图片结构
		  pMMS_EDocument: 编辑文档
* Returns:T_WORD
* Author:nihongf@mobilesoft.com.cn
* ----------------------------------------------------------------------------*/ 
T_WORD MMIMMS_AddImage(T_Composer_Image* Image,pMMS_EDocument p_cur_doc)
{
	int16         type = 0;
	char          img_fname[MMS_FILE_NAME_LENGTH] = {0};
	SCI_FILE*	  fd = 0;
	uint32 value = 0;

	SCI_TRACE_LOW("MMIMMS_AddImage in");
	if ((p_cur_doc->totalsize + Image->size) > MMS_SIZE_OF_MESSAGE)
	{

		SCI_TRACE_LOW("p_cur_doc->totalsize = %d,Image->size = %d",p_cur_doc->totalsize,Image->size);
		SCI_TRACE_LOW("MMIMMS_AddImage:total size is too big");
		PUBWIN_OpenPromptAlertWin(
			PUBWIN_SOFTKEY_ONE, 
			TXT_MMS_MMS_TOO_BIG, 
			IMAGE_PROMPT_ICON_WRONG, 
			ALERT_TIMEOUT, 
			PNULL
			);
		return -1;// xuelianb modify[2005-11-08]
	}

	value = MMI_GetFfsTime();

	sprintf(img_fname,"%lu",value);

	if( 0 == strcmp(Image->Type, COMPOSER_IMAGE_GIF) )
	{
		type = MMS_TYPE_GIF;
		strcat(img_fname,".gif");
	}
	else if( 0 == strcmp(Image->Type, COMPOSER_IMAGE_JPEG) )
	{
		type = MMS_TYPE_JPEG;
		strcat(img_fname,".jpg");
	}
	else if( 0 == strcmp(Image->Type, COMPOSER_IMAGE_PNG) )
	{
		type = MMS_TYPE_PNG;
		strcat(img_fname,".png");
	}
	else if( 0 == strcmp(Image->Type, COMPOSER_IMAGE_WBMP) )
	{
		type = MMS_TYPE_WBMP;
		strcat(img_fname,".wbmp");
	}
	else if (0 == strcmp(Image->Type, COMPOSER_IMAGE_BMP))
	{
		type = MMS_TYPE_BMP1;
		strcat(img_fname,".bmp");
	}
	else 
	{
		SCI_TRACE_LOW("error:unknown type:type = %s",Image->Type) ;
	}

	fd =(SCI_FILE*) mmsf_Open((char*)img_fname,"w");

	if (!fd )
	{
		SCI_TRACE_LOW("open the file error");
		PUBWIN_OpenPromptAlertWin(
			PUBWIN_SOFTKEY_ONE, 
			TXT_MMS_ADD_FAIL, 
			IMAGE_PROMPT_ICON_WRONG, 
			ALERT_TIMEOUT, 
			PNULL
			);
		return -1;
	}

	mmsf_Write((char *)Image->ImgBuf, 1, Image->size,(FILE_HANDLE) fd);
	mmsf_Close((FILE_HANDLE)fd);

	if (MMS_New_Content((unsigned char*)img_fname,type,p_cur_doc->slide_cur,p_cur_doc))
	{
		return 0;
	}
	else 
	{
		SCI_TRACE_LOW("error:add new content failed");
		PUBWIN_OpenPromptAlertWin(
			PUBWIN_SOFTKEY_ONE, 
			TXT_MMS_ADD_FAIL, 
			IMAGE_PROMPT_ICON_WRONG, 
			ALERT_TIMEOUT, 
			PNULL
			);
		return -1;
	}
}


/* ----------------------------------------------------------------------------
* Function Name: MMIMMS_AddAudio
* Purpose:在当前页添加音乐
* Input:  T_Composer_Audio:	音乐结构
		  pMMS_EDocument: 编辑文档
* Returns:T_WORD
* Author:nihongf@mobilesoft.com.cn
* ----------------------------------------------------------------------------*/ 
T_WORD MMIMMS_AddAudio(T_Composer_Audio*Audio,pMMS_EDocument p_cur_doc)

{

	int16         type = 0;
	char		  audio_fname[MMS_FILE_NAME_LENGTH] = {0};
	SCI_FILE*	  fd = 0;
	uint32 value = 0;

	SCI_TRACE_LOW("MMIMMS_AddAudio in");
	if ((p_cur_doc->totalsize + Audio->size) > MMS_SIZE_OF_MESSAGE)
	{
		PUBWIN_OpenPromptAlertWin(
			PUBWIN_SOFTKEY_ONE, 
			TXT_MMS_MMS_TOO_BIG, 
			IMAGE_PROMPT_ICON_WRONG, 
			ALERT_TIMEOUT, 
			PNULL
			);
		return -1;
	}

	value = MMI_GetFfsTime();

	sprintf(audio_fname,"%lu",value);

	SCI_TRACE_LOW("FNH audio_fname = %s",audio_fname);

	if( 0 == strcmp(Audio->Type, COMPOSER_AUDIO_WAV) )
	{
		type = MMS_TYPE_WAV;
		strcat(audio_fname,".wav");
		SCI_TRACE_LOW("FNH type = %d",type);
	}
	else if( 0 == strcmp(Audio->Type, COMPOSER_AUDIO_IMELODY) )
	{
		type = MMS_TYPE_IMY;
		strcat(audio_fname,".imy");
		SCI_TRACE_LOW("FNH type = %d",type);
	}
	else if( 0 == strcmp(Audio->Type, COMPOSER_AUDIO_MIDI) )
	{
		type = MMS_TYPE_MIDI;
		strcat(audio_fname,".midi");
		SCI_TRACE_LOW("FNH type = %d",type);
	}
#ifdef HAVE_AMR
	else if( 0 == strcmp(Audio->Type, COMPOSER_AUDIO_AMR) )
	{
		type = MMS_TYPE_AMR;
		strcat(audio_fname,".amr");
		SCI_TRACE_LOW("FNH type = %d",type);
	}
#endif
#ifdef HAVE_MP3
	else if( 0 == strcmp(Audio->Type, COMPOSER_AUDIO_MP3) )
	{
		type = MMS_TYPE_MP3;
		strcat(audio_fname,".mp3");
		SCI_TRACE_LOW("FNH type = %d",type);
	}
#endif
	else 
	{
		SCI_TRACE_LOW("error:unknown type %d",type) ;
	}

	fd =(SCI_FILE*) mmsf_Open((char*)audio_fname,"w");
	SCI_TRACE_LOW("FNH open file is success!");

	if (!fd )
	{

		PUBWIN_OpenPromptAlertWin(
			PUBWIN_SOFTKEY_ONE, 
			TXT_MMS_ADD_FAIL, 
			IMAGE_PROMPT_ICON_WRONG, 
			ALERT_TIMEOUT, 
			PNULL
			);
		SCI_TRACE_LOW("open the file error");
		return -1;
	}

	mmsf_Write((char *)Audio->AudBuf, 1, Audio->size,(FILE_HANDLE) fd);
	SCI_TRACE_LOW("FNH write file is success!");
	mmsf_Close((FILE_HANDLE)fd);
	SCI_TRACE_LOW("FNH close file is success!");

	SCI_TRACE_LOW("FNH editdoc = %d",p_cur_doc);
	SCI_TRACE_LOW("fnh slide = %d",p_cur_doc->slide_cur);
	if (MMS_New_Audio((unsigned char*)audio_fname,type,p_cur_doc->slide_cur,p_cur_doc) == 0)
	{
		SCI_TRACE_LOW("FNH NEW AUDIO IS SUCCESS,g_peditdoc->slide_cur->audio_type = %d",p_cur_doc->slide_cur->audio_type);
		return 0;
	}
	else 
	{
		SCI_TRACE_LOW("FNH NEW AUDIO IS FAIL");
		PUBWIN_OpenPromptAlertWin(
			PUBWIN_SOFTKEY_ONE, 
			TXT_MMS_ADD_FAIL, 
			IMAGE_PROMPT_ICON_WRONG, 
			ALERT_TIMEOUT, 
			PNULL
			);
		return -1;
	}
}

/* ----------------------------------------------------------------------------
* Function Name: MMIMMS_GetCurSlideVideo
* Purpose:得到当前页的视频信息
* Input:  T_Composer_Video:	视频结构
		  pMMS_EDocument: 编辑文档
* Returns:T_WORD
* Author:nihongf@mobilesoft.com.cn
* ----------------------------------------------------------------------------*/ 
T_WORD MMIMMS_GetCurSlideVideo(T_Composer_Video*Video,pMMS_EDocument p_edoc)

{
#ifdef HAVE_MPEG4
	
	uint32 		    len = 0,size=0;
	pMMS_Content 	content = NULL;
	pMMS_EDocument p_curedoc;
	SCI_TRACE_LOW("MMIMMS_GetCurSlideVideo in");
	p_curedoc = p_edoc;

	content = p_curedoc->slide_cur->content_root;
	
	if(p_curedoc->slide_cur->video_flag != 1)
	{
		SCI_TRACE_LOW("there is not any image in the slide");
		return -1;
	}
	
	for(;content;content = content->next)
	{
       if(content->type == MMS_TYPE_MP4 || content->type == MMS_TYPE_3GP  )
		   break;
	}

	if(content == NULL)
	{
		SCI_TRACE_LOW("there is not any Video in the slide,Video flag error");
		return -1;
	}

	
	if(content->type == MMS_TYPE_MP4)
	{
		SCI_TRACE_LOW("FNH enter MP4");
		size=content->contentsize;
		len = content->contentsize;
		Video->Type=MPEG4_MP4_FILE;					
	}
	else if(content->type == MMS_TYPE_3GP)
	{
		SCI_TRACE_LOW("FNH enter 3GP");
		Video->Type=MPEG4_3GP_FILE;
		size = content->contentsize;
		len = content->contentsize;					
	}
	else 
	{
		SCI_TRACE_LOW("unknown video type:%d",content->type);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -