⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmivoicememo.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                    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 + -