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 + -
显示快捷键?