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

📄 mmihost.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
     */
    //xsf removed this code to set_hostkey_editor() 2002.09.12
    //hostkey_edit_windows        = data->hostkey_edt_win;
    data->mmi_control.dialog    = (T_DIALOG_FUNC)set_hostkey_editor;
    data->mmi_control.data      = data;
    data->parent_win = parent_window;
    win                         = ((T_MFW_HDR *)data->hostkey_edt_win)->data;
    win->user                   = (void *) data;

    /*
     * Create any other handler
     */

    data->editor_handle = edt_create(data->hostkey_edt_win,&data->edithostkeyAttr,0,0);
    data->kbd_handle = kbd_create(data->hostkey_edt_win,KEY_ALL,(T_MFW_CB)set_hostkey_kbd_cb);
    data->kbd_long_handle = kbd_create(data->hostkey_edt_win,KEY_ALL | KEY_LONG,(T_MFW_CB)set_hostkey_edt_kbd_long_cb);
    /*
     * return window handle
     */
    return data->hostkey_edt_win;
}


/*******************************************************************************

 $Function:    	set_hostkey_edt_destroy
 $Description:	Destroy the hostkey editor dialog
 $Returns:		none
 $Arguments:	window
*******************************************************************************/
void set_hostkey_edt_destroy  (T_MFW_HND own_window)
{
    T_hostkey_edt * data ;
    T_MFW_WIN * win;

    if( own_window )
    {
        TRACE_EVENT("MmiPins:set_hostkey_edt_destroy");

        win = ((T_MFW_HDR *)own_window)->data;
        data = (T_hostkey_edt *)win->user;

        if( data )
        {
            /*
             * Delete WIN Handler
             */
            hostkey_edit_windows = 0;
            win_delete (data->hostkey_edt_win);

            FREE_MEMORY((void *)data,(sizeof(T_hostkey_edt)));
        }
    }
}


/*******************************************************************************

 $Function:    	set_hostkey_edt_win_cb
 $Description:	Callback function for editor windows
 $Returns:		status int
 $Arguments:	event, window
*******************************************************************************/
static int set_hostkey_edt_win_cb (T_MFW_EVENT event,T_MFW_WIN * win)
{
    T_hostkey_edt * edt_data = (T_hostkey_edt *)win->user;//hostkey edt data
    T_MFW_WIN * win_hostkey =((T_MFW_HDR *)edt_data->parent_win)->data;
    T_hostkey     * hostkey_data = (T_hostkey *)win_hostkey->user; // hostkey main data
    game_Line line;
    TRACE_EVENT("set_hostkey_edt_win_cb");

    if( event EQ MfwWinVisible )
    {

        //pin_icons();
        //dspl_Clear(6,30,120,120);  //xsf changed 2003.01.13
        dspl_ClearAll();

        /* 2004/05/21 sunsj modify */
        drawSolidRectangle(10,36,118,DIALOG_THIRD_LINE, 1,0x5ac7ff,0x4E9C87);//请输机主密码巨星框
        //PROMPT(INFO_TEXT_X,INFO_TEXT_Y,0,hostkey_data->display_id1);
        /* 2004/03/25 sunsj modify */
        if( (hostkey_data->protect_opt == PRO_SIMLOCK) && (hostkey_data->display_id2 NEQ NULL) ) //xsf add 2003.04.10
        {
            ALIGNED_PROMPT(CENTER,0, DSPL_TXTATTR_TRANSPARENT, hostkey_data->display_id2);//jhxu720
            ALIGNED_PROMPT(CENTER,INFO_TEXT_Y, DSPL_TXTATTR_TRANSPARENT, hostkey_data->display_id1);//jhxu720
        }
        else
            ALIGNED_PROMPT(CENTER,INFO_TEXT_Y, DSPL_TXTATTR_TRANSPARENT, hostkey_data->display_id1);//jhxu720


        if( edt_data->editor_index NEQ 0 )
        {
            memset(edt_data->hostkey_dspl, '\0', MAX_PIN+1);
            memset(edt_data->hostkey_dspl, '*', edt_data->editor_index);
            /* 2004/03/25 sunsj modify */
#if(MAIN_LCD_SIZE==4)
            dspl_colorTextOut(16, SECOND_LINE, DSPL_TXTATTR_TRANSPARENT, edt_data->hostkey_dspl,0); //16, 54
#elif(MAIN_LCD_SIZE==3)
			dspl_colorTextOut(16, 40, DSPL_TXTATTR_TRANSPARENT, edt_data->hostkey_dspl,0); //16, 54
#endif
            check_set_hostkey(win,edt_data);
        }
        else
            displaySoftKeys('\0',TxtSoftBack);    /* Delete/Back button in menu       */
        //dspl_Clear(16,75,85,87);
        /*
        line.x1=14;
        line.y1=50;
        line.x2=14;
        line.y2=64;
        line.color=0x5ac7ff;
        DrawLine(line);
        */
        /* 2004/05/21 sunsj modify */
        
#if(MAIN_LCD_SIZE==4)//请输入机主密码
        line.x1=16+8*edt_data->editor_index;
        line.y1=50;
        line.x2=24+8*edt_data->editor_index;
        line.y2=50;
        line.color=0x00008b ;  //  深蓝色 darkblue 00008b 
#elif(MAIN_LCD_SIZE==3)
        line.x1=16+8*edt_data->editor_index;
        line.y1=50;
        line.x2=24+8*edt_data->editor_index;
        line.y2=50;
        line.color=0x00008b ;  //  深蓝色 darkblue 00008b 
#endif
        DrawLine(line);  //draw cursor line
		return 1;
    }
    return 0;
}



/*******************************************************************************

 $Function:    	set_hostkey_editor
 $Description:	Hostkey editor Dialog Signal Handling function
 $Returns:		void
 $Arguments:	window, event, value, parameters
*******************************************************************************/
static void set_hostkey_editor(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
    T_hostkey_edt * edt_data = (T_hostkey_edt *)win_data->user;
    T_hostkey * hostkey_data = (T_hostkey *)parameter;//hostkey main data

    edt_data->hostkey_case_edit = hostkey_data->hostkey_case;

    if( (hostkey_data->hostkey_case == HOSTKEY_ASK) &&               
        (hostkey_data->protect_opt != PRO_DELALLPHB) && 
        (hostkey_data->protect_opt != PRO_RESETALL) && 
        (hostkey_data->protect_opt != PRO_MSGBOX) )
    {
        TRACE_EVENT("Mmihost.c:set_hostkey_editor():HUPKeyOrigin = 1");
        //HUPKeyOrigin = 1; 
        animation_complete=1;
        hostkey_edit_windows        = edt_data->hostkey_edt_win;
    }
    //end of xsf add 2002.09.12

    TRACE_EVENT("Mmihost.c:set_hostkey_editor");

    /*
     * depending on event
     */
    switch( event )
    {
    case HOSTKEY_ASK:
    case HOSTKEY_ASK_MENU:      
    case HOSTKEY_ASK_ONOFF:  //XSF ADD FOR ON/OFF HOSTKEY 2002.08.22 
    case INPUT_OLD_HOSTKEY:
    case INPUT_NEW_HOSTKEY:
    case INPUT_NEW_HOSTKEY_AGAIN:       
    case HOSTKEY_SWITCHON:      //xsf add 2002.08.29
        memset(edt_data->hostkey, '\0', sizeof(edt_data->hostkey));/* initial string  */
        memset(edt_data->new_hostkey, '\0', sizeof(edt_data->new_hostkey));
        memset(edt_data->old_hostkey, '\0', sizeof(edt_data->old_hostkey));
        memset(edt_data->edtbuf, '\0', sizeof(edt_data->edtbuf));

        // the coordinate of the editor (to enter the hostkey)
        clear_edit_array(edt_data);          /*    clear editor buffer      */
        edt_data->editor_index = 0;
        //reset_edt_attr(16,71,72,16,0,0,edtCurBar1,0,(char*)edt_data->edtbuf,MAX_DIG,&edt_data->edithostkeyAttr);
        winShow(edt_data->hostkey_edt_win);

        break;
    default:
        break;
    }
}



/*******************************************************************************

 $Function:    	set_hostkey_kbd_cb
 $Description:	Callback function for keyboard settings hostkey
 $Returns:		status int
 $Arguments:	event, keyboard control block
*******************************************************************************/
static int set_hostkey_kbd_cb (T_MFW_EVENT event,T_MFW_KBD *  kc)
{

    T_MFW_HND win = mfw_parent(mfw_header());
    T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;

    T_hostkey_edt * edt_data = (T_hostkey_edt *)win_data->user;//hostkey edt data

    T_MFW_WIN * win_hostkey =((T_MFW_HDR *)edt_data->parent_win)->data;
    T_hostkey * hostkey_data = (T_hostkey *)win_hostkey->user; // hostkey main data

    char timer = TRUE;
    char * softhostkey="0000";

    TRACE_EVENT("Mmihost.c:set_hostkey_kbd_cb");
    //timStop(edt_data->tim_out_handle);/* stop entering timer      */

    switch( kc->code )
    {
    case KCD_0:
    case KCD_1:
    case KCD_2:
    case KCD_3:
    case KCD_4:
    case KCD_5:
    case KCD_6:
    case KCD_7:
    case KCD_8:
    case KCD_9:
    case KCD_STAR:
    case KCD_HASH:
        if( edt_data->editor_index < MAX_DIG )
        {
            if( kc->code EQ KCD_STAR )
                edt_data->hostkey[edt_data->editor_index] = STAR;
            else
                if( kc->code EQ KCD_HASH )
                edt_data->hostkey[edt_data->editor_index] = HASH;
            else
                edt_data->hostkey[edt_data->editor_index] = '0' + kc->code;

            //xsf 2003.02.20 edtChar(edt_data->editor_handle,'*');/* hide security code */
            edt_data->editor_index++;
            check_set_hostkey(win,edt_data); /* digits check depends on status hostkey_case */

        }
        winShow(edt_data->hostkey_edt_win);
        break;

    case KCD_LEFT:
    case KCD_OK:  //xsf add KCD_OK=KCD_LEFT 2003.02.19
        switch( edt_data->hostkey_case_edit )
        {
        case HOSTKEY_ASK:
            //case INPUT_NEW_HOSTKEY:/* finish of HOSTKEY entering */
            //case INPUT_NEW_HOSTKEY_AGAIN:
            if( strlen((char*)edt_data->hostkey) >= MIN_PIN )
            {
                clear_edit_array(edt_data);         /*     clear editor array */
                //timer = FALSE;
                if( JudgeHostKey((char*)edt_data->hostkey) )
                //|| (strncmp((char*)edt_data->hostkey, (char*)FlashHostkeyData.HostLock_Key, 8) EQ 0)) /* compare HOSTKEY successfull*/
                {
                    set_hostkey_edt_destroy(edt_data->hostkey_edt_win);
                    SEND_EVENT(hostkey_data->hostkey_win,HOSTKEY_ASK_OK,0,hostkey_data);

                }
                else
                {
                    set_hostkey_edt_destroy(edt_data->hostkey_edt_win);
                    SEND_EVENT(hostkey_data->hostkey_win,HOSTKEY_ASK_FAIL,0,hostkey_data);
                }   
            }

            break;

        case HOSTKEY_ASK_ONOFF:   //XSF ADD FOR ON/OFF HOSTKEY 2002.08.22 
        case HOSTKEY_ASK_MENU:

            if( strlen((char*)edt_data->hostkey) >= MIN_PIN )
            {
                clear_edit_array(edt_data);         /*     clear editor array */
                //timer = FALSE;
                if( JudgeHostKey((char*)edt_data->hostkey) )
                //if((strcmp((char*)edt_data->hostkey, softhostkey) EQ 0)||(JudgeHostKey((char*)edt_data->hostkey))) /* compare HOSTKEY successfull*/
                {
                    if( edt_data->hostkey_case_edit EQ HOSTKEY_ASK_MENU )
                    {
                        set_hostkey_edt_destroy(edt_data->hostkey_edt_win);
                        SEND_EVENT(hostkey_data->hostkey_win,HOSTKEY_MENU_OK,0,hostkey_data);
                    }
                    else
                    {
                        set_hostkey_edt_destroy(edt_data->hostkey_edt_win);
                        SEND_EVENT(hostkey_data->hostkey_win,HOSTKEY_ONOFF_OK,0,hostkey_data);
                    }
                }
                else
                {
                    if( edt_data->hostkey_case_edit EQ HOSTKEY_ASK_MENU )
                    {
                        set_hostkey_edt_destroy(edt_data->hostkey_edt_win);
                        SEND_EVENT(hostkey_data->hostkey_win,HOSTKEY_MENU_FAIL,0,hostkey_data);
                    }
                    else
                    {
                        set_hostkey_edt_destroy(edt_data->hostkey_edt_win);
                        SEND_EVENT(hostkey_data->hostkey_win,HOSTKEY_ONOFF_FAIL,0,hostkey_data);
                    }
                }   
            }

            break;
        case INPUT_OLD_HOSTKEY:
            /* finish of old HOSTKEY entering */
            //								if (((strlen((char*)edt_data->pin) >= MIN_PIN) && (strlen((char*)edt_data->pin) < (MAX_PIN + 1))) && !(edt_data->gsm_state))
            if( strlen((char*)edt_data->hostkey) >= MIN_PIN )
            {
                clear_edit_array (edt_data);                      /* clear editor array */
                //timer = FALSE;
                if( JudgeHostKey((char*)edt_data->hostkey) ) /* compare HOSTKEY successfull*/
                {
                    strncpy((char*)edt_data->old_hostkey, (char*)edt_data->hostkey,MAX_PIN);          /*  store new hostkey       */
                    strncpy((char*)hostkey_data->old_hostkey, (char*)edt_data->old_hostkey,MAX_PIN);

                    set_hostkey_edt_destroy(edt_data->hostkey_edt_win);       /* entering new hostkey again*/
                    SEND_EVENT(hostkey_data->hostkey_win,HOSTKEY_OK,0,hostkey_data);
                }
                else
                {
                    set_hostkey_edt_destroy(edt_data->hostkey_edt_win);       /* entering new hostkey again*/
                    SEND_EVENT(hostkey_data->hostkey_win,HOSTKEY_FAIL,0,hostkey_data);
                }
            }

            break;
        case HOSTKEY_SWITCHON: //xsf add 2002.08.29
        case INPUT_NEW_HOSTKEY:
            /* finish of new HOSTKEY entering */
            //								if (((strlen((char*)edt_data->pin) >= MIN_PIN) && (strlen((char*)edt_data->pin) < (MAX_PIN + 1))) && !(edt_data->gsm_state))
            if( strlen((char*)edt_data->hostkey) >= MIN_PIN )
            {
                clear_edit_array (edt_data);                      /* clear editor array */
                //timer = FALSE;
                strncpy((char*)edt_data->new_hostkey, (char*)edt_data->hostkey,MAX_PIN);          /*  store new hostkey       */
                strncpy((char*)hostkey_data->new_hostkey, (char*)edt_data->new_hostkey,MAX_PIN);

                set_hostkey_edt_destroy(edt_data->hostkey_edt_win);       /* entering new hostkey again*/
                SEND_EVENT(hostkey_data->hostkey_win,INPUT_NEW_HOSTKEY_AGAIN,0,hostkey_data);
            }

            break;
        case INPUT_NEW_HOSTKEY_AGAIN:
            /* finish of new HOSTKEY confirm */
            //								if (((strlen((char*)edt_data->pin) >= MIN_PIN) && (strlen((char*)edt_data->pin) < (MAX_PIN + 1))) && !(edt_data->gsm_state))
            if( strlen((char*)edt_data->hostkey) >= MIN_PIN )
            {
                clear_edit_array (edt_data);                      /* clear editor array */
                //timer = FALSE;
                if( strcmp((char*)edt_data->hostkey, (char*)hostkey_data->new_hostkey) EQ 0 ) /* compare HOSTKEY successfull*/
                {
                    strncpy((char*)hostkey_data->new_hostkey, (char*)edt_data->hostkey,MAX_PIN);
                    strncpy((char*)FlashHostkeyData.HostLock_Key, (char*)edt_data->hostkey,MAX_PIN);
                    FlashHostkeyData.HostLock_flag = 1;  //xsf add 2002.08.29
                    flash_hostwrite(); 

⌨️ 快捷键说明

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