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

📄 mmihz.c

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

          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 + -