📄 mmitextinput.c
字号:
{
sprintf(spareNum, "%3d", 0);
}
/* 2004/04/22 sunsj modify */
displayTitle( 15, data->editor_data.TextString, spareNum, TITLE_WITH_NUMBER, 0, 0);
}
if( data->editor_data.edtInPbk == 1 )
{
//return MFW_EVENT_CONSUMED;
}
OldBackgroundColor = dspl_GetBkgColor();
dspl_SetBkgColor(TEXT_CANDIDATE_BACKGROUND);
OldForegroundColor = dspl_GetFrgColor();
dspl_SetFrgColor(TEXT_CANDIDATE_FOREGROUND);
switch( data->Ime.InputScreenType )
{
case TEXT_DISPLAY_SCREEN:
{
if( data->editor_data.edtInPbk == 1 )
{
dspl_SetBkgColor(OldBackgroundColor);
dspl_SetFrgColor(OldForegroundColor);
}
else
{
dspl_SetFrgColor(OldForegroundColor);
dspl_SetBkgColor(OldBackgroundColor);
}
}
break;
case STROKE_INPUT_SCREEN:
{
if( data->wcCandidates[0] == 0x00 )
{
break;
}
/* 20004/01/04 sunsj modify for different lcd size */
dspl_Clear(0, (USHORT)(ELEMENT_LINE-1), SCREEN_SIZE_X, (USHORT)(CANDIDATES_LINE+fontHeight) );
dspl_TextOut(1, ELEMENT_LINE,DSPL_TXTATTR_UNICODE|DSPL_TXTATTR_TRANSPARENT, (char*)data->DisplayElementBuffer);
dspl_TextOut_Blk(LEFT_INDENTATION, CANDIDATES_LINE, SCREEN_SIZE_X, DSPL_TXTATTR_UNICODE|DSPL_TXTATTR_TRANSPARENT, (char*)data->wcCandidates);
CandidateHighlightDisplayContorl(&data->Ime, data->HighlightedCandidate);
dspl_SetBkgColor(OldBackgroundColor);
dspl_SetFrgColor(OldForegroundColor);
#if (MAIN_LCD_SIZE==3)//jhxu720
DRAW_ICON(ICON_TEXTINPUT_EDITBAR);
#elif ( MAIN_LCD_SIZE==4 )
/* 2004/01/04 sunsj modify for different lcd size */
dspl_DrawRect(0, ELEMENT_LINE-2, SCREEN_SIZE_X-1, CANDIDATES_LINE+fontHeight+2);
dspl_DrawLine(0, ELEMENT_LINE+fontHeight+1 , SCREEN_SIZE_X-1, ELEMENT_LINE+fontHeight+1);
#elif ( MAIN_LCD_SIZE==2 )
//dspl_DrawRect(0, ELEMENT_LINE-1, SCREEN_SIZE_X-1, CANDIDATES_LINE+fontHeight+1);
#endif
}
break;
case PINYIN_INPUT_SCREEN:
{
if( data->wcCandidates[0] == 0x00 )
{
break;
}
/* 2004/01/04 sunsj modify for different lcd size */
dspl_Clear(0, (USHORT)(ELEMENT_LINE-1), SCREEN_SIZE_X, (USHORT)(CANDIDATES_LINE+fontHeight) );
#if (MAIN_LCD_SIZE==3)//jhxu720
DRAW_ICON(ICON_TEXTINPUT_EDITBAR);
#endif
DisplayPinyinElement(&data->Ime);
dspl_TextOut_Blk(LEFT_INDENTATION, CANDIDATES_LINE, SCREEN_SIZE_X, DSPL_TXTATTR_UNICODE|DSPL_TXTATTR_TRANSPARENT, (char*)data->wcCandidates);
CandidateHighlightDisplayContorl(&data->Ime, data->HighlightedCandidate);
dspl_SetBkgColor(OldBackgroundColor);
dspl_SetFrgColor(OldForegroundColor);
/* 2004/01/04 sunsj modify for 102x80 screen type */
#if ( MAIN_LCD_SIZE==4 )
/* 2004/01/04 sunsj modify for different lcd size */
dspl_DrawRect(0, ELEMENT_LINE-2, SCREEN_SIZE_X-1, CANDIDATES_LINE+fontHeight+2);
dspl_DrawLine(0, ELEMENT_LINE+fontHeight+1 , SCREEN_SIZE_X-1, ELEMENT_LINE+fontHeight+1);
#endif
#if ( MAIN_LCD_SIZE==2)
//dspl_DrawRect(0, ELEMENT_LINE-1, SCREEN_SIZE_X-1, CANDIDATES_LINE+fontHeight+1);
#endif
}
break;
case WORD_ASSOCIATION_SCREEN:
{
if( data->wcCandidates[0] == 0x00 )
{
break;
}
/* 20004/01/04 sunsj modify for different lcd size */
dspl_Clear(0, (USHORT)(ELEMENT_LINE-1), SCREEN_SIZE_X, (USHORT)(CANDIDATES_LINE+fontHeight) );
#if (MAIN_LCD_SIZE==3)//jhxu720
DRAW_ICON(ICON_TEXTINPUT_EDITBAR);
#elif ( MAIN_LCD_SIZE==2 )
dspl_BitBlt(0, 39, 102, 26, 0, (void *) Edit_bar_bmp, 0);
#endif
/* 2003/12/29 sunsj modify buffer size */
memset(DisplayCandidateBufLine1, 0x00, (CANDIDATES_PER_GROUP*2+3));
memset(DisplayCandidateBufLine2, 0x00, (CANDIDATES_PER_GROUP*2+3));
if( (data->Ime.EditorMode == PINYIN_INPUT_MODE) || (data->Ime.EditorMode == STROKE_INPUT_MODE) )
{
if( data->wcCandidates[0] != 0x00 )
{
DisplayCandidateBufLine1[0] = 0x80;
memcpy(&DisplayCandidateBufLine1[1], (char *)data->wcCandidates, CANDIDATES_PER_GROUP*2 );
}
if( data->wcCandidates[7] != 0x00 )
{
DisplayCandidateBufLine2[0] = 0x80;
memcpy(&DisplayCandidateBufLine2[1], (char *)data->wcCandidates+CANDIDATES_PER_GROUP*2, CANDIDATES_PER_GROUP*2 );
}
}
/* 2003/12/15 sunsj modify coordinate */
dspl_TextOut_NoNewline(LEFT_INDENTATION, ELEMENT_LINE, DSPL_TXTATTR_TRANSPARENT, DisplayCandidateBufLine1);
dspl_TextOut_NoNewline(LEFT_INDENTATION, CANDIDATES_LINE, DSPL_TXTATTR_TRANSPARENT, DisplayCandidateBufLine2);
CandidateHighlightDisplayContorl(&data->Ime, data->HighlightedCandidate);
dspl_SetBkgColor(OldBackgroundColor);
dspl_SetFrgColor(OldForegroundColor);
#if ( MAIN_LCD_SIZE==4 )
/* 20004/01/04 sunsj modify for different lcd size */
dspl_DrawRect(0, ELEMENT_LINE-2, SCREEN_SIZE_X-1, CANDIDATES_LINE+fontHeight+2);
dspl_DrawLine(0, ELEMENT_LINE+fontHeight+1 , SCREEN_SIZE_X-1, ELEMENT_LINE+fontHeight+1);
#endif
#if ( MAIN_LCD_SIZE==2)
//dspl_DrawRect(0, ELEMENT_LINE-1, SCREEN_SIZE_X-1, CANDIDATES_LINE+fontHeight+1);
#endif
}
break;
default:
break;
}
/* Draw the other area */
DisplayOtherArea( data );
}
}
break;
default:
return MFW_EVENT_PASSED;
}
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: text_input_kbd_cb
$Description: Keyboard event handler
$Returns: status int
$Arguments: window handle event, keyboard control block
$History:
*******************************************************************************/
static int text_input_kbd_cb (T_MFW_EVENT event, T_MFW_KBD *keyboard)
{
T_MFW_HND win = mfw_parent (mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_TEXT_INPUT * data = (T_TEXT_INPUT *)win_data->user;
T_MFW_HND parent_win = data->parent_win;
USHORT Identifier = data->Identifier;
int temp = 0;
PZI8WCHAR temp_ZiKeyMap;
int asciiTextSize = data->editor_data.editor_attr.e_size?data->editor_data.editor_attr.e_size:data->editor_data.editor_attr.size;
T_TEXT_INPUT * testptr;
MMI_TRACE_EVENT(("sunsj-----------text_input_kbd_cb()"));
/* 2003/12/15 sunsj start input time if the editor has time limit */
if( data->editor_data.timeout && (data->editor_data.timeout NEQ FOREVER) )
tim_start (data->input_tim);
/* 2004/05/08 sunsj modify */
if( (data->editor_data.editor_attr.text[0]=='\0' )&&(data->editor_data.Identifier == SMSSEND_ID_TEXTEDIT) )
{
if( data->Ime.EditorMode == PINYIN_INPUT_MODE || data->Ime.EditorMode == STROKE_INPUT_MODE )
{
/* 2004/06/30 sunsj modify for m288b */
#ifdef _M188_
data->editor_data.editor_attr.e_size = 73;
#endif
#if(MAIN_LCD_SIZE==4)
data->editor_data.editor_attr.e_size = 503;
#elif(MAIN_LCD_SIZE==3)
data->editor_data.editor_attr.e_size = 73;
#endif
}
else
{
/* 2004/06/30 sunsj modify for m288b */
#ifdef _M188_
data->editor_data.editor_attr.e_size = 163;
#endif
#if(MAIN_LCD_SIZE==4)
data->editor_data.editor_attr.e_size = 573;
#elif(MAIN_LCD_SIZE==3)
data->editor_data.editor_attr.e_size = 163;
#endif
}
}
else
{
if( data->Ime.EditorMode == PINYIN_INPUT_MODE || data->Ime.EditorMode == STROKE_INPUT_MODE )
{
if( (((data->editor_data.editor_attr.size - 3)/2)+3) >= 0 )
{
data->editor_data.editor_attr.e_size = (((data->editor_data.editor_attr.size - 3)/2)+3);
}
else
{
data->editor_data.editor_attr.e_size = 0;
}
}
else
{
data->editor_data.editor_attr.e_size = data->editor_data.editor_attr.size;
}
}
/*2003/12/24, wangyan modify*/
if( event & KEY_LONG )
{
switch( keyboard->code )
{
case KCD_LEFT:
break;
case KCD_RIGHT:
/* 2004/05/08 sunsj remove because of the key press problem maybe empty the text buffer */
/*
if( data->editor_data.editor_attr.text[0] NEQ '\0' )
{
/* clear the whole buffer
memset(data->editor_data.editor_attr.text, 0, sizeof(data->editor_data.editor_attr.text));
win_show(data->input_win);
}
*/
/* 2004/04/02 sunsj modify */
//else
//{
// SEND_EVENT (win, TEXT_INPUT_DESTROY, INFO_KCD_RIGHT, NULL);
//}
break;
case KCD_HUP:
break;
case KCD_MNUUP:
break;
case KCD_MNUDOWN:
break;
case KCD_MNULEFT:
break;
case KCD_MNURIGHT:
break;
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:
break;
case KCD_CALL:
break;
case KCD_STAR:
break;
case KCD_HASH:
break;
default:
break;
}
}
else
{
switch( keyboard->code )
{
case KCD_LEFT:
{
ZI8WCHAR HighByte;
ZI8WCHAR Temp;
ZI8WCHAR LowByte;
/* convert current candidate which is selected by user to insert to text buffer */
if( (data->Ime.EditorMode == PINYIN_INPUT_MODE) || (data->Ime.EditorMode == STROKE_INPUT_MODE) )
{
Temp = data->wcCandidates[data->Ime.CandidateCursor];
LowByte = data->wcCandidates[data->Ime.CandidateCursor] & 0x00FF;
HighByte = data->wcCandidates[data->Ime.CandidateCursor] & 0xFF00;
Temp = (LowByte << 8) & 0xFF00;
HighByte = (HighByte >> 8) & 0x00FF;
Temp = Temp | HighByte;
}
switch( data->Ime.EditorMode )
{
case PINYIN_INPUT_MODE:
{
switch( data->Ime.InputScreenType )
{
case TEXT_DISPLAY_SCREEN:
{
if( strlen(data->editor_data.editor_attr.text) >= data->editor_data.min_enter )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -