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

📄 t9main.c

📁 T9输入发接口部分,配合前面发的MTK MMI部分的学习,可以将其移植到其它需要的嵌入式软件中.
💻 C
📖 第 1 页 / 共 5 页
字号:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/

/*****************************************************************************
 *
 * Filename:
 * ---------
 *    t9main.c
 *
 * Project:
 * --------
 *   Maui_Software
 *
 * Description:
 * ------------
 *   This file is to implement Man Machine Interface between UI layer and T9 core engine.
 *
 *
 * Author:
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/


/*------------------------------------------------------------------------
 *
 *                  include header files
 *
 *------------------------------------------------------------------------*/

#ifdef FIRST_PASS
#include "BuildCfg.h"
#endif

#if defined(__MMI_T9_V7__)
#include "t9.h"
#include "t9awapi.h"
#include "t9ccapi.h"
#endif

#include "MMI_features.h"
#include "t9api.h"
#include "oslmemory.h"
#include "GlobalConstants.h"
#include "Eventsdef.h"
#include "Pixteldatatypes.h"
#include "t9main.h"
#include "Frameworkstruct.h"
#include "EventsDef.h"
#include "Wgui.h"
#include "t9definition.h"
#include "t9def.h"
#include "Timerevents.h"
#include "DebugInitDef.h"
#include "CustDataRes.h"
#include "MessagesResourceData.h"
#include "GlobalDefs.h"
#include "Gui_config.h"
/*MTK Terry for Selection Size for different LCM size and Font size*/
#include "gdi_lcd_config.h"
/*MTK end*/
//to restruct the header files for new simulator
#include "gui_ems.h"
//#include "Ems.h"
#include "wgui_categories_inputs.h"
#include "wgui_softkeys.h"
#include "gui.h"

#ifdef WIN32
#define __align(X)
#endif

/*------------------------------------------------------------------------
 *
 *                  enternal function calls
 *
 *------------------------------------------------------------------------*/
extern void ClearKeyHandler(U16 keyCode, U16 keyType);
extern void SetKeyHandler(FuncPtr funcPtr, U16 keyCode, U16 keyType);
extern void redraw_multiline_inputbox(void);
extern void clear_screen(void);
extern U16 StartMyTimer(U16 nTimerId,U32 nTimeDuration,oslTimerFuncPtr TimerExpiry);
extern U16 StopMyTimer(U16 nTimerId);
extern void pixtel_UI_create_single_line_input_box(single_line_input_box* b,s32 x,s32 y,s32 width,s32 height,s32 length);
extern void pixtel_UI_create_single_line_input_box_use_buffer(single_line_input_box* b,s32 x,s32 y,s32 width,s32 height,UI_string_type buffer,s32 length);
extern void pixtel_UI_show_single_line_input_box(single_line_input_box *b);
extern void pixtel_UI_show_multi_line_input_box(multi_line_input_box *b);
extern UI_string_type  get_string(UI_string_ID_type i);
extern void draw_title(void);
extern void pixtel_UI_multi_line_input_box_insert_character(multi_line_input_box *b,UI_character_type c);
extern void pixtel_UI_multi_line_input_box_delete_character(multi_line_input_box *b);
extern void pixtel_UI_multi_line_input_box_previous(multi_line_input_box *b);
extern void pixtel_UI_multi_line_input_box_next(multi_line_input_box *b);
extern void redraw_category5_information_bar(void);
extern void SetCategory5RightSoftkeyFunction(void (*f)(void),MMI_key_event_type k);
extern byte multiline_inputbox_empty(void);
extern void wgui_handle_inputbox_right_softkey_up(void);
extern void wgui_redraw_input_information_bar(void);
extern U16 StartMyTimerInt(U16 nTimerId,U32 nTimeDuration,oslTimerFuncPtr TimerExpiryFunction, U8 alignment);
extern void pixtel_UI_set_single_line_input_box_theme(single_line_input_box *b,UI_single_line_input_box_theme *t);
extern void pixtel_UI_single_line_input_box_delete_all(single_line_input_box *b);
extern void wgui_redraw_remaining_characters_display(void);
//PMT Dara Added  on 7/12/04...to disable EMS support for NEPTUNE
#if !defined(MMI_LOW_MEMORY_PHONE)||defined(__MMI_MESSAGES_EMS__)
extern void show_EMS_inputbox(void);
extern void pixtel_UI_EMS_input_box_next(UI_EMS_input_box *b);
extern void pixtel_UI_EMS_input_box_previous(UI_EMS_input_box *b);
extern void wgui_EMS_redraw_remaining_characters_display(void);
extern void pixtel_UI_EMS_input_box_delete_all(UI_EMS_input_box *b);
extern void pixtel_UI_EMS_input_box_previous(UI_EMS_input_box *b);
extern void pixtel_UI_EMS_input_box_next(UI_EMS_input_box *b);
extern byte pixtel_UI_EMS_input_box_get_next_object(EMSData *data,EMSPosition *current_position,UI_character_type *c,EMSObject **o);
extern byte pixtel_UI_EMS_input_box_get_previous_object(EMSData *data,EMSPosition *current_position,UI_character_type *c,EMSObject **o);
extern EMSTATUS EMSSetDCS(EMSData *emsData, kal_uint8 dcs);
extern s32 pixtel_UI_EMS_input_box_highlight_cursor_number(UI_EMS_input_box *b, s32 numOfChar );
#endif 
//PMT End 
#if !defined(MMI_LOW_MEMORY_PHONE)
extern void EntrySymbolPickerScreen(void);
#else 
extern void EntrySymbolPickerScreenForCurrentEMSScreen(void);
extern void EntrySymbolPickerScreenForCurrentGeneralScreen(void);
#endif 
extern void handle_category28_right_softkey_up(void);
extern void wgui_register_inputbox_handle_right_softkey_up(void);
extern void register_category28_handle_right_softkey_up(void);
extern void (*pixtel_UI_start_timer)(s32 count,void (*callback)(void));
extern S8 *UCS2Strcpy(S8 *strDestination, const S8 *strSource );
extern void pixtel_UI_multi_line_input_box_delete_all(multi_line_input_box *b);
extern void (*hide_multitap)(void);
extern s32 pixtel_UI_multi_line_input_box_highlight_cursor_number(multi_line_input_box *b,s32 n);
extern void show_softkey_background(void);
extern void	(*RedrawSpellingOrCandidateBoxesFunction)(void);
extern void pixtel_UI_show_fixed_list_menu(fixed_list_menu *m);
extern void (*wgui_inline_edit_DONE_function)(void);
extern void wgui_register_inputbox_handle_clear_key_up(void);
extern void register_category28_handle_clear_key_up(void);
//PMT dara added on 15jan2005
#if defined(__MMI_INSCREEN_MULTILINE_TEXTBOX__)
extern void multiline_inscreen_inputbox_previous_line(void);
extern void multiline_inscreen_inputbox_next_line(void);
#endif 
//PMT end 
extern U8 get_menu_item_height(void);
extern void EntryInLineMultilineEditorOption(void);
extern void (*multiline_inputbox_input_callback)(void);

/*------------------------------------------------------------------------
 *
 *                  external global data
 *
 *------------------------------------------------------------------------*/
//PMT dara Added on 8/12/04 
 #ifdef MONO_LCD
 #define MMI_multiline_inputbox MMI_multiline_dailer_inputbox_union.MMI_multiline_inputbox 
#else
#ifndef NEPTUNE_COLOR
extern multi_line_input_box            MMI_multiline_inputbox;
#else
 #define MMI_multiline_inputbox MMI_multiline_dailer_inputbox_union.MMI_multiline_inputbox 
#endif
 #endif 
 //PMT end 
extern UI_string_type  MMI_title_string;
//PMT Dara Added  on 7/12/04...to disable EMS support for NEPTUNE
#ifndef MONO_LCD
#ifndef NEPTUNE_COLOR
extern UI_single_line_input_box_theme MMI_singleline_inputbox_theme;
#endif 
#endif 
//PMT end
extern byte	wgui_inputbox_RSK_label_clear;
extern byte wgui_inputbox_information_flag;
//PMT Dara Added  on 7/12/04...to disable EMS support for NEPTUNE
#if !defined(MMI_LOW_MEMORY_PHONE)||defined(__MMI_MESSAGES_EMS__)
extern UI_EMS_input_box    MMI_EMS_inputbox;
extern EMSTextFormat		wgui_EMS_text_format;
#endif 
//PMT end
extern byte category28_RSK_label_clear;
extern s32	MMI_multitap_x;
extern s32	MMI_multitap_y;
extern s32	MMI_multitap_width;
extern s32	MMI_multitap_height;
extern byte inline_full_screen_edit_changed;
extern byte wgui_inline_list_menu_disable_done;
extern s32 MMI_multiline_inputbox_x;
extern s32 MMI_multiline_inputbox_y;
extern s32 MMI_multiline_inputbox_width;
extern s32 MMI_multiline_inputbox_height;
extern s32 UI_device_width;
extern s32 UI_device_height;
extern s32 MMI_title_height;
extern s32 MMI_button_bar_height;
//MTK Terry inline_multiline RSK
extern s8 hilited_item_changed;
extern s8 MMI_multi_line_inputbox_present;
extern byte wgui_inputbox_information_flag;
extern s32 wgui_inputbox_information_bar_height;
#if !defined(MMI_LOW_MEMORY_PHONE)
extern s16  MMI_current_input_ext_type;
#endif

extern icontext_button	MMI_softkeys[];
//PMT SHARIQ START
extern  U8 processUpRepeatKey;
//PMT SHARIQ END
/*------------------------------------------------------------------------
 *
 *                  Global data
 *
 *------------------------------------------------------------------------*/
#if defined(__MMI_T9_V7__)
__align(4) T9CCAWFieldInfo FieldInfo;
extern T9STATUS T9FARCALL T9LoadChnLdb(T9CCFieldInfo *pCCFieldInfo, T9ChineseData T9FARDATA *pT9CCLdbHeader);
extern T9UINT T9ReadLdbData(T9FieldInfo *pFieldInfo, T9U32 dwOffset, T9U8 *pbDst,  T9UINT nSize);
#else
__align(4) T9FieldInfo         FieldInfo;
__align(4) T9AuxChineseInfo    t9AuxChinese;
__align(4) T9U8                t9KeyBuf[T9_KEY_BUFFER_SIZE];
__align(4) T9U16               t9SelectPage[T9_MAX_SELECTION_BUFFER_SIZE];
__align(4) T9U8                t9AuxSelectBuf[T9_MAX_SELECTION_BUFFER_SIZE];
__align(4) T9U8                t9SpellBuf[T9SPELLBUFSIZE];
__align(4) T9Event             t9event;
extern T9NUM FARCALL T9ReadLdbData(T9FieldInfo *, T9U32, T9U8 *, T9NUM);
#endif
__align(4) T9SYMB              	t9TxtBuf[(CHINESE_BUFFER_LENGTH)];
__align(4) T9AuxType           	t9AuxBuf[(CHINESE_BUFFER_LENGTH)];
T9U8                cursorTextWindow = 0;
T9U8                cursorSelectWindow = 1;
T9U8                cursorSymbolWindow = 1;
T9U8                cursorEnSymbolWindow = 1;
T9U16 curLSKStingId, curLSKIconId, curRSKStingId, curRSKIconId;
void (*curLSKFunction)(void)=NULL;
void (*curRSKFunction)(void)=NULL;
T9U8 numberMode = 0;
T9U16 curInputMethod = 888;
TIMER gpTimer;
T9U8 selectedCharIndex = 0;
T9U8 selectedSymbolPageIndex = 0;
T9U8 selectedEnSymbolPageIndex = 0;
T9U8 selectedSymbolIndex = 0;
T9U8 selectedEnSymbolIndex = 0;
unsigned int        gTonePos = -1;
int                 gToneValue = -1;
single_line_input_box t9CompositionArea;
single_line_input_box t9SelectionArea;
T9SYMB          *psBufferT1;
T9SYMB          *psBufferT2;
T9U8    screenState = T9_SCREEN_STATE_A;
T9U8    continueSelectFlag = FALSE;
T9MINOR curPressKey;
T9U32 spellLength = 0;
T9U16  inputMethodFlag;
T9U32 t9InputboxFrameCounter = 0;
//PMT Dara Added  on 7/12/04...to disable EMS support for NEPTUNE
#if !defined(MMI_LOW_MEMORY_PHONE)||defined(__MMI_MESSAGES_EMS__)
T9U32 t9InputboxFrameCounterForEMSInputBox = 0;
EMSTextFormat		t9KeepEMSTextFormat;
#endif 
//PMT end
void (*t9_inputbox_LSK_function)(void)=NULL;
T9U8 t9FrameTimerStart;
T9U32 t9EditorHeight;
static UI_string_type temp_left_softkey_text;
const KeyPad2T9Key keypad2T9KeyMap_English[] = {
    {KEY_0, T9KEYAMBIGA},
    {KEY_1, T9KEYAMBIG1},
    {KEY_2, T9KEYAMBIG2},
    {KEY_3, T9KEYAMBIG3},
    {KEY_4, T9KEYAMBIG4},
    {KEY_5, T9KEYAMBIG5},
    {KEY_6, T9KEYAMBIG6},
    {KEY_7, T9KEYAMBIG7},
    {KEY_8, T9KEYAMBIG8},
    {KEY_9, T9KEYAMBIG9},
    {KEY_UP_ARROW,    T9KEYPREV},
    {KEY_DOWN_ARROW,  T9KEYNEXT},
    {KEY_LEFT_ARROW,  T9KEYLEFT},
    {KEY_RIGHT_ARROW, T9KEYRIGHT},
    {KEY_RSK,    T9KEYCLEAR},
    {MAX_KEYS,T9KEYNONE}
};
// PMT dara for T9 thai
#ifdef __MMI_T9_THAI__
#ifdef T9LANG_Thai
const KeyPad2T9Key keypad2T9KeyMap_Thai[] = {
    {KEY_0, T9KEYAMBIGA},
    {KEY_1, T9KEYAMBIG1},
    {KEY_2, T9KEYAMBIG2},
    {KEY_3, T9KEYAMBIG3},
    {KEY_4, T9KEYAMBIG4},
    {KEY_5, T9KEYAMBIG5},
    {KEY_6, T9KEYAMBIG6},
    {KEY_7, T9KEYAMBIG7},
    {KEY_8, T9KEYAMBIG8},
    {KEY_9, T9KEYAMBIG9},
    {KEY_STAR, T9KEYAMBIGB},
    {KEY_POUND, T9KEYAMBIGC},
    {KEY_UP_ARROW,    T9KEYPREV},
    {KEY_DOWN_ARROW,  T9KEYNEXT},
    {KEY_LEFT_ARROW,  T9KEYLEFT},
    {KEY_RIGHT_ARROW, T9KEYRIGHT},
    {KEY_RSK,    T9KEYCLEAR},
    {MAX_KEYS,T9KEYNONE}
};
#endif 
#endif 

#if !defined(__MMI_T9_DEFAULT_KEY_DEFINITION__)
const KeyPad2T9Key keypad2T9KeyMap_TrChinese[] = {
    {KEY_0, T9KEYAMBIGA},
    {KEY_1, T9KEYAMBIG1},
    {KEY_2, T9KEYAMBIG2},
    {KEY_3, T9KEYAMBIG3},
    {KEY_4, T9KEYAMBIG4},
    {KEY_5, T9KEYAMBIG5},
    {KEY_6, T9KEYAMBIG6},
    {KEY_7, T9KEYAMBIG7},

⌨️ 快捷键说明

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