📄 plxmms_obj.c
字号:
{
i++;
content = MMSE_GetContent(mmse, g_obj_data.message->msg, i);
continue;
}
}
name = content->name; //utf8 name
type = content->type;
if(!type) //no type
{
i++;
content = MMSE_GetContent(mmse, g_obj_data.message->msg, i);
continue;
}
#ifdef MMS_DEBUG
PlxTrace("type=%s\r\n", type);
#endif
data = mmsmsg_GetGivenContentData(g_obj_data.message, content, &data_len);
if(!data)
{
i++;
content = MMSE_GetContent(mmse, g_obj_data.message->msg, i);
continue;
}
obj_type = GetObjType(type, data);
MMS_Free((void*)data);
data = NULL;
/* if(obj_type == 0) //unknown
{
#ifdef MMS_DEBUG
PlxTrace("unknown\r\n");
#endif
i++;
content = MMSE_GetContent(mmse, g_obj_data.message->msg, i);
continue;
}
*/
//smil
if(obj_type == 0 && MMS_Strstr(type, "/smil"))
{
i++;
content = MMSE_GetContent(mmse, g_obj_data.message->msg, i);
continue;
}
//add a item
item = (MmsObjItem*)MMS_Malloc(sizeof(MmsObjItem));
if(!item)
{
i++;
content = MMSE_GetContent(mmse, g_obj_data.message->msg, i);
continue;
}
MMS_Memset((void*)item, 0, sizeof(MmsObjItem));
//get wchar name
wObjName = GetUnicodeObjName(name);
if(wObjName)
{
wObjNameLen = pfnUnicodeStrlen((S8*)wObjName);
if(wObjNameLen >= MAX_OBJ_NAME_LEN-7)
{
wObjName[MAX_OBJ_NAME_LEN-8] = 0x0000;
}
pfnUnicodeStrcpy((S8*)item->name, (S8*)wObjName);
MMS_Free((void*)wObjName);
}
else
{
if(obj_type == MMS_OBJ_TEXT)
AnsiiToUnicodeString((S8*)item->name, (S8*)"Text");
else if(obj_type >= MMS_OBJ_BMP && obj_type <= MMS_OBJ_PNG)
AnsiiToUnicodeString((S8*)item->name, (S8*)"Image");
else if(obj_type >= MMS_OBJ_MID && obj_type <= MMS_OBJ_IMY)
AnsiiToUnicodeString((S8*)item->name, (S8*)"Sound");
}
/*
//too long the name
if(name)
{
if(MMS_Strlen(name) >= MAX_OBJ_NAME_LEN)
{
name[MAX_OBJ_NAME_LEN-1] = 0;
}
//convert name
AnsiiToUnicodeString((S8*)item->name, (S8*)name);
}
else
{
if(obj_type == MMS_OBJ_TEXT)
AnsiiToUnicodeString((S8*)item->name, (S8*)"Text");
}
*/
wDot = (WCHAR*)MMS_WFindCharFromEnd(item->name, pfnUnicodeStrlen((S8*)item->name), '.');
// if(wDot)
// *wDot = 0x0000;
// if(!MMS_WFindCharFromEnd(item->name, pfnUnicodeStrlen((S8*)item->name), '.'))
{
switch(obj_type)
{
case MMS_OBJ_TEXT:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)GetString(MMS_OBJ_STR_TXT);
break;
case MMS_OBJ_BMP:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)GetString(MMS_OBJ_STR_BMP);
break;
case MMS_OBJ_WBMP:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)GetString(MMS_OBJ_STR_WBMP);
break;
case MMS_OBJ_GIF:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)GetString(MMS_OBJ_STR_GIF);
break;
case MMS_OBJ_JPG:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)GetString(MMS_OBJ_STR_JPG);
break;
case MMS_OBJ_PNG:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)GetString(MMS_OBJ_STR_PNG);
break;
case MMS_OBJ_MID:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)GetString(MMS_OBJ_STR_MID);
break;
case MMS_OBJ_MP3:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)GetString(MMS_OBJ_STR_MP3);
break;
case MMS_OBJ_AMR:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)GetString(MMS_OBJ_STR_AMR);
break;
case MMS_OBJ_WAV:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)GetString(MMS_OBJ_STR_WAV);
break;
case MMS_OBJ_MMF:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)GetString(MMS_OBJ_STR_MMF);
break;
case MMS_OBJ_IMY:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)L".imy";
break;
case MMS_OBJ_3GP:
if(wDot)
*wDot = 0x0000;
type_string = (U8*)L".3gp";
break;
default: //unsupported
type_string = NULL;
break;
}
if(type_string)
pfnUnicodeStrcat((S8*)item->name, (S8*)type_string);
}
item->type = obj_type;
item->content = content;
AddListNode(item, TRUE);
//next
i++;
content = MMSE_GetContent(mmse, g_obj_data.message->msg, i);
}
return i-1;
}
/***************************************************************************
* Function GetObjType
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
U8 GetObjType(char* type, unsigned char* data)
{
U8 img_type = MMS_OBJ_UNKNOWN;
#ifdef MMS_DEBUG
PlxTrace("GetObjType\r\n");
#endif
if(!type)
return MMS_OBJ_UNKNOWN;
#ifdef MMS_DEBUG
PlxTrace("type = %s\r\n", type);
#endif
if(MMS_Stristr(type, MMCT_TEXT_UTF8) ||
MMS_Stristr(type, "text/plain"))
{
return MMS_OBJ_TEXT;
}
//image
if(MMS_Stristr(type, "image/bmp"))
img_type = MMS_OBJ_BMP;
else if(MMS_Stristr(type, MMCT_IMAGE_GIF))
img_type = MMS_OBJ_GIF;
else if(MMS_Stristr(type, MMCT_IMAGE_JPG))
img_type = MMS_OBJ_JPG;
// if(MMS_Strstr(type, MMCT_IMAGE_TIFF))
// return MMS_OBJ_TIFF;
else if(MMS_Stristr(type, MMCT_IMAGE_PNG))
img_type = MMS_OBJ_PNG;
else if(MMS_Stristr(type, MMCT_IMAGE_WBMP) ||
MMS_Stristr(type, MMS_CONTENTTYPE_WBMP))
img_type = MMS_OBJ_WBMP;
if(img_type != MMS_OBJ_UNKNOWN)
{
if(!data)
return img_type;
if(img_type != GetObjTypeByData(data))
return GetObjTypeByData(data);
else
return img_type;
}
//sound
if(MMS_Stristr(type, MMCT_AUDIO_AMR))
return MMS_OBJ_AMR;
if(MMS_Stristr(type, MMCT_AUDIO_MIDI) ||
MMS_Stristr(type, MMS_CONTENTTYPE_MID) ||
MMS_Stristr(type, MMS_CONTENTTYPE_XMID) ||
MMS_Stristr(type, MMS_CONTENTTYPE_SPMID))
return MMS_OBJ_MID;
if(MMS_Stristr(type, MMCT_AUDIO_MMF))
return MMS_OBJ_MMF;
if(MMS_Stristr(type, MMCT_AUDIO_WAV) ||
MMS_Stristr(type, "audio/x-wav"))
return MMS_OBJ_WAV;
if(MMS_Stristr(type, "melody") ||
MMS_Stristr(type, "audio/x-imy"))
return MMS_OBJ_IMY;
if(MMS_Stristr(type, "3gp"))
return MMS_OBJ_3GP;
if(MMS_Stristr(type, "audio/mp3"))
return MMS_OBJ_MP3;
//unknown
if(MMS_Stristr(type, "*/*"))
return MMS_OBJ_UNKNOWN;
return MMS_OBJ_UNKNOWN;
}
/***************************************************************************
* Function GetObjTypeByData
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
U8 GetObjTypeByData(unsigned char* data)
{
if(!data)
return MMS_OBJ_UNKNOWN;
//jpg
if( data[0] == 0xff && data[1] == 0xd8 && data[2] == 0xff)
return MMS_OBJ_JPG;
//bmp
if( data[0] == 'B' && data[1] == 'M')
return MMS_OBJ_BMP;
//wbmp
if( data[0] == 0 && data[1] == 0)
return MMS_OBJ_WBMP;
//gif
if( data[0] == 'G' && data[1] == 'I' && data[2] == 'F')
return MMS_OBJ_GIF;
//png
if (MMS_Memcmp(data,"\x89PNG\x0d\x0a\x1a\x0a",8) == 0)
return MMS_OBJ_PNG;
return MMS_OBJ_UNKNOWN;
}
/***************************************************************************
* Function CreateSaveObj
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void CreateSaveObj(void)
{
U8* pDot = NULL;
// unsigned short* dot = L".";
#ifdef MMS_DEBUG
PlxTrace("CreateSaveObj\r\n");
#endif
//get cur obj
g_obj_data.cur_item = GetListNode(g_obj_data.cur_item_index);
if(!g_obj_data.cur_item)
return;
#ifdef MMS_DEBUG
/* {
char cName[MAX_OBJ_NAME_LEN];
UnicodeToAnsii((S8*)cName, (S8*)g_obj_data.cur_item->name);
PlxTrace("name=%s", cName);
PlxTrace("dot=%x", (const unsigned short)dot[0]);
}
*/
#endif
//get obj name
pfnUnicodeStrcpy((S8*)g_obj_data.save_filename, (S8*)g_obj_data.cur_item->name);
if(g_obj_data.cur_item->type != MMS_OBJ_UNKNOWN &&
g_obj_data.cur_item->type != MMS_OBJ_MP3 &&
g_obj_data.cur_item->type != MMS_OBJ_TEXT &&
g_obj_data.cur_item->type != MMS_OBJ_BMP &&
g_obj_data.cur_item->type != MMS_OBJ_WBMP &&
g_obj_data.cur_item->type != MMS_OBJ_GIF &&
g_obj_data.cur_item->type != MMS_OBJ_JPG &&
g_obj_data.cur_item->type != MMS_OBJ_PNG)
{
//remove wchars after '.'
pDot= MMS_WFindCharFromEnd(g_obj_data.save_filename,
pfnUnicodeStrlen((S8*)g_obj_data.save_filename), '.'); //(const unsigned short)dot[0]);
if(pDot)
{
#ifdef MMS_DEBUG
PlxTrace("find dot\r\n");
#endif
*((unsigned short*)pDot) = 0x0000;
}
}
#ifdef MMS_DEBUG
{
char cName[MAX_OBJ_NAME_LEN];
UnicodeToAnsii((S8*)cName, (S8*)g_obj_data.save_filename);
PlxTrace("name=%s", cName);
}
#endif
if(!g_obj_data.cur_item->content->bAttachment && //a slide obj
g_obj_data.cur_item->type == MMS_OBJ_TEXT) //a text
DoSaveObj(g_obj_data.save_filename, TRUE);
else
DoSaveObj(g_obj_data.save_filename, FALSE);
}
void DoSaveObj(U8* def_name, BOOL bContentText)
{
U8* data = NULL;
WCHAR* uni_text = NULL;
int uni_len;
long len;
PLIBCONTENTTYPE save_type;
// U16 cur_screen_id;
#ifdef MMS_DEBUG
{
char cName[MAX_OBJ_NAME_LEN];
PlxTrace("DoSaveObj\r\n");
UnicodeToAnsii((S8*)cName, (S8*)def_name);
PlxTrace("name=%s", cName);
}
#endif
if(!g_obj_data.cur_item || !def_name)
{
PLIB_MessageBox(PMBTYPE_ERROR, NULL,
(WCHAR*)GetString(STR_ID_PLX_MMS_OBJ_SAVEFAIL), 0);
ObjMenuGoBack();
return;
}
//type and file name
switch(g_obj_data.cur_item->type)
{
//image
case MMS_OBJ_BMP:
save_type = PIMG_BMP;
break;
case MMS_OBJ_WBMP:
save_type = PIMG_WBMP;
break;
case MMS_OBJ_GIF:
save_type = PIMG_GIF;
break;
case MMS_OBJ_JPG:
save_type = PIMG_JPG;
break;
case MMS_OBJ_PNG:
save_type = PIMG_PNG;
break;
//sound
case MMS_OBJ_MID:
save_type = PAUDIO_MIDI;
break;
case MMS_OBJ_WAV:
save_type = PAUDIO_WAV;
break;
case MMS_OBJ_MMF:
save_type = PAUDIO_MMF;
break;
case MMS_OBJ_AMR:
save_type = PAUDIO_AMR;
break;
case MMS_OBJ_3GP:
save_type = PAUDIO_3GPP;
break;
case MMS_OBJ_MP3:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -