📄 mmivoicememo.c
字号:
strcpy(NewVoiceMemo,"/voicememory/"); /* 2004/04/22 sunsj modify */
strcat(NewVoiceMemo,vm_name[i]);
sprintf(temp,"glowing: voice_memo_dialog-vm_name:%s",NewVoiceMemo);
TRACE_EVENT(temp);
data->index=i;
break;
}
}
//if (strlen((char *)NewVoiceMemo)!=0)
if( i<VM_file )
{
data->time=0;
tim_start (data->info_tim);
tim_start(data->animation_timer);/* 2004/05/19 yhf add*/
TRACE_EVENT("glowing: voice_memo_dialog -- before StartVmRecord");
StartVmRecord(VmRecordCB,NewVoiceMemo);
sprintf(data->elapsed_time,"%02d sec", data->time);
SetVoiceMenuWindow(win);
winShow(win);
}
else bookShowInformation( win, TxtCapacityFull, NULL,(T_VOID_FUNC)voice_Information_cb);//录音已满
}
TRACE_EVENT("glowing: voice_memo_dialog -- end VM_RECORDCALL");
break;
/* glowing: add the following event define for fix the bug that
it can't record if disconnected
*/
case VM_SAVERECORDCALL:
TRACE_EVENT("glowing: voice_memo_dialog -- enter VM_SAVERECORDCALL");
if( recordcall_completed )
break;
StopVmRecord(VmRecordCB);
tim_stop (data->info_tim);
tim_stop (data->animation_timer);/*2004/05/19 yhf add*/
if( RTC_GetDateTime(&T_DateTime)==RV_OK )
{
TRACE_EVENT_P1("glowing: voice_memo_dialog -- data->time=%d", data->time);
memcpy(FFS_VMData.VM[data->index].vm_name,vm_name[data->index],PHB_name_len);
//FFS_VMData.VM[data->index].length=data->time+1>20?20:data->time+1;
FFS_VMData.VM[data->index].length=data->time+1>MAX_RECORD_SECONDS?MAX_RECORD_SECONDS:data->time+1;
FFS_VMData.VM[data->index].hour =T_DateTime.hour;
FFS_VMData.VM[data->index].minute =T_DateTime.minute;
FFS_VMData.VM[data->index].day =T_DateTime.day;
FFS_VMData.VM[data->index].year =T_DateTime.year;
FFS_VMData.VM[data->index].month =T_DateTime.month;
FFS_VMData.VM[data->index].PM_flag =T_DateTime.PM_flag;
FFS_VMData.VM[data->index].mode_12_hour =T_DateTime.mode_12_hour;
flash_VMwrite("VM");
//bookShowInformation( win, TxtAddSucceed, NULL,(T_VOID_FUNC)voice_Information_cb);//录音成功
bookShowInformation( win, TxtAddSucceed, NULL,NULL );//录音成功
}
else
{
//read rtc error!
}
TRACE_EVENT("glowing: voice_memo_dialog -- leave VM_SAVERECORDCALL");
break;
case VM_DESTROY:
{
TRACE_EVENT("glowing: voice_memo_dialog -- before voice_memo_destry");
voice_memo_destroy( win );
TRACE_EVENT("glowing: voice_memo_dialog -- after voice_memo_destry");
}
break;
default: break;
}
}
static void voice_Information_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_voice_memo * data = (T_voice_memo *)win_data->user;
TRACE_FUNCTION ("voice_information_cb()");
switch( reason )
{
case INFO_TIMEOUT:
case INFO_KCD_RIGHT:
case INFO_KCD_HUP:
case INFO_KCD_LEFT:
{
voice_memo_destroy( win );
}
break;
default: break;
}
}
/*******************************************************************************
Public Methods
*******************************************************************************/
static void voicememoRead_cb(T_MFW_HND * win, ListMenuData * ListData)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_voice_memo * data = (T_voice_memo *)win_data->user;
T_MFW_WIN * windata = ((T_MFW_HDR *)ListData->win)->data;
ListWinInfo * dataInfo = (ListWinInfo *)windata->user;
switch( ListData->Reason )
{
case LISTS_REASON_SELECT:
case LISTS_REASON_OK:
{
//SetVoiceMenuWindow(ListData->win);
Select_index=ListData->CursorPosition;
data->menu_options_win=bookMenuStart(data->info_win,bookPhonebookVoiceList(), PhbkFromVoiceMemo);
}
break;
case LISTS_REASON_HANGUP:
// if(returntoidle())
break;
case LISTS_REASON_BACK:
case LISTS_REASON_CLEAR:
{
listsDestroy(ListData->win);
FREE_MEMORY((void *)data->menu_list_data->List, ListTotal*sizeof(T_MFW_MNU_ITEM));
FREE_MEMORY((void *)data->menu_list_data,sizeof(ListMenuData));
SEND_EVENT(win, VM_DESTROY, NULL, NULL);
}
break;
case LISTS_REASON_UP:
{
dataInfo->MenuListsAttr.pageturnindex=((ListData->CursorPosition-1+ListTotal)%ListTotal)+1;
mnuUp(dataInfo->MenuLists);
ListData->CursorPosition=(ListData->CursorPosition-1+ListTotal)%ListTotal;
}
break;
case LISTS_REASON_DOWN:
{
dataInfo->MenuListsAttr.pageturnindex=((ListData->CursorPosition+1+ListTotal)%ListTotal)+1;
mnuDown(dataInfo->MenuLists);
ListData->CursorPosition=(ListData->CursorPosition+1+ListTotal)%ListTotal;
}
break;
default:break;
}
}
static void SetVoiceMenuWindow(T_MFW_HND win)
{
VoiceMemoWin=win;
}
static T_MFW_HND GetVoiceMenuWindow()
{
return VoiceMemoWin;
}
GLOBAL int voice_memo_play ()
{
T_MFW_HND parent_win = mfw_parent(mfw_header());
T_MFW_HND win;
TRACE_FUNCTION ("voice_memo_play()");
win=voice_play_create(parent_win);
PlayVoiceMWin=win;
SEND_EVENT(win,VM_PLAY, NULL, NULL);
winShow(win);
return 0;
}
static void voice_isdelete_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)dynamic_Phonebook_win)->data;
T_voice_memo * data = (T_voice_memo *)win_data->user;
TRACE_FUNCTION ("voice_delete_cb()");
switch( reason )
{
case INFO_KCD_RIGHT:
case INFO_KCD_HUP:
{
//return to menu;
}
break;
case INFO_KCD_LEFT:
{
FFS_VMData.VM[ListName[Select_index].index].vm_name[0]='\0';
FFS_VMData.VM[ListName[Select_index].index].day=0;
FFS_VMData.VM[ListName[Select_index].index].hour=0;
FFS_VMData.VM[ListName[Select_index].index].year=0;
FFS_VMData.VM[ListName[Select_index].index].minute=0;
FFS_VMData.VM[ListName[Select_index].index].month=0;
FFS_VMData.VM[ListName[Select_index].index].length=0;
flash_VMwrite("VM");
bookShowInformation( win, TxtDeleted, NULL,(T_VOID_FUNC)voice_delete_cb);//删除成功
}
break;
default: break;
}
}
GLOBAL int voice_memo_Delete()
{
T_MFW_HND win = mfw_parent(mfw_header());
T_DISPLAY_DATA Dialog;
TRACE_FUNCTION ("voice_memo_delete()");
dialog_info_init(&Dialog);//gdy add
Dialog.KeyEvents = KEY_CLEAR | KEY_LEFT | KEY_RIGHT | KEY_HUP; /* 2004/06/01 sunsj modify */
Dialog.TextId = 0;
Dialog.TextId2 = TxtPhbkDelMess;
Dialog.TextString = '\0';
Dialog.TextString2 = '\0';
Dialog.LeftSoftKey = TxtSoftOK;
Dialog.RightSoftKey = TxtCancel;
Dialog.Time = FOREVER;
Dialog.Callback = (T_VOID_FUNC) voice_isdelete_cb;
Dialog.Identifier = 0;
Dialog.iconindex=REMIND_REQUIRE;
info_dialog( win, &Dialog );
return 0;
}
static void voice_delete_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)dynamic_Phonebook_win)->data;
T_voice_memo * data = (T_voice_memo *)win_data->user;
TRACE_FUNCTION ("voice_delete_cb()");
switch( reason )
{
case INFO_TIMEOUT:
case INFO_KCD_RIGHT:
case INFO_KCD_HUP:
case INFO_KCD_LEFT:
{
SEND_EVENT(win, E_MNU_ESCAPE, NULL, NULL);
listsDestroy(data->menu_list_data->win);
FREE_MEMORY((void *)data->menu_list_data->List,ListTotal *sizeof(T_MFW_MNU_ITEM));
FREE_MEMORY((void *)data->menu_list_data,sizeof(ListMenuData));
voice_memo_destroy(dynamic_Phonebook_win);
}
break;
default: break;
}
}
static T_MFW_HND voice_play_create (T_MFW_HND parent_win)
{
T_MFW_WIN * win_data;
T_voice_memo * data = (T_voice_memo *)ALLOC_MEMORY (sizeof (T_voice_memo));
TRACE_FUNCTION ("vocie_play_create()");
data->info_win = win_create (parent_win, 0, E_WIN_VISIBLE, (T_MFW_CB)voice_play_win_cb);
if( data->info_win EQ 0 ) return 0;
// Create window handler
data->mmi_control.dialog = (T_DIALOG_FUNC)voice_play_dialog;
data->mmi_control.data = data;
data->parent_win = parent_win;
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_play_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_play_kbd_cb);
driverFlag|=0x0001;
return data->info_win;
}
static void voice_play_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_play_destroy()");
if( data )
{
kbd_delete (data->info_kbd);
tim_delete (data->info_tim);
tim_delete(data->animation_timer);/*2004/05/19 yhf add*/
win_delete (data->info_win);
data->info_win=0;
driverFlag&=0xfffffffe;
// Free Memory
PlayVoiceMWin=0;
playneedback=0;
FREE_MEMORY ((void *)data, sizeof (T_voice_memo));
}
}
static int voice_play_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
T_voice_memo * data = (T_voice_memo *)win->user;
UINT32 f_color;
char temp[100];
TRACE_FUNCTION ("voice_play_win_cb()");
if( data EQ 0 ) return 1;
switch( event )
{
case E_WIN_VISIBLE:
{
if( win->flags & E_WIN_VISIBLE )
{
dspl_ClearAll();//Clear Screen
switch( data->Identifier )
{
case VM_PLAY:
/*2004/05/19 yhf modify*/
#if ( MAIN_LCD_SIZE==2 )
{
// 2004.3.16 WYJ
dspl_ClearAll();
draw_special_background();
/* title display*/
dspl_BitBlt( menuup[FlashSettingData.theme].area.px,menuup[FlashSettingData.theme].area.py,
menuup[FlashSettingData.theme].area.sx,menuup[FlashSettingData.theme].area.sy,
menuup[FlashSettingData.theme].nIcons,menuup[FlashSettingData.theme].icons,0);
ALIGNED_PROMPT(CENTER, 0, DSPL_TXTATTR_TRANSPARENT, TxtPlayback);
//bar display
dspl_BitBlt(0, 51, 102, 14, 0, (void *)gImage_bar, 0);
//icon display
dspl_BitBlt(recordIcons[0].area.px, recordIcons[0].area.py, recordIcons[0].area.sx,
recordIcons[0].area.sy, 0, (void *)recordIcons[0].icons, 0);
// Print the elapsed time
sprintf(data->elapsed_time,"%02d sec", data->time);
displayAlignedText(CENTER, 52, DSPL_TXTATTR_TRANSPARENT, data->elapsed_time);
// Print softkeys
displaySoftKeys(TxtNull, TxtSoftBack);
if( playneedback )
{
TRACE_EVENT("we draw the regc");
playneedback=0;
f_color=dspl_SetBkgColor(0x6A66E5);
Sprintf(temp,"length:%d,time:%d",FFS_VMData.VM[ListName[Select_index].index].length,data->time);
TRACE_EVENT(temp);
Sprintf(temp,"select_index:%d",Select_index);
TRACE_EVENT(temp);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -