mmivoicememo.c
来自「是一个手机功能的模拟程序」· C语言 代码 · 共 1,832 行 · 第 1/5 页
C
1,832 行
win_data = ((T_MFW_HDR *)data->info_win)->data;
win_data->user = (void *)data;
data->info_tim = tim_create (data->info_win, 1000, (T_MFW_CB)voice_memo_tim_cb);
data->animation_timer= tim_create (data->info_win, 500, (T_MFW_CB)voice_memo_tim_animation_cb);/*2004/05/19 yhf modify*/
data->info_kbd = kbd_create (data->info_win, KEY_ALL, (T_MFW_CB)voice_memo_kbd_cb);
dynamic_Phonebook_win=data->info_win;
return data->info_win;
}
/*******************************************************************************
$Function: voice_memo_destroy
$Description: Destruction of an dialog
$Returns: void
$Arguments: win
*******************************************************************************/
void voice_memo_destroy (T_MFW_HND own_window)
{
T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data;
T_voice_memo * data = (T_voice_memo *)win->user;
TRACE_FUNCTION ("voice_memo_destroy()");
if( data )
{
if( call_data.win_voicerecord&&call_data.win )
{
call_data.win_voicerecord=0;//zy 2003-04-01 set this data to zero
}
kbd_delete (data->info_kbd);
tim_delete(data->animation_timer);/*2004/05/19 yhf */
tim_delete (data->info_tim);
win_delete (data->info_win);
data->info_win=0;
if( (data->Identifier==VM_RECORD)||(data->Identifier==VM_RECORDCALL) )
SetVoiceMenuWindow(0);
if( data->Identifier==VM_BROWSER )
ClearWindowHandle();
driverFlag&=0xfffffffe;
// Free Memory
needback=0;
FREE_MEMORY ((void *)data, sizeof (T_voice_memo));
}
}
/*******************************************************************************
$Function: voice_memo
$Description: Dialog function for voice memo dialog
$Returns: void
$Arguments: win, window handle event, value, parameter
*******************************************************************************/
/*
void voice_memo_dialog (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_voice_memo * data = (T_voice_memo *)win_data->user;
T_DISPLAY_DATA display_info;
data->Identifier = value;
TRACE_FUNCTION ("voice_memo()");
switch (event)
{
case VM_INIT:
{
TRACE_EVENT ("VM_INIT()");
// Create timer and keyboard handler
data->info_tim = tim_create (win, 1000, (T_MFW_CB)voice_memo_tim_cb);
data->info_kbd = kbd_create (win, KEY_ALL, (T_MFW_CB)voice_memo_kbd_cb);
switch ( value )
{
case VM_PLAY:
{
TRACE_EVENT ("VM_PLAY()");
//check the voicememo buffer
if (FFS_flashData.voice_memo_position EQ 0)
{
display_info.KeyEvents = KEY_CLEAR | KEY_RIGHT | KEY_LEFT;
display_info.LeftSoftKey = '\0';
display_info.RightSoftKey = '\0';
display_info.TextString = '\0';
display_info.TextString2 = '\0';
display_info.TextId2 = TxtRecording;
display_info.TextId = TxtEmpty;
display_info.Time = THREE_SECS;
display_info.Callback = (T_VOID_FUNC)voice_memo_dialog_cb;
// Call Info Screen
info_dialog (win, &display_info);
}
else
{
//start the second timer
data->time = 0;
tim_start (data->info_tim);
//start playback
//csf_vm_play(0);
StartPlayVmRecord();
}
}
break;
case VM_RECORD:
{
TRACE_FUNCTION ("VM_RECORD()");
if (FFS_flashData.voice_memo_position >= VOICE_MEMORY_FULL)
{
TRACE_EVENT ("memory full ");
//play Keybeep
audio_PlaySoundID(0, TONES_KEYBEEP, 200, 0 );
display_info.KeyEvents = KEY_CLEAR | KEY_RIGHT | KEY_LEFT;
display_info.LeftSoftKey = '\0';
display_info.RightSoftKey = '\0';
display_info.TextString = '\0';
display_info.TextString2 = '\0';
display_info.TextId2 =TxtRecording;
display_info.TextId = TxtFull;
display_info.Time = THREE_SECS;
display_info.Callback = (T_VOID_FUNC)voice_memo_dialog_cb;
// Call Info Screen
info_dialog (win, &display_info);
}
else
{
//start the second timer
data->time = 0;
tim_start (data->info_tim);
TRACE_EVENT("Start Record");
//start the record
StartVmRecord(VmRecordCB,"/vmrecord");
//csf_vm_record_2 (FFS_flashData.voice_memo_position);
}
}
break;
default: break;
}
win_show (win);
}
break;
case VM_DELETE_BUFFER://if the user selected to clear the Voicememo buffer
{
display_info.KeyEvents = KEY_CLEAR | KEY_RIGHT | KEY_LEFT;
display_info.LeftSoftKey = '\0';
display_info.RightSoftKey = '\0';
display_info.TextString = '\0';
display_info.TextString2 = '\0';
display_info.TextId2 = 0;
display_info.Time = THREE_SECS;
display_info.TextId = TxtDeleted;
display_info.Callback = (T_VOID_FUNC)voice_memo_dialog_cb;
// Call Info Screen
info_dialog (win, &display_info);
}
break;
case VM_DESTROY:
{
voice_memo_destroy(win);
}
break;
default: break;
}
}
*/
/*******************************************************************************
$Function: voice_memo_win_cb
$Description: Callback function for information dialog
$Returns: void
$Arguments: window handle event, win
*******************************************************************************/
static int voice_memo_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
T_voice_memo * data = (T_voice_memo *)win->user;
UINT32 f_color;
TRACE_FUNCTION ("voice_memo_win_cb()");
if( data EQ 0 ) return 1;
switch( event )
{
case E_WIN_VISIBLE:
{
if( win->flags & E_WIN_VISIBLE )
{
dspl_ClearAll();//Clear Screen
sprintf(data->elapsed_time,"%02d sec", data->time);
if( data->Identifier==VM_RECORD || data->Identifier==VM_RECORDCALL )
{
// Print the information screen
draw_special_background();/*2004/1/19, wangyan modify*/
/* 2004/06 sunsj modify for picture manage */
#if(MAIN_LCD_SIZE==3)
DRAW_ICON_SEL(ICON_RECORDICON,data->time%3);//徐建华
#endif
#if(MAIN_LCD_SIZE==4)
DRAW_ICON_SEL(ICON_VOICEMEMO_WIN, 0);
#endif
DRAW_ICON_SEL(ICON_VOICEMEMO_WIN, 1);
// ALIGNED_PROMPT(LEFT,Mmi_layout_first_line(),0, TxtRecording);
ALIGNED_PROMPT(CENTER,8,DSPL_TXTATTR_TRANSPARENT, TxtRecording);
// Print the elapsed time
//displayAlignedText(LEFT, Mmi_layout_second_line(), 0, data->elapsed_time);
displayAlignedText(CENTER, Mmi_layout_second_line(), 0, data->elapsed_time);
// dspl_BitBlt(5, 80, 110, 20,0, (void *)record_bmp, 0);
// Print softkeys
displaySoftKeys(TxtStop, TxtCancel);
}
else if( data->Identifier==VM_RECORDCALL )
{
draw_special_background();/*2004/1/19, wangyan modify*/
/* 2004/06 sunsj modify for picture manage */
#if(MAIN_LCD_SIZE==3)
DRAW_ICON_SEL(ICON_RECORDICON,data->time%3);//徐建华
#endif
#if(MAIN_LCD_SIZE==4)
DRAW_ICON_SEL(ICON_VOICEMEMO_WIN, 0);
#endif
DRAW_ICON_SEL(ICON_VOICEMEMO_WIN, 1);
// ALIGNED_PROMPT(LEFT,Mmi_layout_first_line(),0, TxtRecording);
ALIGNED_PROMPT(CENTER,8,DSPL_TXTATTR_TRANSPARENT, TxtRecording);
// displayAlignedText(LEFT, Mmi_layout_second_line(), 0, data->elapsed_time);
displayAlignedText(CENTER, Mmi_layout_second_line(), 0, data->elapsed_time);
// dspl_BitBlt(5, 80, 110, 20,0, (void *)record_bmp, 0);
displaySoftKeys(TxtStop, TxtCancel);
}
/*#if(MAIN_LCD_SIZE==3)//jhxu720
if (needback)
{
needback=0;
displaySoftKeys(TxtSave, TxtSoftBack);
f_color=dspl_SetBkgColor(0xFFA402);
dspl_fill_rectangle(7,83,7+data->time*5,88);
dspl_SetBkgColor(f_color);
}
#elif(MAIN_LCD_SIZE==4)*/
if( needback )
{
needback=0;
displaySoftKeys(TxtSave, TxtSoftBack);
/* f_color=dspl_SetBkgColor(0xFFA402);
dspl_fill_rectangle(7,83,7+data->time*5,88);
dspl_SetBkgColor(f_color);*/
/* 2004/06 sunsj modify for picture manage */
#if(MAIN_LCD_SIZE==4)
DRAW_ICON_ATTRIBUTE(ICON_VOICEMEMO_WIN, 19+3*(data->time-1), 55, 2, ICON_LOCATION);
#elif (MAIN_LCD_SIZE==3)
DRAW_ICON_ATTRIBUTE(ICON_VOICEMEMO_WIN, 19+3*(data->time-1), 52, 2, ICON_LOCATION);
#endif
}
//#endif
}
}
break;
default:
return 0;
}
return 1;
}
/* 2004/05/18 yhf modify */
static T_MFW_CB voice_memo_tim_animation_cb (T_MFW_EVENT event, T_MFW_TIM *tc)
{
T_MFW_HND win = mfw_parent (mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_voice_memo * data = (T_voice_memo *)win_data->user;
timStop(data->animation_timer);
timStart(data->animation_timer);
if( data->current_frame < 3 )
{
data->current_frame++;
}
else
{
data->current_frame = 0;
}
#if(MAIN_LCD_SIZE==4)
DRAW_ICON_SEL(ICON_VOICEMEMO_ANIM, data->current_frame%3);
#endif
/*
switch(data->current_frame%3)
{
case 0:
dspl_BitBlt(75, 68, 17, 27, 0, (void *)memo_animation1, 0);
break;
case 1:
dspl_BitBlt(75, 68, 17, 27, 0, (void *)memo_animation2, 0);
break;
case 2:
dspl_BitBlt(75, 68, 17, 27, 0, (void *)memo_animation3, 0);
break;
}
*/
}
/*******************************************************************************
$Function: voice_memo_tim_cb
$Description: Callback function for the voice_memo timer.
$Returns: MFW event handler
$Arguments: window handle event, timer control block
*******************************************************************************/
static T_MFW_CB voice_memo_tim_cb (T_MFW_EVENT event, T_MFW_TIM *tc)
{
T_MFW_HND win = mfw_parent (mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_voice_memo * data = (T_voice_memo *)win_data->user;
T_RTC_DATE_TIME T_DateTime;
char buf[40];
UINT32 f_color;
TRACE_FUNCTION ("voice_memo_tim_cb()");
if( !winIsFocussed(win) )
{
StopVmRecord(VmRecordCB);
needback=1;
return;
}
switch( data->Identifier )
{
case VM_RECORD:
{
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?