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

📄 plxmms_obj.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
            {
                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 + -