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

📄 mmibookphonebook.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
            FREE_MEMORY((void *)data->menu_list_data,sizeof(ListMenuData));
            data->menu_list_data=NULL;
        }
        key_before=0xff;
        cursor_correct=1;
        key_index=0;
        SearchTotal=search_total;
        // delete ourself		
        data->phbk->CallPhbk_win=0;
        ClearCallWindowHandle();
        winDelete( data->win );
        FREE_MEMORY( (void *) data, sizeof( tBookStandard ) );
    }
}
static void show_number()
{
    UBYTE old_mode;
    UINT32 b_color;
    TRACE_EVENT("show_number");
    if( showtimer )
    {
        TRACE_EVENT("we have showtimer");
        timStop(showtimer);
        timStart(showtimer);
    }
    if( refresh_flag==1 )
    {
        TRACE_EVENT("we need refresh");
        old_mode=dspl_Enable(0);
        b_color=dspl_SetBkgColor(0xF8E0EE);

#if(MAIN_LCD_SIZE==4)
        dspl_Clear (0,126,SCREEN_SIZE_X,142);
#elif(MAIN_LCD_SIZE==3)
        //dspl_Clear (0,100,SCREEN_SIZE_X,113);
		phonebook_search_flag=TRUE;
#endif
        dspl_SetBkgColor(b_color);

        refresh_flag=0;
        dspl_Enable(old_mode);
    }
}

static T_MFW_CB showtimer_cb (T_MFW_EVENT event, T_MFW_TIM *tc)
{
    MfwHdr *win=(MfwHdr *)mfwParent((MfwHdr *)showtimer);
    T_MFW_WIN    *win_data=(MfwWin *)(win->data);
    tBookStandard  *data=(tBookStandard *)(win_data->user);
    T_phbk           * Phbk     = data->phbk;
    MfwHdr *mnu_win=data->menu_list_data->win;//yq modified 2003/3/12.(MfwHdr *)mfwParent(mfwFocus);	

    timStop(showtimer);
    refresh_flag=1;
    if( winIsFocussed(mnu_win) )
        ShowPhoneBookNumber(show_index,NONE);
    return 0;
}

static void yq_edtchar(T_MFW_HND edt,unsigned char code)
{
    MfwHdr *win=(MfwHdr *)mfwParent((MfwHdr *)edt);
    T_MFW_WIN    *win_data=(MfwWin *)(win->data);
    tBookStandard  *data=(tBookStandard *)(win_data->user);
    TRACE_EVENT("yq_edtchar");
    if( edttimer )
        timStop(edttimer);
    if( cursor_correct )
    {
        edtChar(edt,edt_key[code-2][key_index]);
        edtChar(edt,ecLeft);
        timStart(edttimer);

        key_index=0;
    }
    else
    {
        if( code==key_before )
        {
            key_index++;
            if( key_index>=wstrlen((char *)edt_key[code-2]) )
                key_index=0;
            edtChar(edt,ecDel);
            edtChar(edt,edt_key[code-2][key_index]);
            edtChar(edt,ecLeft);
            timStart(edttimer);
        }
        else
        {
            edtChar(edt,ecRight);
            edtChar(edt,edt_key[code-2][0]);
            edtChar(edt,ecLeft);
            timStart(edttimer);

            key_index=0;
        }
    }
    cursor_correct=0;
    key_before=code;
    TRACE_EVENT("yq:now the edt buffer:");
    TRACE_EVENT((char *)data->edtBuf);
}

static T_MFW_CB edttimer_cb (T_MFW_EVENT event, T_MFW_TIM *tc)
{
    MfwHdr *win=(MfwHdr *)mfwParent((MfwHdr *)edttimer);
    T_MFW_WIN    *win_data=(MfwWin *)(win->data);
    tBookStandard  *data=(tBookStandard *)(win_data->user);
    T_phbk           * Phbk     = data->phbk;
    MfwHdr *mnu_win=data->menu_list_data->win;//yq modified 2003/3/12.(MfwHdr *)mfwParent(mfwFocus);
    T_MFW_WIN *mnu_data=(MfwWin *)(mnu_win->data);
    ListWinInfo        * dataInfo = (ListWinInfo *)mnu_data->user;
    TRACE_EVENT("edttimer_cb");
    timStop(edttimer);
    key_before=0xff;
    cursor_correct=1;
    key_index=0;
    if( winIsFocussed(mnu_win) )
    {
        ShortCutLocation(dataInfo,(char *)data->edtBuf,Phbk->BufferTable,&(Phbk->BufferIndex),100);
        edtChar(data->edt,ecRight);
    }
    return 0;
}

static void book_callphb_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
{


    TRACE_FUNCTION ("book_callphb_cb()");
    switch( reason )
    {
    case INFO_TIMEOUT:
    case INFO_KCD_RIGHT:
    case INFO_KCD_HUP:
    case INFO_KCD_LEFT:   
        {
            bookCallPhbDestroy( win );
        }      
        break;                                                   
    default: break;
    }
}

static void bookCallPhbDialog( T_MFW_HND win, USHORT event, SHORT value, void *parameter )
{
    T_MFW_WIN     *win_data   = ((T_MFW_HDR *) win)->data;
    tBookStandard *data    = (tBookStandard *) win_data->user;
    T_phbk *Phbk=data->phbk;
    char * titleStr;
    int i;
    /*2004/04/07,talcon delete
    char temp[100];*/
    TRACE_EVENT("bookCallPhbDialog");
    switch( event )
    {
    case CALLPHB_INIT:
        TRACE_EVENT("callphbdialog Init");
        if( PHBKTotal )
        {
            TRACE_EVENT("has phb");
            if( PHBKTotal<=PHONEBOOK_RECORD_PERPAGE )
            {
                for( i=0;i<PHBKTotal;i++ )
                {
		    /* 2004/06 sunsj modify for picture manage */
                    memcpy(Dynamic_menu[i].name,l_phb_index[l_phb_sort_index[i].index].name,PHB_name_len);        
                    if( l_phb_index[l_phb_sort_index[i].index].phonebook==NVM_BOOK_SEL )
                        Dynamic_menu[i].bookicon = *GET_ICONATTR(ICON_NVMBOOK, 0);//nvmbookicon;
                    else if( l_phb_index[l_phb_sort_index[i].index].phonebook==SIM_BOOK_SEL )
                        Dynamic_menu[i].bookicon = *GET_ICONATTR(ICON_SIMBOOK, 0);//simbookicon;
                }    
            }
            else
            {
                for( i=0;i<PHONEBOOK_RECORD_PERPAGE;i++ )
                {
		    /* 2004/06 sunsj modify for picture manage */
                    memcpy(Dynamic_menu[i].name,l_phb_index[l_phb_sort_index[i].index].name,PHB_name_len);                                     
                    if( l_phb_index[l_phb_sort_index[i].index].phonebook==NVM_BOOK_SEL )
                        Dynamic_menu[i].bookicon = *GET_ICONATTR(ICON_NVMBOOK, 0);//nvmbookicon;
                    else if( l_phb_index[l_phb_sort_index[i].index].phonebook==SIM_BOOK_SEL )
                        Dynamic_menu[i].bookicon = *GET_ICONATTR(ICON_SIMBOOK, 0);//simbookicon;
                }   
            }
            Phbk->BufferIndex=0;
            search_total=SearchTotal;
            SearchTotal=PHBKTotal;
            Phbk->BufferTable=GlobalTable;
            TRACE_EVENT("all the first memort");
            data->menu_list_data = (ListMenuData *)ALLOC_MEMORY(sizeof(ListMenuData));

            if( !data->menu_list_data )
            {
                TRACE_EVENT("no memoryin");
                //destroy the dialog     
                bookCallPhbDestroy(win);
            }
            else//alloc memory ok!
            {
                TRACE_EVENT("all the second memort");
                data->menu_list_data->List = (T_MFW_MNU_ITEM *)ALLOC_MEMORY( GetFree(SearchTotal) *sizeof(T_MFW_MNU_ITEM) );
                if( data->menu_list_data->List!=0 )//alloc_memory ok
                {
                    TRACE_EVENT("all memory alloc ok!");
                    for( i = 0; i < GetFree(SearchTotal); i++ )
                    {
                        data->menu_list_data->List[i].icon =&Dynamic_menu[i].bookicon;                
                        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 *)Dynamic_menu[i].name;                                                                                                
                        data->menu_list_data->List[i].flagFunc=item_flag_none;
                    }

                    data->menu_list_data->ListLength     = GetFree(SearchTotal);
                    data->menu_list_data->SnapshotSize  = GetFree(SearchTotal);
                    data->menu_list_data->Font          = 0;

                    if( data->phbk->EntryType==PhbkFromCall )
                        data->menu_list_data->LeftSoftKey    = TxtSoftCall;
                    else if( data->phbk->EntryType==PhbkFromSms )
                        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           = &readName_menuAttrib;  
                    data->menu_list_data->Attr           = & readName_fromcall_menuAttrib; /*2003/12/16, wangyan modify call phonebook area*/
                    data->menu_list_data->autoDestroy    = FALSE;
                    data->menu_list_data->ListMenuFlag    =1; 
                    /* glowing: modify TxtSearchName to TxtPhoneSearch */
                    //titleStr=MmiRsrcGetText(TxtSearchName);
                    titleStr=MmiRsrcGetText(TxtPhoneSearch);
                    data->menu_list_data->ListMenuHeadStr=titleStr;
                    data->menu_list_data->ListPosition    = 1;               
                    data->menu_list_data->CursorPosition = 1;
                    TRACE_EVENT("now we display the menu");
                    /* 2004/05/26 sunsj modify */
                    edtShow(data->edt);
                    edtChar(data->edt,ecBottom);

                    listDisplayListMenu(win, data->menu_list_data, (ListCbFunc)bookCallPhb_cb,0);
                    show_index=l_phb_sort_index[Phbk->BufferIndex].index;
                    refresh_flag=1;
                    
                    /* 2004/06 sunsj modify for icon manage */
#if(MAIN_LCD_SIZE==4)
					dspl_Clear(0,108,SCREEN_SIZE_X,126);
		            DRAW_ICON_LOCATION(ICON_TEXTINPUT_abc, 0, 110);
#elif(MAIN_LCD_SIZE==3)//Knuth
					dspl_Clear(0,72,128,110);
					DRAW_ICON_LOCATION(ICON_TEXTINPUT_abc, 0, 72);
#endif
					ShowPhoneBookNumber(show_index,NONE);
                    //edtShow(data->edt);
                    //edtChar(data->edt,ecBottom);
                }
                else
                {
                    TRACE_EVENT("second no memory");
                    FREE_MEMORY((void *)data->menu_list_data,sizeof(ListMenuData));
                    //destroy the dialog
                    bookCallPhbDestroy(win);
                }  
            }
        }
        else
        {
            TRACE_EVENT("no phb");
            bookShowInformation(win, TxtEmptyList, NULL, (T_VOID_FUNC)book_callphb_cb);
        }
        break;
    }
}

static T_MFW_HND bookCallPhbCreate( MfwHnd parent )
{
    T_MFW_WIN      *win_data;
    tBookStandard  *data;
    T_MFW_WIN      *parent_win_data = ( (T_MFW_HDR *) parent )->data;
    T_phbk         *Phbk = (T_phbk *)parent_win_data->user;
    TRACE_FUNCTION ("bookCallPhbCreate()");

    // allocate memory for our control block	
    if( ( data = (tBookStandard *) ALLOC_MEMORY( sizeof( tBookStandard ) ) ) == NULL )
        return NULL;

    // Create the window if we can	
    if( ( data->win = win_create( parent, 0, E_WIN_VISIBLE, NULL) ) == NULL )
    {
        FREE_MEMORY( (void *) data, sizeof( tBookStandard ) );
        return NULL;
    }

    // Okay, we have created the control block and the window, so
    //   we now need to configure the dialog and data pointers	
    data->mmi_control.dialog  = (T_DIALOG_FUNC) bookCallPhbDialog;
    data->mmi_control.data    = data;
    win_data               = ((T_MFW_HDR *)data->win)->data;
    win_data->user          = (void *) data;
    data->parent_win        = parent;
    data->phbk=Phbk;
#if(MAIN_LCD_SIZE==3)
	bookSetEditAttributes(20,85,32,30,0, 0, edtCurBar1, 0,(char *)data->edtBuf,5,&data->attr);
#elif (MAIN_LCD_SIZE==4)
    bookSetEditAttributes(20, 108, 32, 16, 0, 0, edtCurBar1, 0,(char *)data->edtBuf,5,&data->attr);
#endif
    data->edt=edtCreate(data->win,&data->attr,0,0);
    if( !showtimer )
    {
        TRACE_EVENT("need create showtimer");
#ifndef FOR_FTA_CTA
        showtimer=timCreate(data->win,300,(MfwCb)showtimer_cb);
#endif
    }
    if( !edttimer )
    {
        TRACE_EVENT("need create showtimer");
#ifndef FOR_FTA_CTA
        edttimer=timCreate(data->win,500,(MfwCb)edttimer_cb);
#endif
    }
    return data->win;
} 

T_MFW_HND bookCallPhbStart( MfwHnd parent)
{
    T_MFW_HND win;
    TRACE_EVENT("bookCallPhbStart");
    if( ( win = bookCallPhbCreate( parent ) ) != NULL )
    {
        SetCallWindowsHandle(win);
        SEND_EVENT( win, CALLPHB_INIT, 0, 0 );
    }
    return win;
}

//end yq added
void Create_SORT_Table(T_MFW_PHB_INDEX l_phb_index[],int RecordLen)
{
    int i,j;  
    //char temp[100];/*2004/04/07,talcon delete*/
    TRACE_EVENT("create_sort_table");
    if( PHBKTotal!=0 )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -