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

📄 mmieditor.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
             */
            editDeactivate();

            ec_editDeactivate();  //zgz, 2002.7.5 Mobile Innovation

            /* 2003/10/13 sunsj mark for remove mmihz.c & mmihzapi.c */
            /*zhangxp 2003-04-01 del all these little win*/
            //if (data->hz_input!=NULL)
            //    hz_destroy(data->hz_input);

            if( data->symbol_input!=NULL )
                keystar_destroy(data->symbol_input);
            /*end of zhangxp win*/
            win_delete (data->edt_win);
            /*
             * Free Memory
             */
            FREE_MEMORY ((void *)data, sizeof (T_EDITOR_INFO));
        }
        else
        {
            TRACE_EVENT("not a editor");
            return;
        }
    }
    else
    {
        TRACE_EVENT ("editor_destroy() called twice");
        return ;
    }
}

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

 $Function:     editor_exec_cb

 $Description:  Dialog function for editor.

 $Returns:    None.

 $Arguments:  None.

*******************************************************************************/
static void editor_exec_cb (T_MFW_HND win, USHORT event, SHORT value, T_EDITOR_DATA * editor_data)
{
    T_MFW_WIN      * win_data  = ((T_MFW_HDR *)win)->data;
    T_EDITOR_INFO  * data      = (T_EDITOR_INFO *)win_data->user;

    T_MFW_HND       parent_win = data->parent;
    USHORT          Identifier = data->editor_data.Identifier;
    T_EDIT_CB       Callback   = data->editor_data.Callback;
    UINT32           oldFontColor;
    //char EventSymbolChar = (char)value;

    TRACE_EVENT ("editor_exec_cb()");

    switch( event )
    {
    case E_EDITOR_INIT: 
        /*
         * Store data
         */

        data->editor_data = *editor_data;

        if( data->editor_data.TextString NEQ NULL )
        {
            memcpy (data->LabelText, data->editor_data.TextString, sizeof(data->LabelText));
        }
        /* Note that we do not copy the edited buffer here */
        //zgz,2002.0628 commend out it
        //data->editor_data.editor_attr.predText[0] = '\0';
        /*
         * Create the handler
         */
        data->edt_kbd      = kbd_create (data->edt_win, KEY_ALL,         (T_MFW_CB)editor_kbd_cb);
        data->edt_kbd_long = kbd_create (data->edt_win, KEY_ALL|KEY_LONG,(T_MFW_CB)editor_kbd_cb);
        data->edt_edt      = edtCreate  (data->edt_win, &data->editor_data.editor_attr,MfwEdtVisible,0);
        /* 2003/11/1 sunsj modify */
        data->edit_input     = NULL;//zhangxp2003-04-01 
        data->symbol_input = NULL;//zhangxp2003-04-01

        /*
         * Set the mode for the editor
         */
        data->destroyEditor = editor_data->destroyEditor;

        // c015 rsa
        /* create the timer handler */
        if( data->editor_data.timeout && (data->editor_data.timeout NEQ FOREVER) )
        {
            data->edt_tim      = tim_create (data->edt_win, data->editor_data.timeout, (T_MFW_CB)editor_tim_cb);
            tim_start (data->edt_tim);
        }
        else
        {
            data->edt_tim      = NULL;
        }
        // end c015 rsa

        /*************************************************
        
            zgz,2002.7.4 Add Mobile Innovation edit mode
            
        ***************************************************/
        switch( data->editor_data.mode )
        {
        /* 2003/12/04 sunsj remove */
        //case PARADISE_MODE:
        //case UPPERCASE_MODE:
        //case LOWERCASE_MODE:
        case SHUZI_MODE:
        case PHONENUMONLY_MODE:
#if 0
            if( ((data->editor_data.editor_attr.text[0]==0x80)&&(wstrlen(data->editor_data.editor_attr.text)>(data->editor_data.editor_attr.size-2))
                 ||(data->editor_data.editor_attr.text[0]!=0x80)&&(2*wstrlen(data->editor_data.editor_attr.text)>(data->editor_data.editor_attr.size-3)))
                &&(data->editor_data.mode==PARADISE_MODE) )
                data->editor_data.mode=UPPERCASE_MODE;//for change the mode for smssend	
#endif
            ec_editActivate(data->edt_edt,data->editor_data.mode);
            /* 2003/12/04 sunsj remove */
            /*
            if ( data->editor_data.mode==PARADISE_MODE )
                data->editor_data.hide  = FALSE;
            */
            if( data->editor_data.hide )              /* if hide is set, show '*' instead of numbers.  zhangxp,2003/4/8  */
            {
                editor_hideInit(data);                 /* initialize editor for hide                          */
                ec_editHiddenActivate(data->tmpBuf);   /* initialise multi-tap for hide */
            }
            data->edt_mode          = E_MOBILEINNOVATION_MODE;
            /* 2003/12/01 sunsj win_show have some problem, i think the screen was displaied twice */
            win_show(data->edt_win);

            /* 2003/11/1 sunsj turn on editor display flag */
            if( data->editor_data.edtInPbk == 1 )
            {
                MfwEdt *edt;
                edt = ((MfwHdr *) data->edt_edt)->data;
                edt->flags |= MfwEdtVisible;
            }


            //            			edtSymbol(data->edt_edt,ecBottom);//set the cursor to the last,we need't this
            //we set the cursor use the setcursor	

            return;
        case IPADDRESS_MODE:
            ec_editActivate(data->edt_edt,data->editor_data.mode);
            data->editor_data.hide  = FALSE; 
            data->edt_mode          = E_MOBILEINNOVATION_MODE;
            win_show(data->edt_win);
            edtSymbol(data->edt_edt,ecTop);
            return;
        case ONLYREAD_MODE:
            ec_editActivate(data->edt_edt,data->editor_data.mode);
            data->editor_data.hide  = FALSE;           /* don't allow hide for other modes than DIGITS_MODE.  */
            data->edt_mode          = E_MOBILEINNOVATION_MODE;   /* if editor is not called in T9 mode, set the normal  */
            data->editor_data.editor_attr.mode = 0; // sbh - read only mode has no cursor
            win_show(data->edt_win);

            edtSymbol(data->edt_edt,ecTop);
            return;
        default:
            break;

        }

        /*************************************************
        
            zgz,2002.7.4
            
        ***************************************************/

        set_ecinput_mode(0);  
        editActivate(data->edt_edt,data->editor_data.mode);

        // SH - format mode with *M or *m is just alpha mode with case preference

        if( data->editor_data.mode == FORMAT_MODE )
        {
            if( strcmp(data->editor_data.FormatString, "*M")==0 )
            {
                //data->editor_data.mode = ALPHA_MODE;
                upCase = TRUE;
                UPPER_CASE = FALSE;
            }
            if( strcmp(data->editor_data.FormatString, "*m")==0 )
            {
                //data->editor_data.mode = ALPHA_MODE;
                upCase = FALSE;
                UPPER_CASE = TRUE;
            }
        }

        // SH - end of format mode modification

        //KGT
        switch( data->editor_data.mode )
        {
        case READ_ONLY_MODE:
            data->editor_data.hide  = FALSE;           /* don't allow hide for other modes than DIGITS_MODE.  */
            data->edt_mode          = E_NORMAL_MODE;   /* if editor is not called in T9 mode, set the normal  */
            data->editor_data.editor_attr.mode = 0; // sbh - read only mode has no cursor
            win_show(data->edt_win);
            edtChar(data->edt_edt,ecTop);              /* in read-only mode set cursor to begin               */
            break;                                     /* editor mode                                         */

        case ALPHA_MODE:

#ifdef EASY_TEXT_ENABLED
            FFS_flashData.PredTextAvailable = TRUE;
            Initialize_Dict(/*ENGLISH*/1, 0);
            ResetDictSearch();
#endif
#ifndef EASY_TEXT_ENABLED
            //FFS_flashData.PredTextAvailable = FALSE;
            //FFS_flashData.PredTextSelected = FALSE;
#endif
            if( data->editor_data.hide )              /* if hide is set, show '*' instead of numbers.        */
            {
                editor_hideInit(data);                 /* initialize editor for hide                          */
                editHiddenActivate(data->tmpBuf);   /* initialise multi-tap for hide */
                data->editor_data.editor_attr.mode |= edtModOverWr; // Must be overwrite mode
            }
            data->edt_mode          = E_NORMAL_MODE;   /* if editor is not called in T9 mode, set the normal  */
            win_show(data->edt_win);
            edtChar(data->edt_edt,ecBottom);              /* in read-only mode set cursor to begin               */
            break;                                     /* editor mode                                         */
        case DIGITS_MODE:
            if( data->editor_data.hide )              /* if hide is set, show '*' instead of numbers.        */
                editor_hideInit(data);                 /* initialize editor for hide                          */
            data->edt_mode          = E_NORMAL_MODE;   /* if editor is not called in T9 mode, set the normal  */
            win_show(data->edt_win);
            edtChar(data->edt_edt,ecBottom);              /* in read-only mode set cursor to begin               */
            break;                    /* editor mode                                         */
            //GW Removed T9 reference
        case CALC_MODE:
            data->editor_data.hide  = FALSE;           /* don't allow hide for other modes than DIGITS_MODE.  */
            data->edt_mode          = E_NORMAL_MODE;   /* if editor is not called in T9 mode, set the normal  */
            win_show(data->edt_win);
            edtChar(data->edt_edt,ecBottom);
            break;
        case PIN_SECURITY:
            if( data->editor_data.hide )              /* if hide is set, show '*' instead of numbers.        */
                editor_hideInit(data);                 /* initialize editor for hide                          */
            data->edt_mode          = E_PIN_SECURITY;   /* spec. handling for PIN entering  */
            data->emergency_call = FALSE;
            data->ss_string = FALSE;
            edtChar(data->edt_edt,ecBottom);
            win_show(data->edt_win);
            //12.04 xsf moved it before win_show(data->edt_win); edtChar(data->edt_edt,ecBottom);
            break;
        case FORMAT_MODE:
            if( data->editor_data.hide )              /* if hide is set, show '*' instead of numbers.        */
            {
                editor_hideInit(data);                 /* initialize editor for hide                          */
                editHiddenActivate(data->tmpBuf);   /* initialise multi-tap for hide */
            }
            data->editor_data.editor_attr.mode |= edtModOverWr; // Must be overwrite mode
            data->edt_mode    = E_NORMAL_MODE;
            win_show(data->edt_win);
            edtChar(data->edt_edt,ecTop);         // Cursor is at start of string
            data->editor_data.formatIndex = -1;         // Current format character.  -1; increased to 0 in editCharFindNext below.
            data->editor_data.fieldIndex = 0;

            // Skip over any fixed characters that may be at start
            setFormatPointers (data->editor_data.FormatString, &(data->editor_data.formatIndex), &(data->editor_data.fieldIndex));
            TRACE_EVENT("Starting format mode");
            editCharFindNext(NULL);
            break;
        }
        // end KGT

        /* put the (new) dialog window on top of the window stack */
        break;

    case E_EDITOR_DEINIT:
        /* on DEINIT => selfdestroy; sendevent <value> */
		{
			T_MFW_HND oldparent = NULL;

			oldparent = data->parent;

        if( Callback )
            (Callback) (parent_win, Identifier, value);

        // MZ Destroy the text edit window after creating the number editor.
			if( data->parent == oldparent )
			{
        if( data->editor_data.destroyEditor == TRUE )
				{
            editor_destroy (data->edt_win);
				}
			}
		}
        break;

    case E_EDITOR_UPDATE:
        TRACE_EVENT("in editor update");
        if( value )
        {
            TRACE_EVENT("value is not zero");
            if( data->editor_data.edtInPbk )
            {
                (Callback) (parent_win, 2, INFO_EDT_UPDATE); 
                edtShow(data->edt_edt); 
            }
            //	win_show(data->edt_win);
            else edtShow(data->edt_edt);        
        }
        break;
#ifdef EASY_TEXT_ENABLED

        if( SymbolChar != '\0' )
        {
            //editActivate(data->edt_edt,data->editor_data.mode);
            edtShow(data->edt_edt);
            edtChar(data->edt_edt, SymbolChar);
            if( (SymbolChar == '.') ||(SymbolChar == '!') || (SymbolChar == '?') )
            {
                edtChar(data->edt_edt, ' ');
            }

            win_show(data->edt_win);
        }
        break;
#endif
    default:
        break;
    }
}
/*******************************************************************************

 $Function:     editor_win_cb

 $Description:  Editor window event handler.

 $Returns:    None.

 $Arguments:  None.

⌨️ 快捷键说明

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