📄 mmihz.c
字号:
/*******************************************************************************
Mobile Innovation (Shanghai)
********************************************************************************
This software product is the property of Mobile Innovation (Shanghai) Ltd and may not be
disclosed to any third party without the express permission of the owner.
********************************************************************************
$Project name: Basic MMI
$Project code:
$Module: MMI
$File: mmihz.c
$Revision: 1.0
$Author: Mobile Innovation (Shanghai)
$Date: 2002/7/15
********************************************************************************
Description:
This file contains the Gloable variables defined by Engineer of Mobile Innovation. These variables are
included in the mmihz.h
********************************************************************************
$History: mmihz.c
Date Modification Author
-------------------------------------------------------------
05/09/2002 1.3 zhangxiuping
01/08/2002 1.2 zhangxiuping
15/07/2002 1.1 zhangxiuping
03/08/2000 1.0 zhaogang
$End
*******************************************************************************/
/*
$Log: mmihz.c,v $
Revision 1.3 2004/07/19 09:16:25 zhenggl
no message
Revision 1.1.1.1 2004/05/10 02:33:58 root
zhq, 2004/05/10, import base on M188A_102X80 project
tag "M188B_128X160_20040509_BASE".
Revision 1.1.1.1 2004/04/19 08:33:13 root
This is the base release version for M188A
Revision 1.1.1.1 2004/01/06 03:15:54 root
this is the baseline for M188_102X80A project
Revision 1.1.1.1 2004/01/03 07:44:30 root
this is the baseline of M188_102X80A project
Revision 1.1.1.1 2003/12/25 11:15:35 root
this is the baseline for m188 project
* Rev 1.3 August 03 2000 14:35:54 ZhaoGang
* Rev 1.2 July 24 2000 15:35:54 ZhaoGang
* Rev 1.1 July 18 2000 16:35:54 ZhaoGang
* Rev 1.0 June 30 2000 16:25:04 ZhaoGang
* Initial revision.
---------------------------------------------------------------------------
*/
#define ENTITY_MFW
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#if defined (NEW_FRAME)
#include "typedefs.h"
#include "vsi.h"
#include "pei.h"
#include "custom.h"
#include "gsm.h"
#else
#include "stddefs.h"
#include "custom.h"
#include "gsm.h"
#include "vsi.h"
#endif
#include "dspl.h"
#include "mfw_mfw.h"
#include "mfw_lng.h"
#include "cus_aci.h"
#include "p_sim.h"
#include "mfw_win.h"
#include "mfw_kbd.h"
#include "mfw_tim.h"
#include "mfw_icn.h"
#include "mfw_edt.h"
#include "mfw_mnu.h"
#include "mfw_sat.h"
#include "mfw_ffs.h"
#include "drv_key.h"
#include "drv_tmr.h"
#include "uniparad.h"
#include "Uniassociate.h"
#include "Mmimmi.h"
#include "Mmidummy.h"
#include "Mmidialogs.h"
#include "MmiSoftKeys.h"
#include "Mmieditor.h"
#include "Mmieditor_i.h"
#include "mmihz.h"
#include "mmisettings.h"
#include "mmiblklangdb.h"
#include "mmihzapi.h"
U8 editForChineseInput=0;
extern void TraceMMI(char *s);
T_MFW_HND hz_start (T_MFW_HND parent,T_MFW_KBD *kc);
static T_MFW_HND hz_create (T_MFW_HND parent);
static void hz_exec_cb(T_MFW_HND win, USHORT event, SHORT value, T_MFW_KBD *kc);
static int hzEventWin (MfwEvt e,MfwWin *w);
static int hzEventKbd (MfwEvt e,MfwKbd *kc);
static int TimerEH(MfwEvt e, MfwTim *tc) ;
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
#define KCD_CURSORDISP 60 // this is a simulate key_code
//#define MAX_Satisfy 10
#define MaxPinYin 402
#define MaxHanZi 7334*4
#define MaxAssHanZi 11833*2
#define TIM_TAKE_OVER 1000 // one second as shorttimer
#define TIM_TAKE_OVERLONG 1500 // six second as longtimer
static const char * InputMethodFirstChar[8] = {"abc","def","gh","jkl","mno","pqrs","t" ,"wxyz" };
static const char * InputMethodOtherChar[8] = {"a" ,"e" ,"ghi","" ,"no" ,"r" ,"uv","" };
static const char * Table[MaxPinYin] = {
"a","ai","an","ang","ao","ba","bai","ban","bang","bao",
"bei","ben","beng","bi","bian","biao","bie","bin","bing","bo",
"bu","ca","cai","can","cang","cao","ce","cen","ceng","cha",
"chai","chan","chang","chao","che","chen","cheng","chi","chong","chou",
"chu","chuai","chuan","chuang","chui","chun","chuo","ci","cong","cou",
"cu","cuan","cui","cun","cuo","da","dai","dan","dang","dao",
"de","deng","di","dia","dian","diao","die","ding","diu","dong",
"dou","du","duan","dui","dun","duo","e","ei","en","er",
"fa","fan","fang","fei","fen","feng","fo","fou","fu","ga",
"gai","gan","gang","gao","ge","gei","gen","geng","gong","gou",
"gu","gua","guai","guan","guang","gui","gun","guo","ha","hai",
"han","hang","hao","he","hei","hen","heng","hong","hou","hu",
"hua","huai","huan","huang","hui","hun","huo","ji","jia","jian",
"jiang","jiao","jie","jin","jing","jiong","jiu","ju","juan","jue",
"jun","ka","kai","kan","kang","kao","ke","ken","keng","kong",
"kou","ku","kua","kuai","kuan","kuang","kui","kun","kuo","la",
"lai","lan","lang","lao","le","lei","leng","li","lia","lian",
"liang","liao","lie","lin","ling","liu","long","lou","lu","luan",
"lue","lun","luo","lv","ma","mai","man","mang","mao","me",
"mei","men","meng","mi","mian","miao","mie","min","ming","miu",
"mo","mou","mu","na","nai","nan","nang","nao","ne","nei",
"nen","neng","ni","nian","niang","niao","nie","nin","ning","niu",
"nong","nou","nu","nuan","nue","nuo","nv","o","ou","pa",
"pai","pan","pang","pao","pei","pen","peng","pi","pian","piao",
"pie","pin","ping","po","pou","pu","qi","qia","qian","qiang",
"qiao","qie","qin","qing","qiong","qiu","qu","quan","que","qun",
"ran","rang","rao","re","ren","reng","ri","rong","rou","ru",
"ruan","rui","run","ruo","sa","sai","san","sang","sao","se",
"sen","seng","sha","shai","shan","shang","shao","she","shen","sheng",
"shi","shou","shu","shua","shuai","shuan","shuang","shui","shun","shuo",
"si","song","sou","su","suan","sui","sun","suo","ta","tai",
"tan","tang","tao","te","teng","ti","tian","tiao","tie","ting",
"tong","tou","tu","tuan","tui","tun","tuo","wa","wai","wan",
"wang","wei","wen","weng","wo","wu","xi","xia","xian","xiang",
"xiao","xie","xin","xing","xiong","xiu","xu","xuan","xue","xun",
"ya","yan","yang","yao","ye","yi","yin","ying","yo","yong",
"you","yu","yuan","yue","yun","za","zai","zan","zang","zao",
"ze","zei","zen","zeng","zha","zhai","zhan","zhang","zhao","zhe",
"zhen","zheng","zhi","zhi","zhong","zhou","zhu","zhua","zhuai","zhuan",
"zhuang","zhui","zhun","zhuo","zi","zong","zou","zu","zuan","zui","zun","zuo"};
static char flagForNewWin=0;
extern INT8 g_norejectkeyflag;
static void InitializeForChineseInput(chinese_Data * pChineseData)
{
memset(pChineseData->ConditionStr, 0, sizeof(pChineseData->ConditionStr));
memset(pChineseData->ConditionHz, 0, sizeof(pChineseData->ConditionHz));
memset(pChineseData->PromptBuf, 0, sizeof(pChineseData->PromptBuf));
pChineseData->InTheTime=1;
pChineseData->SatisfyNum=0;
pChineseData->PageNum=0;
pChineseData->MAX_Satisfy=10;
pChineseData->Index=0;
pChineseData->CurCode=0;
memset(pChineseData->OtherMightChar,0,sizeof(pChineseData->OtherMightChar));
}
/*
static unsigned int wordstrlen(const unsigned short *ws)
{
const unsigned short *wr = ws - 1;
while (*++wr);
return wr - ws;
}
*/
int wordstrcmp(const unsigned short *ws1, const unsigned short *ws2)
{
unsigned short *st1 = (unsigned short *)ws1;
unsigned short *st2 = (unsigned short *)ws2;
unsigned int ch1, diff;
while (!(diff = (ch1 = *st1++) - *st2++) && ch1 != 0) ;
return diff;
}
/*
static unsigned short *wordstrcat(unsigned short *ws1, const unsigned short *ws2)
{
unsigned short *result = ws1;
while (*ws1++); // FIND END OF STRING
--ws1; // BACK UP OVER NULL
while (*ws1++ = *ws2++); // APPEND SECOND STRING
return result;
}*/
static char *Wbuf2Cbuf(char *s, unsigned short *ws)/*高低字节交换位置*/
{ char *p=(char*)ws;
char msg[100];
*s++=0x80;
while(*ws)
{ *s++=*(p+1);
*s++=(*p);
ws++;
p+=2;
}
return s;
}
static int Input_one_key(T_MFW_HND win,int KeyCode);
static void DispPromptBuf(T_MFW_HND win);
/*******************************************************************************
$Function: hz_start
$Description: input chinese.
$Returns: None.
$Arguments: None.
*******************************************************************************/
T_MFW_HND hz_start (T_MFW_HND parent,T_MFW_KBD *kc)
{
T_MFW_HND win;
TRACE_EVENT ("hz_start()");
editForChineseInput=0;
g_norejectkeyflag=1;
win = hz_create (parent);
if (win NEQ NULL)
{
SEND_EVENT (win, HZINIT, 0, kc);
}
return win;
}
/*******************************************************************************
$Function: hz_create
$Description: Creation of a win.
$Returns: None.
$Arguments: None.
*******************************************************************************/
static T_MFW_HND hz_create (T_MFW_HND parent)
{
T_HZ_INFO* data = (T_HZ_INFO *)ALLOC_MEMORY (sizeof (T_HZ_INFO));
T_MFW_WIN * win;
TRACE_EVENT ("hz_create()");
/*
* Create window handler
*/
data->hz_win =winCreate( parent, 0, MfwWinVisible, (MfwCb) hzEventWin);
if (data->hz_win EQ NULL)
{
return NULL;
}
/*
* connect the dialog data to the MFW-window
*/
data->mmi_control.dialog = (T_DIALOG_FUNC)hz_exec_cb;
data->mmi_control.data = data;
data->parent = parent;
win = ((T_MFW_HDR *)data->hz_win)->data;
win->user = (void *)data;
winShow(data->hz_win);
/*
* return window handle
*/
return data->hz_win;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -