gui_virtual_keyboard.h
上传用户:lqx1163
上传日期:2014-08-13
资源大小:9183k
文件大小:13k
源码类别:

MTK

开发平台:

C/C++

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*****************************************************************************
  36.  *
  37.  * Filename:
  38.  * ---------
  39.  *   gui_virtual_keyboard.h
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   MAUI
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   Virtual keyboard - UI component
  48.  *
  49.  * Author:
  50.  * -------
  51.  * -------
  52.  * -------
  53.  *
  54.  *============================================================================
  55.  *             HISTORY
  56.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  57.  *------------------------------------------------------------------------------
  58.  * removed!
  59.  *
  60.  * removed!
  61.  * removed!
  62.  * removed!
  63.  *
  64.  * removed!
  65.  * removed!
  66.  * removed!
  67.  *
  68.  * removed!
  69.  * removed!
  70.  * removed!
  71.  *
  72.  * removed!
  73.  * removed!
  74.  * removed!
  75.  *
  76.  *------------------------------------------------------------------------------
  77.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  78.  *============================================================================
  79.  ****************************************************************************/
  80. #ifndef __GUI_VIRTUAL_KEYBOARD_H__
  81. #define __GUI_VIRTUAL_KEYBOARD_H__
  82. #include "PixtelDataTypes.h"
  83. #include "gui_data_types.h"
  84. #include "MMI_features.h"
  85. #include "gdi_include.h"
  86. #include "gui_theme_struct.h"
  87. #include "wgui.h"
  88. #ifdef __MMI_TOUCH_SCREEN__
  89. #include "kal_non_specific_general_types.h"
  90. #include "TouchScreenGprot.h"
  91. #endif /* __MMI_TOUCH_SCREEN__ */ 
  92. /***************************************************************************** 
  93. * Define
  94. *****************************************************************************/
  95. #define  MMI_VKBD_MAX_ROW                          5
  96. #define  MMI_VKBD_MAX_COLUMN                       15
  97. #define  MMI_VKBD_MAX_CUSTOM_KEYS                  20
  98. #define  MMI_VKBD_MAX_DISPLAY_AREA_TEXT_LEN        11
  99. #define  MMI_VKBD_MAX_DEADKEY_INPUT                2
  100. #define  MMI_VKBD_MAX_DISABLED_KEYS                7
  101. #define  MMI_VKBD_GRAYSCALE_VALUE                  5
  102. // TODO: Russian should be handled differently
  103. #if defined(__MMI_LANG_RUSSIAN__) || defined(__MMI_LANG_SPANISH__) || defined(__MMI_LANG_FRENCH__) || defined(__MMI_LANG_PORTUGUESE__) || defined(__MMI_LANG_GERMAN__) || defined(__MMI_LANG_ITALIAN__) || defined(__MMI_LANG_TURKISH__)
  104. #define  __MMI_VKBD_EUROPEAN_SUPPORT__
  105. #endif /* European languages */
  106. /***************************************************************************** 
  107. * Typedef 
  108. *****************************************************************************/
  109. /* 
  110.  * Supported languages 
  111.  * MMI_virtual_keyboard_language_map[] and gui_dead_key_symbol_table[] should be changed
  112.  * accrording to gui_virtual_keyboard_language_enum.
  113.  */
  114. typedef enum
  115. {
  116.     GUI_VIRTUAL_KEYBOARD_ENGLISH = 0,
  117.     GUI_VIRTUAL_KEYBOARD_ENGLISH_UPPERCASE,
  118.     GUI_VIRTUAL_KEYBOARD_SYMBOL,
  119.     GUI_VIRTUAL_KEYBOARD_TRAY,
  120.     GUI_VIRTUAL_KEYBOARD_NUMBER,
  121.     GUI_VIRTUAL_KEYBOARD_PHONE_NUMBER,
  122.     GUI_VIRTUAL_KEYBOARD_EMPTY_TRAY,
  123.     GUI_VIRTUAL_KEYBOARD_NUMBER_TRAY,
  124.     GUI_VIRTUAL_KEYBOARD_NUMBER_DOT_TRAY,
  125.     /* Chinese */
  126.     /* MTK Terry Temp Solution for Custom Release */
  127.     // #ifdef __MMI_LANG_SM_CHINESE__
  128.     GUI_VIRTUAL_KEYBOARD_PINYIN,
  129.     //#endif
  130.     //#ifdef __MMI_LANG_TR_CHINESE__
  131.     GUI_VIRTUAL_KEYBOARD_BOPOMO,
  132.     //#endif
  133.     //#if defined(__MMI_LANG_TR_CHINESE__) || defined(__MMI_LANG_SM_CHINESE__)
  134.     GUI_VIRTUAL_KEYBOARD_CHINESE_SYMBOL,
  135.     // #endif
  136.     /* Asia-pacific */
  137. #ifdef __MMI_LANG_THAI__
  138. #endif 
  139. #ifdef __MMI_LANG_INDONESIAN__
  140. #endif 
  141. #ifdef __MMI_LANG_MALAY__
  142. #endif 
  143. #ifdef __MMI_LANG_VIETNAMESE__
  144. #endif 
  145.     /* Hindi */
  146. #ifdef __MMI_LANG_HINDI__
  147. #endif 
  148.     /* Arabic */
  149. #ifdef __MMI_LANG_ARABIC__
  150. #endif 
  151.     /* Europe */
  152. #ifdef __MMI_LANG_SPANISH__
  153.     GUI_VIRTUAL_KEYBOARD_SPANISH,
  154.     GUI_VIRTUAL_KEYBOARD_SPANISH_UPPERCASE,
  155. #endif /* __MMI_LANG_SPANISH__ */ 
  156. #ifdef __MMI_LANG_FRENCH__
  157.     GUI_VIRTUAL_KEYBOARD_FRENCH,
  158.     GUI_VIRTUAL_KEYBOARD_FRENCH_UPPERCASE,
  159. #endif /* __MMI_LANG_FRENCH__ */ 
  160. #ifdef __MMI_LANG_GERMAN__
  161.     GUI_VIRTUAL_KEYBOARD_GERMAN,
  162.     GUI_VIRTUAL_KEYBOARD_GERMAN_UPPERCASE,
  163. #endif /* __MMI_LANG_GERMAN__ */ 
  164. #ifdef __MMI_LANG_ITALIAN__
  165.     GUI_VIRTUAL_KEYBOARD_ITALIAN,
  166.     GUI_VIRTUAL_KEYBOARD_ITALIAN_UPPERCASE,
  167. #endif /* __MMI_LANG_ITALIAN__ */ 
  168. #ifdef __MMI_LANG_RUSSIAN__
  169.     GUI_VIRTUAL_KEYBOARD_RUSSIAN,
  170.     GUI_VIRTUAL_KEYBOARD_RUSSIAN_UPPERCASE,
  171. #endif /* __MMI_LANG_RUSSIAN__ */ 
  172. #ifdef __MMI_LANG_TURKISH__
  173.     GUI_VIRTUAL_KEYBOARD_TURKISH,
  174.     GUI_VIRTUAL_KEYBOARD_TURKISH_UPPERCASE,
  175. #endif /* __MMI_LANG_TURKISH__ */ 
  176. #ifdef __MMI_LANG_PORTUGUESE__
  177.     GUI_VIRTUAL_KEYBOARD_PORTUGUESE,
  178.     GUI_VIRTUAL_KEYBOARD_PORTUGUESE_UPPERCASE,
  179. #endif /* __MMI_LANG_PORTUGUESE__ */ 
  180. #ifdef __MMI_VKBD_EUROPEAN_SUPPORT__
  181.     GUI_VIRTUAL_KEYBOARD_EUROPEAN_SYMBOLS,
  182. #endif 
  183.     GUI_VIRTUAL_KEYBOARD_MAX_LANG
  184. } gui_virtual_keyboard_language_enum;
  185. /* Pen events */
  186. typedef enum
  187. {
  188.     GUI_VKBD_PEN_NONE,
  189.     GUI_VKBD_PEN_DISPLAY_AREA,
  190.     GUI_VKBD_PEN_CHAR_I,
  191.     GUI_VKBD_PEN_HIDE,
  192.     GUI_VKBD_PEN_SHOW,
  193.     GUI_VKBD_PEN_CAPSLOCK,
  194.     GUI_VKBD_PEN_SPACE,
  195.     GUI_VKBD_PEN_BAKSPACE,
  196.     GUI_VKBD_PEN_SYMBPICKER,
  197.     GUI_VKBD_PEN_BRACKET,
  198.     GUI_VKBD_PEN_NEWLINE,
  199.     GUI_VKBD_PEN_EUROSYMB,
  200.     GUI_VKBD_PEN_DEAD_KEY,
  201.     GUI_VKBD_PEN_MAX
  202. } gui_virtual_keyboard_pen_enum;
  203. /* Flags */
  204. /* Flag - multi-block handwriting mode enabled */
  205. #define GUI_VKBD_FLAG_MULTI_BLOCK_MODE          0x00000001
  206. typedef struct
  207. {
  208.     S16 nInputLen;
  209.     UI_character_type input_char[MMI_VKBD_MAX_DEADKEY_INPUT];
  210.     UI_character_type output_char;
  211. } gui_dead_key_symbol_struct;
  212. typedef struct
  213. {
  214.     const gui_dead_key_symbol_struct *dead_key_symbol;
  215.     S16 nentry;
  216. } gui_dead_key_map_struct;
  217. typedef struct
  218. {
  219.     /* Index of matrix layout tapped by pen (<0 if none) */
  220.     S16 matrix_index;
  221.     S16 matrix_column;
  222.     S16 matrix_row;
  223.     /* Index of custom key tapped by pen (<0 if none) */
  224.     S16 custom_key_index;
  225.     /* size of selected key */
  226.     S16 key_width;
  227.     S16 key_height;
  228.     S16 key_x;
  229.     S16 key_y;
  230. } virtual_keyboard_selection_struct;
  231. typedef struct _virtual_keyboard_struct
  232. {
  233.     S16 x, y;
  234.     S16 width, height;
  235.     U32 flags;
  236.     gui_virtual_keyboard_language_enum lang_type;
  237.     UI_virtual_keyboard_theme *keyboard_theme;
  238.     UI_character_type disp_area_text[MMI_VKBD_MAX_DISPLAY_AREA_TEXT_LEN + 1];
  239.     /* 
  240.      * If `allowed_characters' is not NULL, the parameters `disabled_chars' and `disabled_symbols'
  241.      * will be ignored. 
  242.      * 
  243.      * It only enables characters listed in `allowed_characters'
  244.      * and special custom keys: GUI_VKBD_PEN_HIDE, GUI_VKBD_PEN_SHOW, 
  245.      * GUI_VKBD_PEN_CAPSLOCK, GUI_VKBD_PEN_BAKSPACE.
  246.      *
  247.      * Custom key GUI_VKBD_PEN_NEWLINE and GUI_VKBD_PEN_SPACE are enabled 
  248.      * if 'n' and ' ' are listed. 
  249.      *
  250.      * Custom key GUI_VKBD_PEN_SYMBPICKER is enabled if any non-alphanumeric characters is listed.
  251.      *
  252.      * `allowed_characters' may contain "-" for consecutive characters
  253.      * (Ex. "a-z" for characters from a to z.)
  254.      * If we want to accept "-", please write it as "-" 
  255.      * For example, "-0-9." represents "-0123456789."
  256.      */
  257.     const UI_character_type *allowed_characters;
  258.     /* Null-terminated list for disabled characters */
  259.     UI_character_type disabled_chars[MMI_VKBD_MAX_DISABLED_KEYS + 1];
  260.     /* Terminated with GUI_VKBD_PEN_NONE */
  261.     gui_virtual_keyboard_pen_enum disabled_symbols[MMI_VKBD_MAX_DISABLED_KEYS + 1];
  262. #ifdef __MMI_TOUCH_SCREEN__
  263.     MMI_BOOL key_down_accepted;
  264. #endif 
  265.     /* Dead key character */
  266.     UI_character_type dead_key_input[MMI_VKBD_MAX_DEADKEY_INPUT];
  267.     BOOL selected_key_cached;
  268.     virtual_keyboard_selection_struct selected_key;
  269.     gdi_image_cache_bmp_struct selected_key_bitmap;
  270. } virtual_keyboard;
  271. /* Layout definition */
  272. typedef struct
  273. {
  274.     S16 x, y;
  275.     S16 n_columns, n_rows;
  276.     S16 width, height;
  277.     S16 key_width, key_height;
  278.     S16 horizontal_key_gap, vertical_key_gap;
  279. } gui_matrix_key_layout_struct;
  280. typedef struct
  281. {
  282.     S16 x, y;
  283.     S16 key_width, key_height;
  284. } gui_custom_key_layout_struct;
  285. typedef struct
  286. {
  287.     S16 width;
  288.     S16 height;
  289.     S16 n_matrix_key_layout;
  290.     S16 n_custom_keys;
  291.     const gui_matrix_key_layout_struct *matrix_layout;
  292.     const gui_custom_key_layout_struct *custom_keys;
  293.     U16 ImageId;
  294. } gui_keyboard_layout_struct;
  295. typedef struct
  296. {
  297.     BOOL enable_dead_key;   /* Dead key for european languages */
  298.     S16 n_matrix_layout;
  299.     S16 n_custom_keys;
  300.     UI_character_type matrix_string[MMI_VKBD_MAX_ROW][MMI_VKBD_MAX_COLUMN + 1];
  301.     UI_character_type custom_string[MMI_VKBD_MAX_CUSTOM_KEYS];
  302.     MMI_ID_TYPE custom_key_image[MMI_VKBD_MAX_CUSTOM_KEYS];
  303.     gui_virtual_keyboard_pen_enum custom_key_type[MMI_VKBD_MAX_CUSTOM_KEYS];
  304. } gui_keyboard_language_struct;
  305. typedef struct
  306. {
  307.     const gui_keyboard_layout_struct *virtual_keyboard_layout;
  308.     const gui_keyboard_language_struct *virtual_keyboard_language;
  309. } gui_keyboard_lang_map_struct;
  310. /***************************************************************************** 
  311. * Extern Global Variable
  312. *****************************************************************************/
  313. extern UI_virtual_keyboard_theme *current_virtual_keyboard_theme;
  314. /***************************************************************************** 
  315. * Extern Global Function
  316. *****************************************************************************/
  317. extern void gui_set_virtual_keyboard_current_theme(virtual_keyboard *v);
  318. extern void gui_set_virtual_keyboard_theme(virtual_keyboard *v, UI_virtual_keyboard_theme *t);
  319. extern void gui_create_virtual_keyboard(
  320.                 virtual_keyboard *v,
  321.                 S16 x,
  322.                 S16 y,
  323.                 gui_virtual_keyboard_language_enum lang_type);
  324. extern void gui_move_virtual_keyboard(virtual_keyboard *v, S16 x, S16 y);
  325. extern void gui_show_virtual_keyboard(virtual_keyboard *v);
  326. extern void gui_set_virtual_keyboard_allowed_characters(virtual_keyboard *v, const UI_character_type *allowed_chars);
  327. extern void gui_set_virtual_board_disable_list(
  328.                 virtual_keyboard *v,
  329.                 const UI_character_type *disabled_chars,
  330.                 const gui_virtual_keyboard_pen_enum *disabled_symbols);
  331. extern void gui_set_virtual_keyboard_display_area(virtual_keyboard *v, const U8 *string, BOOL redraw);
  332. extern void gui_set_virtual_keyboard_multi_block_mode(virtual_keyboard *v, MMI_BOOL enabled);
  333. #ifdef __MMI_TOUCH_SCREEN__
  334. extern BOOL gui_virtual_keyboard_translate_pen_event(
  335.                 virtual_keyboard *v,
  336.                 S16 x,
  337.                 S16 y,
  338.                 mmi_pen_event_type_enum pen_event,
  339.                 gui_virtual_keyboard_pen_enum *vkbd_event,
  340.                 gui_pen_event_param_struct *vkbd_param);
  341. #endif /* __MMI_TOUCH_SCREEN__ */ 
  342. #endif /* __GUI_VIRTUAL_KEYBOARD_H__ */