📄 mmieditor.c
字号:
*/
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 + -