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

📄 plxmms_view.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
#endif
        return MMS_OBJ_UNKNOWN;
    }

    content = info.pAudioContent;
    if(!content)
    {
#ifdef MMS_DEBUG
    PlxTrace("!content\r\n");
#endif
        return MMS_OBJ_UNKNOWN;
    }

    if(!content->type)
    {
#ifdef MMS_DEBUG
    PlxTrace("!content->type\r\n");
#endif
        return MMS_OBJ_UNKNOWN;
    }

//    type = content->type;
#ifdef MMS_DEBUG
    PlxTrace("content->type=%s\r\n", content->type);
#endif

    return GetObjType(content->type, NULL);
}

/***************************************************************************
* Function	UpdateSound
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
BOOL UpdateSound(void)
{
    U8* sound;
    long sound_len;
//    char* type;

#ifdef MMS_DEBUG
    PlxTrace("UpdateSound\r\n");
#endif

    if(!g_view_data.message)
    {
#ifdef MMS_DEBUG
    PlxTrace("!g_view_data.message\r\n");
#endif
        return FALSE;
    }

    if(g_view_data.sound)
    {
#ifdef MMS_DEBUG
    PlxTrace("has old sound\r\n");
#endif
        switch(g_view_data.sound_type)
        {
        case MMS_OBJ_MID:
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_MID\r\n");
#endif
            StopAudioMidiStream();
            break;
        case MMS_OBJ_AMR:
        case MMS_OBJ_IMY:
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_AMR\r\n");
#endif
            StopAudioStream();
            break;
//        case MMS_OBJ_MMF:
//            break;
        case MMS_OBJ_WAV:
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_WAV\r\n");
#endif
            StopAudioWavStream();
            break;
        }

        MMS_Free((void*)g_view_data.sound);
        g_view_data.sound = NULL;
        g_view_data.sound_type = MMS_OBJ_UNKNOWN;
    }
    //get sound data
	if(g_view_data.bNoSmil)
	{
		sound = mmsmsg_GetGivenContentData(g_view_data.message,
			g_view_data.no_smil_content, &sound_len);
	}
	else
	{
		sound = mmsmsg_GetContentData(g_view_data.message, MMS_AUDIO, &sound_len);
	}

    if(!sound)
    {
#ifdef MMS_DEBUG
    PlxTrace("!sound\r\n");
#endif
        return FALSE;
    }

    //get sound type
    if((g_view_data.sound_type = GetSoundType()) == MMS_OBJ_UNKNOWN)
    {
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_UNKNOWN\r\n");
#endif
        MMS_Free((void*)sound);
        return FALSE;
    }
    
#ifdef MMS_DEBUG
    PlxTrace("update ok\r\n");
#endif
    g_view_data.sound = sound;
    g_view_data.sound_len = sound_len;
    return TRUE;
}

void StartPlaySound(void)
{
#ifdef MMS_DEBUG
    PlxTrace("StartPlaySound\r\n");
#endif

    if(!g_view_data.message)
    {
#ifdef MMS_DEBUG
    PlxTrace("!g_view_data.message\r\n");
#endif
        return;
    }

    if(!g_view_data.bHasSound || 
       !g_view_data.sound ||
       g_view_data.sound_type == MMS_OBJ_UNKNOWN)
    {
#ifdef MMS_DEBUG
    PlxTrace("err\r\n");
#endif
        return;
    }

    switch(g_view_data.sound_type)
    {
    case MMS_OBJ_MID:
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_MID\r\n");
#endif
//        PlayAudioMidiStream(g_view_data.sound, (unsigned short)g_view_data.sound_len, 
//            DEVICE_AUDIO_PLAY_ONCE);
        mdi_audio_play_string((void*)g_view_data.sound, g_view_data.sound_len,
            MEDIA_SMF, DEVICE_AUDIO_PLAY_ONCE, NULL, NULL);
        break;
    case MMS_OBJ_AMR:
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_AMR\r\n");
#endif
//        PlayAudioStream(g_view_data.sound, (unsigned short)g_view_data.sound_len, 
//            MEDIA_AMR,DEVICE_AUDIO_PLAY_ONCE);
        mdi_audio_play_string((void*)g_view_data.sound, g_view_data.sound_len,
            MEDIA_AMR,DEVICE_AUDIO_PLAY_ONCE, NULL, NULL);
        break;
    case MMS_OBJ_WAV:
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_WAV\r\n");
#endif
//        PlayAudioWavStream(g_view_data.sound, (unsigned short)g_view_data.sound_len, 
//            DEVICE_AUDIO_PLAY_ONCE);
        mdi_audio_play_string((void*)g_view_data.sound, g_view_data.sound_len,
            MEDIA_WAV, DEVICE_AUDIO_PLAY_ONCE, NULL, NULL);
        break;
    case MMS_OBJ_IMY:
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_IMY\r\n");
#endif
//        PlayAudioStream(g_view_data.sound, (unsigned short)g_view_data.sound_len, 
//                MEDIA_IMELODY, DEVICE_AUDIO_PLAY_ONCE);
        mdi_audio_play_string((void*)g_view_data.sound, g_view_data.sound_len,
            MEDIA_IMELODY, DEVICE_AUDIO_PLAY_ONCE, NULL, NULL);
        break;
    case MMS_OBJ_MP3:
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_MP3\r\n");
#endif
//        PlayAudioStream(g_view_data.sound, (unsigned short)g_view_data.sound_len, 
//                MEDIA_DAF, DEVICE_AUDIO_PLAY_ONCE);
        mdi_audio_play_string((void*)g_view_data.sound, g_view_data.sound_len,
            MEDIA_DAF, DEVICE_AUDIO_PLAY_ONCE, NULL, NULL);
        break;
    }
}

/***************************************************************************
* Function	StopPlaySound
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void StopPlaySound(void)
{
#ifdef MMS_DEBUG
    PlxTrace("StopPlaySound\r\n");
#endif

    if(!g_view_data.message)
    {
#ifdef MMS_DEBUG
    PlxTrace("!g_view_data.message\r\n");
#endif
        return;
    }

    if(!g_view_data.bHasSound || 
       !g_view_data.sound ||
       g_view_data.sound_type == MMS_OBJ_UNKNOWN)
    {
#ifdef MMS_DEBUG
    PlxTrace("no sound\r\n");
#endif
        return;
    }

    switch(g_view_data.sound_type)
    {
    case MMS_OBJ_MID:
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_MID\r\n");
#endif
        StopAudioMidiStream();
        break;
    case MMS_OBJ_AMR:
    case MMS_OBJ_IMY:
    case MMS_OBJ_MP3:
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_AMR\r\n");
#endif
        StopAudioStream();
        break;
    case MMS_OBJ_WAV:
#ifdef MMS_DEBUG
    PlxTrace("MMS_OBJ_WAV\r\n");
#endif
        StopAudioWavStream();
        break;
    }
#ifdef MMS_DEBUG
    PlxTrace("stop end\r\n");
#endif
}

/***************************************************************************
* Function	FormatWString
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
int FormatWString(U8* wsrc, long src_len, int* line_pos)
{
    int  i;
    int  word_len;
    int  left_width;
    int  line_idx   = 0;
#ifdef MMS_SCROLLVIEW
    int  max_width  = MMS_CLIENT_WIDTH - 4 - current_MMI_theme->scrollbar_size;
#else
    int  max_width  = MMS_CLIENT_WIDTH - 4;
#endif
    long next_start = 0;
    long next_end   = 0;
    long dest_pos;
    unsigned char* pSrc = NULL;
    
    if(!wsrc || src_len <= 0 || !line_pos)
        return -1;

    line_pos[0] = 0;
	line_idx++;

    pSrc = (unsigned char*)wsrc;
    
    left_width = max_width;
    next_start = 0;
    next_end   = 0;
    word_len   = 0;
    dest_pos   = 0;

    for(i = 0; i < src_len; i += 2)
    {
		if(pSrc[i] == 0 && pSrc[i+1] == 0) //end
		{
			break;
		}
        else if(pSrc[i+1] == 0) //single byte
        {
            if(pSrc[i] >= 0x30 && pSrc[i] <= 0x39 ||
               pSrc[i] >= 0x41 && pSrc[i] <= 0x5a ||
               pSrc[i] >= 0x61 && pSrc[i] <= 0x7a) //character, word_len++, and left_width - char width
            {
                word_len += CHAR_WIDTH( *((unsigned short*)(pSrc+i)) );//1;
                //left_width -= CHAR_WIDTH( *((unsigned short*)(pSrc+i)) );
            }
            else //non-character ascii
            {
                if(pSrc[i] == '\n') //换行符,加一个新行
				{
					line_pos[line_idx] = (i+2)/2;
					line_idx++;
					dest_pos += 2;
					
					left_width = max_width;//max_width - 1;
					word_len = 0;

					next_start += 2;
					next_end   += 2;
					continue;
				}

                //word_len++
				//word_len++;
				//dest_pos += (next_end-next_start);

				//left_width - char width
                left_width -= word_len + CHAR_WIDTH( *((unsigned short*)(pSrc+i)) );

				//word_len = CHAR_WIDTH( *((unsigned short*)(pSrc+i)) );//1;
                next_start = next_end;
                
				//if(word_len > left_width) //add a '\n', and reset left_width
                if(left_width < 0)
				{
					line_pos[line_idx] = (next_end)/2;
					line_idx++;
					//dest_pos += 2;

					left_width = max_width - CHAR_WIDTH( *((unsigned short*)(pSrc+i)) );//max_width - 1;
					word_len = 0;//CHAR_WIDTH( *((unsigned short*)(pSrc+i)) );//1;

					next_start += 2;
					next_end   += 2;
					continue;
				}
				else
				{
					//left_width--;
                    //left_width -= CHAR_WIDTH( *((unsigned short*)(pSrc+i)) );
					word_len = 0;

					next_start += 2;
					next_end   += 2;
					continue;
				}
            }
        }
        else //double byte
        {
            //word_len += 2;
			dest_pos += (next_end-next_start);
			
            //left_width -= word_len-2;
            left_width -= word_len + CHAR_WIDTH( *((unsigned short*)(pSrc+i)) );
			
            //word_len = 2;
            next_start = next_end;
                
			//if(word_len > left_width) //add a '\n', and reset left_width
            if(left_width < 0)
			{
				line_pos[line_idx] = (next_start)/2;
				line_idx++;
				//dest_pos += 2;

				left_width = max_width - CHAR_WIDTH( *((unsigned short*)(pSrc+i)) );//max_width - 2;
				//word_len = 2;
                word_len = 0;
				next_start += 2;
				next_end   += 2;
				continue;
			}
			else
			{
				//left_width -= 2;
                //left_width -= CHAR_WIDTH( *((unsigned short*)(pSrc+i)) );
                word_len = 0;

				next_start += 2;
				next_end   += 2;
				continue;
			}
        }

        if(word_len > left_width) //add a '\n', and reset left_width
        //if(left_width < 0)
        {
			if(word_len > max_width)
			{
				line_pos[line_idx] = next_end/2; //(next_start+max_width*2)/2;
				line_idx++;
				//dest_pos += 2;

				left_width = max_width;
				word_len = CHAR_WIDTH( *((unsigned short*)(pSrc+i)) );
				next_start = next_end;
			}
			else
			{
				line_pos[line_idx] = next_start/2;
				line_idx++;
				dest_pos += 2;

				left_width = max_width;// - word_len;
			}
        }

        next_end += 2;
    }

    line_pos[line_idx] = src_len / 2;
	return line_idx;
}

/***************************************************************************
* Function	RedrawViewTitle
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
#define MAX_TITLE_LEN 40

void RedrawViewTitle(void)
{
    U8   uTitle[MAX_TITLE_LEN];
    char ascTitle[MAX_TITLE_LEN / 2];
    long size = 0;
    int  size_k = 0;
    int  size_dec = 0;
    PMMSEMSGINFO info;
    size = mmsmsg_GetMessageSize(g_view_data.message);
    GetShowSize(size, &size_k, &size_dec);

	if(g_view_data.bNoSmil)
	{
        if(size_dec > 0)
        {
		    sprintf(ascTitle, "%d/%d %d.%dK",
			    g_view_data.cur_slide,
			    g_view_data.obj_count,
			    size_k, size_dec);
        }
        else
        {
            sprintf(ascTitle, "%d/%d %dK",
			    g_view_data.cur_slide,
			    g_view_data.obj_count,
			    size_k);
        }
	}
	else
	{
       

⌨️ 快捷键说明

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