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