📄 mmimms_main.c
字号:
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 + -