mmivoicememo.c
来自「是一个手机功能的模拟程序」· C语言 代码 · 共 1,832 行 · 第 1/5 页
C
1,832 行
case INFO_KCD_LEFT:
for( j=0;j<VM_file;j++ )
{
if( FFS_VMData.VM[j].vm_name[0]!='\0' )
{
FFS_VMData.VM[j].vm_name[0]='\0';
FFS_VMData.VM[j].month=0;
FFS_VMData.VM[j].day=0;
FFS_VMData.VM[j].year=0;
FFS_VMData.VM[j].hour=0;
FFS_VMData.VM[j].minute=0;
FFS_VMData.VM[j].length=0;
}
}
flash_VMwrite("VM");
bookShowInformation( win, TxtDeleted, NULL,NULL);
Voicememo_destroy(win);
break;
case INFO_KCD_RIGHT:
case INFO_KCD_HUP:
case INFO_TIMEOUT:
Voicememo_destroy(win);
break;
}
return MFW_EVENT_CONSUMED;
}
GLOBAL int voice_memo_DeleteAll (MfwMnu* m, MfwMnuItem* i)
{
T_MFW_HND parent = mfwParent( mfw_header() );
T_DISPLAY_DATA display_info;
T_MFW_HND win = Voicememo_create(parent);
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
T_VOICEMEMO_INFO *data = (T_VOICEMEMO_INFO *) win_data->user;
U8 j,voicejudge=0;
TRACE_FUNCTION ("voice_memo_DeleteAll()");
for( j=0;j<VM_file;j++ )
{
if( FFS_VMData.VM[j].vm_name[0]!='\0' )
{
voicejudge=1;
}
}
dialog_info_init(&display_info);
if( voicejudge==1 )
{
display_info.KeyEvents = KEY_CLEAR|KEY_LEFT|KEY_RIGHT|KEY_HUP;
display_info.TextId2 = TxtOkToDelete;
display_info.LeftSoftKey = TxtSoftOK;
display_info.RightSoftKey = TxtSoftBack;
display_info.Time = FOREVER;
display_info.iconindex=REMIND_REQUIRE;
display_info.Callback = (T_VOID_FUNC) Voicememo_delete_OK_cb;
}
else
{
display_info.KeyEvents = KEY_LEFT|KEY_RIGHT;
display_info.TextId2 = TxtNorecord;
display_info.LeftSoftKey = 0;
display_info.RightSoftKey = 0;
display_info.iconindex=REMIND_NORECORD;
display_info.Time=FOREVER;
display_info.Callback = (T_VOID_FUNC) Voicememo_delete_OK_cb;
}
info_dialog( win, &display_info );
return MFW_EVENT_CONSUMED;
}
/* 2003/10/29, wangyan, modify dialog delete style*/
GLOBAL int voice_memo_Memory (MfwMnu* m, MfwMnuItem* i)
{
T_MFW_HND win = mfw_parent(mfw_header());
char Buffer1[32];
int j;
int ListTotal=0;
T_DISPLAY_DATA display_info;
TRACE_FUNCTION ("voice_memo_Memory()");
//flash_VMread("VM");
for( j=0;j<VM_file;j++ )
{
if( strlen((char *)FFS_VMData.VM[j].vm_name)!=0 )
ListTotal=ListTotal+1;
}
memset( Buffer1,0, 32);
sprintf(Buffer1,"%d/%d",ListTotal,VM_file);
dialog_info_init(&display_info);//gdy add
display_info.KeyEvents = KEY_RIGHT|KEY_CLEAR;
display_info.TextId = ListTotal;
display_info.TextId2 = 0;
display_info.TextString = '\0';
display_info.TextString2 = '\0';
display_info.LeftSoftKey = TxtNull;
display_info.RightSoftKey = TxtSoftBack;
display_info.Time =FOREVER;
display_info.Callback = NULL;
display_info.Identifier = 701;//MMI_VOICEMEMO_MEMORYSTATE
info_dialog( win, &display_info );
return ;
}
/*******************************************************************************
$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;
U8 i;
char * titleStr;
char temp[100];
char NewVoiceMemo[PHB_name_len];
T_RTC_DATE_TIME T_DateTime;
if( event!=VM_DESTROY )
data->Identifier = event;
TRACE_FUNCTION ("voice_memo_dialog()");
switch( event )
{
case VM_BROWSER:
{
ListTotal=0;
SortVoiceMemo();
for( i=0;i<VM_file;i++ )
{
if( sort_List[i]!=-1 )
{
sprintf(temp,"vm_name:%s",FFS_VMData.VM[sort_List[i]].vm_name);
TRACE_EVENT(temp);
if( FFS_VMData.VM[sort_List[i]].mode_12_hour==TRUE )
{
if( FFS_VMData.VM[sort_List[i]].PM_flag==TRUE )
{
/* glowing: change the display format 2003-10-23*/
/*
sprintf((char *)ListName[ListTotal].voicename,"%02d:%02dP %2d/%02d/%02d",
FFS_VMData.VM[sort_List[i]].hour,
FFS_VMData.VM[sort_List[i]].minute,
FFS_VMData.VM[sort_List[i]].year,
FFS_VMData.VM[sort_List[i]].month,
FFS_VMData.VM[sort_List[i]].day);
*/
sprintf((char *)ListName[ListTotal].voicename,"%02d/%02d,%02d:%02dP",
FFS_VMData.VM[sort_List[i]].month,
FFS_VMData.VM[sort_List[i]].day,
FFS_VMData.VM[sort_List[i]].hour,
FFS_VMData.VM[sort_List[i]].minute
);
ListName[ListTotal].index=sort_List[i];
}
else
{
/* glowing: change the display format 2003-10-23*/
/*
sprintf((char *)ListName[ListTotal].voicename,"%02d:%02dA %2d/%02d/%02d",
FFS_VMData.VM[sort_List[i]].hour,
FFS_VMData.VM[sort_List[i]].minute,
FFS_VMData.VM[sort_List[i]].year,
FFS_VMData.VM[sort_List[i]].month,
FFS_VMData.VM[sort_List[i]].day);
*/
sprintf((char *)ListName[ListTotal].voicename,"%02d/%02d,%02d:%02dA",
FFS_VMData.VM[sort_List[i]].month,
FFS_VMData.VM[sort_List[i]].day,
FFS_VMData.VM[sort_List[i]].hour,
FFS_VMData.VM[sort_List[i]].minute
);
ListName[ListTotal].index=sort_List[i];
}
}
else
{
/* glowing: change the display format 2003-10-23*/
/*
sprintf((char *)ListName[ListTotal].voicename,"%02d:%02d %2d/%02d/%02d",
FFS_VMData.VM[sort_List[i]].hour,
FFS_VMData.VM[sort_List[i]].minute,
FFS_VMData.VM[sort_List[i]].year,
FFS_VMData.VM[sort_List[i]].month,
FFS_VMData.VM[sort_List[i]].day);
*/
sprintf((char *)ListName[ListTotal].voicename,"%02d/%02d,%02d:%02d",//jhxu82
FFS_VMData.VM[sort_List[i]].month,
FFS_VMData.VM[sort_List[i]].day,
FFS_VMData.VM[sort_List[i]].hour,
FFS_VMData.VM[sort_List[i]].minute
);
ListName[ListTotal].index=sort_List[i];
TRACE_EVENT("voicename");
TRACE_EVENT((char *)ListName[ListTotal].voicename);
Sprintf(temp,"listtotal:%d,index:%d",ListTotal,ListName[ListTotal].index);
TRACE_EVENT(temp);
}
ListTotal=ListTotal+1;
}
else
break;
}
/*2004/02/24,talcon add*/
if( ListTotal == 0 )
{
T_DISPLAY_DATA display_info;
voice_memo_destroy(win);
dialog_info_init(&display_info);
//display_info.KeyEvents = KEY_OK | KEY_RIGHT | KEY_LEFT | KEY_HUP ;
display_info.LeftSoftKey = '\0';
//display_info.RightSoftKey = TxtSoftBack;
//display_info.TextString = '\0';
//display_info.TextString2 = '\0';
display_info.TextId2 = TxtNorecord;
//display_info.TextId = '\0';
display_info.Time = 500;
display_info.iconindex = REMIND_NORECORD;
//display_info.Callback = (T_VOID_FUNC)tida_dialog_cb;
/*
* Call Info Screen
*/
info_dialog(0, &display_info);
break;
}//end if
data->menu_list_data = (ListMenuData *)ALLOC_MEMORY(sizeof(ListMenuData));
if( !data->menu_list_data )
{
bookShowInformation( win, TxtEmptyList, NULL,(T_VOID_FUNC)voice_Information_cb);//内存无够
}
else
{
data->menu_list_data->List = (T_MFW_MNU_ITEM *)ALLOC_MEMORY( ListTotal *sizeof(T_MFW_MNU_ITEM) );
if( data->menu_list_data->List!=0 )
{
for( i = 0; i < ListTotal; i++ )
{
/* glowing: change the display format 2003-10-23*/
//data->menu_list_data->List[i].icon = 0;
data->menu_list_data->List[i].icon = GET_ICONATTR(ICON_LISTCOMMON, 0);//&colist; /* 2004/06 sunsj modify for icon manage */
data->menu_list_data->List[i].exta = 0;
data->menu_list_data->List[i].edit = 0;
data->menu_list_data->List[i].menu = 0;
data->menu_list_data->List[i].func = NULL;
data->menu_list_data->List[i].str=(char *)ListName[i].voicename;
data->menu_list_data->List[i].flagFunc=item_flag_none;
}
data->menu_list_data->ListLength = ListTotal;
sprintf(temp,"tempindex:%d",(int *)parameter);
TRACE_EVENT(temp);
sprintf(temp,"tempindex2:%d",(int) parameter);
TRACE_EVENT(temp);
data->menu_list_data->SnapshotSize = ListTotal;
data->menu_list_data->Font = 0;
data->menu_list_data->LeftSoftKey = TxtSoftSelect;
data->menu_list_data->RightSoftKey = TxtSoftBack;
data->menu_list_data->KeyEvents = KEY_ALL;
data->menu_list_data->Reason = 0;
data->menu_list_data->Strings = TRUE;
data->menu_list_data->Attr = &voicelist_menuAttrib;
data->menu_list_data->autoDestroy = FALSE;
data->menu_list_data->ListMenuFlag =1;
/* glowing: modify TxtSearchName to TxtBrowse */
//titleStr=MmiRsrcGetText(TxtSearchName);
titleStr=MmiRsrcGetText(TxtBrowse);
data->menu_list_data->ListMenuHeadStr=titleStr;
if( (int)parameter!=0 )
{
data->menu_list_data->ListPosition = (int)parameter+1;
data->menu_list_data->CursorPosition = (int)parameter+1;
data->menu_list_data->Attr->pageturnindex=(int)parameter+1;
}
else
{
data->menu_list_data->ListPosition = 1;
data->menu_list_data->CursorPosition = 1;
data->menu_list_data->Attr->pageturnindex=1;
}
listDisplayListMenu(win, data->menu_list_data, (ListCbFunc)voicememoRead_cb,0);
}
else
{
FREE_MEMORY((void *)data->menu_list_data,sizeof(ListMenuData));
bookShowInformation(win, TxtEmptyList, NULL, (T_VOID_FUNC)voice_Information_cb);//改为无法分配空间
}
}
}
break;
case VM_PLAY:
{
data->time = 0;
tim_start (data->info_tim);
tim_start(data->animation_timer);/*2004/05/19 yhf add*/
StartPlayVmRecord(VmRecordCB,ListName[Select_index].voicename);
}
break;
case VM_RECORD:
{
for( i=0;i<VM_file;i++ )
{
if( FFS_VMData.VM[i].vm_name[0]=='\0' )
{
memset(NewVoiceMemo,'\0',PHB_name_len);
strcpy(NewVoiceMemo,"/voicememory/"); /* 2004/04/22 sunsj modify */
strcat(NewVoiceMemo,vm_name[i]);
/*2004/05/18 sunsj remove*/
//sprintf(temp,"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 modify*/
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);//录音已满
}
break;
case VM_RECORDCALL:
TRACE_EVENT("glowing: voice_memo_dialog -- begin VM_RECORDCALL");
{
for( i=0;i<VM_file;i++ )
{
if( FFS_VMData.VM[i].vm_name[0]=='\0' )
{
memset(NewVoiceMemo,'\0',PHB_name_len);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?