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

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_fixed_menus.c
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   MAUI
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   Fixed-list menu - UI component
  48.  *
  49.  *   1. The number of menu items stays unchanged after the UI component is created.
  50.  *   2. The storage of all menu item data is preallocated.
  51.  *
  52.  * Author:
  53.  * -------
  54.  * -------
  55.  * -------
  56.  * -------
  57.  *
  58.  *==============================================================================
  59.  *             HISTORY
  60.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  61.  *------------------------------------------------------------------------------
  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.  * removed!
  77.  * removed!
  78.  * removed!
  79.  *
  80.  * removed!
  81.  * removed!
  82.  * removed!
  83.  *
  84.  * removed!
  85.  * removed!
  86.  * removed!
  87.  *
  88.  * removed!
  89.  * removed!
  90.  * removed!
  91.  *
  92.  * removed!
  93.  * removed!
  94.  * removed!
  95.  *
  96.  * removed!
  97.  * removed!
  98.  * removed!
  99.  *
  100.  * removed!
  101.  * removed!
  102.  * removed!
  103.  *
  104.  *------------------------------------------------------------------------------
  105.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  106.  *==============================================================================
  107.  *******************************************************************************/
  108. /**
  109.  * Copyright Notice
  110.  * ?2002 - 2003, Pixtel Communications, Inc., 1489 43rd Ave. W.,
  111.  * Vancouver, B.C. V6M 4K8 Canada. All Rights Reserved.
  112.  *  (It is illegal to remove this copyright notice from this software or any
  113.  *  portion of it)
  114.  */
  115. /**********************************************************************************
  116.    Filename:      gui_fixed_menus.h
  117.    Author:        manju
  118.    Date Created:  August-13-2002
  119.    Contains:      PixTel UI routines header for Fixed Menus
  120. **********************************************************************************/
  121. #ifndef __GUI_FIXED_MENUS_H__
  122. #define __GUI_FIXED_MENUS_H__
  123. #include "gui.h"
  124. #include "gui_scrollbars.h"
  125. #include "gui_common_menus.h"
  126. /* MTK Leo add,20040318, for new simulator */
  127. #include "gui_theme_struct.h"
  128. /* MTK Leo end */
  129. #include "gdi_include.h"
  130. #ifdef __cplusplus
  131. extern "C"
  132. {
  133. #endif /* __cplusplus */ 
  134. #ifdef __MMI_TOUCH_SCREEN__
  135. #include "kal_non_specific_general_types.h"
  136. #include "TouchScreenGprot.h"
  137.     typedef enum
  138.     {
  139.         GUI_LIST_PEN_NONE,
  140.         GUI_LIST_PEN_HIGHLIGHT_CHANGED,
  141.         GUI_LIST_PEN_NEED_REDRAW,
  142.         GUI_LIST_PEN_ITEM_SELECTED,
  143.         /* Two-state menu item */
  144.         GUI_TWOSTATE_PEN_TOGGLE,
  145. GUI_LIST_PEN_TWO_LINE_NEXT,
  146. GUI_LIST_PEN_TWO_LINE_PREVIOUS
  147.     } gui_list_pen_enum;
  148.     typedef struct
  149.     {
  150.         S8 pen_on_scrollbar;
  151.         /* pen events are handled by menu item directly */
  152.         S8 handled_by_menu_item;
  153.         /* highlighted item is changed between Pen Down and Pen Up */
  154.         S8 highlight_changed;
  155.         /* highlighted item on pen down */
  156.         S32 first_highlighed_item;
  157.     } gui_list_pen_state_struct;
  158.     typedef BOOL(*fixed_menuitem_pen_hdlr) (void *item, void *common_item_data, S32 item_x, S32 item_y,
  159.                                             mmi_pen_event_type_enum pen_event, S16 x, S16 y,
  160.                                             gui_list_pen_enum *menuitem_event,
  161.                                             gui_pen_event_param_struct *menuitem_param);
  162. #endif /* __MMI_TOUCH_SCREEN__ */ 
  163.     /* UI Fixed List menu structure           */
  164.     extern UI_fixed_list_menu_theme *current_fixed_list_menu_theme;
  165.     typedef struct _fixed_list_menu
  166.     {
  167.         S32 x, y;
  168.         S32 width, height;
  169.         UI_filled_area *normal_filler;
  170.         UI_filled_area *focussed_filler;
  171.         U32 flags;
  172.         vertical_scrollbar vbar;
  173.         S32 n_items;
  174.         S32 displayed_items;
  175.         S32 first_displayed_item;
  176.         S32 last_displayed_item;
  177.         S32 highlighted_item;
  178.         /* MTK Leo add fine tune list 1209 */
  179.         S32 spacing, top;
  180.         /* MTK Leo end */
  181.         void **items;
  182.         void *common_item_data;
  183.         void (*item_unhighlighted) (S32 i);
  184.         void (*item_highlighted) (S32 i);
  185.         void (*item_display_function) (void *item, void *common_item_data, S32 x, S32 y);
  186.         void (*item_measure_function) (void *item, void *common_item_data, S32 *width, S32 *height);
  187.         void (*item_highlight_function) (void *item, void *common_item_data);
  188.         void (*item_remove_highlight_function) (void *item, void *common_item_data);
  189.         void (*item_hide_function) (void *item, void *common_item_data, S32 x, S32 y);
  190.         void (*item_displayed_callback) (S32 index, S32 x1, S32 y1, S32 x2, S32 y2);
  191.         void (*item_resize_function) (S32 x, S32 y);
  192.         MMI_BOOL resized_before_locate;
  193.         gdi_handle act_layer_handle;
  194.         gdi_handle act_lcd_handle;
  195.     #ifdef __MMI_TOUCH_SCREEN__
  196.         /* Configured in gui_set_fixed_list_menu_item_pen_function() */
  197.         fixed_menuitem_pen_hdlr item_pen_function;
  198.         MMI_BOOL disable_move_highlight;
  199.         MMI_BOOL disable_up_select;
  200.         /* Configured in associate_fixed_xxx_list */
  201.         void (*pen_event_current_selected_callback_function) (void);
  202.         void (*pen_event_default_selected_callback_function) (void);
  203.         /* Configured in pen handler  */
  204.         void (*pen_redraw_menu_function) (void);
  205.         /* Configured in gui_fixed_list_menu_set_pen_scroll_delay() */
  206.         S16 pen_scroll_delay_time;
  207.         S16 pen_scroll_after_delay;
  208.         /* Runtime data */
  209.         gui_list_pen_state_struct pen_state;
  210.     #endif /* __MMI_TOUCH_SCREEN__ */ 
  211.     } fixed_list_menu;
  212.     extern S32 current_fixed_list_menuitem_display_index;
  213.     extern void gui_show_list_menu_background_outside_area(fixed_list_menu *m, S32 x1, S32 y1, S32 x2, S32 y2);
  214.     extern void gui_set_fixed_list_menu_current_theme(fixed_list_menu *m);
  215.     extern void gui_set_fixed_list_menu_theme(fixed_list_menu *m, UI_fixed_list_menu_theme *t);
  216.     extern void gui_create_fixed_list_menu(fixed_list_menu *m, S32 x, S32 y, S32 width, S32 height);
  217.     extern void gui_resize_fixed_list_menu(fixed_list_menu *m, S32 width, S32 height);
  218.     extern void gui_move_fixed_list_menu(fixed_list_menu *m, S32 x, S32 y);
  219.     extern void gui_fixed_list_menu_locate_highlighted_item(fixed_list_menu *m);
  220.     extern void gui_fixed_list_menu_goto_item(fixed_list_menu *m, S32 i);
  221.     extern void gui_fixed_list_menu_goto_next_item(fixed_list_menu *m);
  222.     extern void gui_fixed_list_menu_goto_previous_item(fixed_list_menu *m);
  223.     extern void gui_fixed_list_menu_goto_next_page(fixed_list_menu *m);
  224.     extern void gui_fixed_list_menu_goto_previous_page(fixed_list_menu *m);
  225.     extern void gui_fixed_list_menu_goto_first_item(fixed_list_menu *m);
  226.     extern void gui_fixed_list_menu_goto_last_item(fixed_list_menu *m);
  227.     extern void gui_show_fixed_list_menu(fixed_list_menu *m);
  228.     extern void gui_hide_fixed_list_menu_highlighted_item(fixed_list_menu *m);
  229.     void gui_set_fixed_list_menu_item_functions(fixed_list_menu *m,
  230.                                                 void (*item_display_function) (void *item, void *common_item_data,
  231.                                                                                S32 x, S32 y),
  232.                                                 void (*item_measure_function) (void *item, void *common_item_data,
  233.                                                                                S32 *width, S32 *height),
  234.                                                 void (*item_highlight_function) (void *item, void *common_item_data),
  235.                                                 void (*item_remove_highlight_function) (void *item,
  236.                                                                                         void *common_item_data),
  237.                                                 void (*item_hide_function) (void *item, void *common_item_data, S32 x,
  238.                                                                             S32 y), void (*item_resize_function) (S32 x,
  239.                                                                                                                   S32
  240.                                                                                                                   y));
  241.     extern void gui_set_fixed_list_menu_common_item_data(fixed_list_menu *m, void *c);
  242.     extern void gui_show_fixed_list_menu_no_draw(fixed_list_menu *m);
  243. #ifdef __MMI_TOUCH_SCREEN__
  244.     extern void gui_fixed_list_menu_set_pen_scroll_delay(fixed_list_menu *m, S32 delay_time);
  245.     extern void gui_set_fixed_list_menu_item_pen_function(
  246.                     fixed_list_menu *m,
  247.                     fixed_menuitem_pen_hdlr item_pen_function,
  248.                     BOOL disable_move_highlight,
  249.                     BOOL disable_up_select);
  250.     extern BOOL gui_fixed_list_menu_translate_pen_event(
  251.                     fixed_list_menu *m,
  252.                     mmi_pen_event_type_enum pen_event,
  253.                     S16 x,
  254.                     S16 y,
  255.                     gui_list_pen_enum *menu_event);
  256.     extern BOOL gui_fixed_list_menu_translate_pen_position(fixed_list_menu *m, S32 y, S32 *item_index);
  257. #endif /* __MMI_TOUCH_SCREEN__ */ 
  258. #ifdef __MMI_UI_LIST_CACHE_BACKGROUND__
  259.     extern void gui_show_menu_background_in_layer(S32 x1, S32 y1, S32 x2, S32 y2, UI_filled_area *f);
  260. #endif 
  261.     /* UI fixed matrix menu structure               */
  262.     extern UI_fixed_matrix_menu_theme *current_fixed_matrix_menu_theme;
  263. #ifdef __MMI_TOUCH_SCREEN__
  264.     typedef enum
  265.     {
  266.         GUI_MATRIX_PEN_NONE,
  267.         GUI_MATRIX_PEN_HIGHLIGHT_CHANGED,
  268.         GUI_MATRIX_PEN_NEED_REDRAW,
  269.         GUI_MATRIX_PEN_ITEM_SELECTED
  270.     } gui_matrix_pen_enum;
  271.     typedef struct
  272.     {
  273.         S8 pen_on_horizontal_scrollbar;
  274.         S8 pen_on_vertical_scrollbar;
  275.         /* highlighted item is changed between Pen Down and Pen Up */
  276.         S8 highlight_changed;
  277.         /* highlighted item on pen down */
  278.         S32 first_highlighed_item;
  279.     } gui_matrix_pen_state_struct;
  280. #ifdef __MMI_BI_DEGREE_MAIN_MENU_STYLE__
  281. #define MMI_BI_DEGREE_MAIN_MENU_ARROW_IND_SIZE  8
  282. #define MMI_BI_DEGREE_MAIN_MENU_ARROW_BAR_HEIGHT   20
  283. #define MMI_BI_DEGREE_MAIN_MENU_NAVI_BAR_IND_BG_SIZE 20
  284.     typedef struct
  285.     {
  286.         S32 x;
  287.         S32 y;
  288.         S32 width;
  289.         S32 height;
  290.         U8 *string;
  291.         U16 img_id;
  292.     } gui_matrix_ind_area_struct;
  293. #endif /* __MMI_BI_DEGREE_MAIN_MENU_STYLE__ */ 
  294. #endif /* __MMI_TOUCH_SCREEN__ */ 
  295.     typedef struct _fixed_matrix_menu
  296.     {
  297.         S32 x, y;
  298.         S32 width, height;
  299.         UI_filled_area *normal_filler;
  300.         UI_filled_area *focussed_filler;
  301.         U32 flags;
  302.         vertical_scrollbar vbar;
  303.         horizontal_scrollbar hbar;
  304.         S32 n_columns;
  305.         S32 n_rows;
  306.         S32 n_items;
  307.         S32 first_displayed_column;
  308.         S32 first_displayed_row;
  309.         /* MTK Leo add */
  310.         S32 last_hilited_x;
  311.         S32 last_hilited_y;
  312.         /* MTK Leo end */
  313.         S32 displayed_columns;
  314.         S32 displayed_rows;
  315.         S32 highlighted_column;
  316.         S32 highlighted_row;
  317.         S32 highlighted_item;
  318.         S32 item_width;
  319.         S32 item_height;
  320.         /* MTK Leo add */
  321.         S32 last_highlighted_item;
  322.         S32 highlighted_item_width;
  323.         S32 highlighted_item_height;
  324.         /* MTK Leo end */
  325.         void **items;
  326.         void *common_item_data;
  327.         void (*item_unhighlighted) (S32 i);
  328.         void (*item_highlighted) (S32 i);
  329.         void (*item_display_function) (void *item, void *common_item_data, S32 x, S32 y);
  330.         void (*item_measure_function) (void *item, void *common_item_data, S32 *width, S32 *height);
  331.         void (*item_highlight_function) (void *item, void *common_item_data);
  332.         void (*item_remove_highlight_function) (void *item, void *common_item_data);
  333.         void (*item_hide_function) (void *item, void *common_item_data, S32 x, S32 y);
  334.         /* When row number < 0 && UI_MATRIX_MENU_VERTICAL_TRIGGER */
  335.         void (*trigger_top_function) (void);
  336.         /* When row number > max  && UI_MATRIX_MENU_VERTICAL_TRIGGER */
  337.         void (*trigger_bottom_function) (void);
  338.         /* 013105 Calvin added */
  339.         S32 cache_bmp_x1;
  340.         S32 cache_bmp_x2;
  341.         S32 cache_bmp_y1;
  342.         S32 cache_bmp_y2;
  343.         /* Calvin end */
  344.         gdi_image_cache_bmp_struct buffer;
  345.     #ifdef __MMI_TOUCH_SCREEN__
  346.         /* Runtime data */
  347.         gui_matrix_pen_state_struct pen_state;
  348.         /* Configured in associate_fixed_xxx_mtraix */
  349.         void (*pen_event_current_selected_callback_function) (void);
  350.         void (*pen_event_default_selected_callback_function) (void);
  351.     #ifdef __MMI_BI_DEGREE_MAIN_MENU_STYLE__
  352.         gui_matrix_ind_area_struct up_ind_area;
  353.         gui_matrix_ind_area_struct down_ind_area;
  354.     #endif /* __MMI_BI_DEGREE_MAIN_MENU_STYLE__ */ 
  355.     #endif /* __MMI_TOUCH_SCREEN__ */ 
  356.     } fixed_matrix_menu;
  357.     extern void gui_set_fixed_matrix_menu_current_theme(fixed_matrix_menu *m);
  358.     extern void gui_set_fixed_matrix_menu_theme(fixed_matrix_menu *m, UI_fixed_matrix_menu_theme *t);
  359.     extern void gui_create_fixed_matrix_menu(fixed_matrix_menu *m, S32 x, S32 y, S32 width, S32 height);
  360.     extern void gui_fixed_matrix_menu_auto_configure(fixed_matrix_menu *m);
  361.     extern void gui_fixed_matrix_menu_setup(
  362.                     fixed_matrix_menu *m,
  363.                     S32 item_width,
  364.                     S32 item_height,
  365.                     S32 n_columns,
  366.                     S32 n_rows);
  367.     extern void gui_resize_fixed_matrix_menu(fixed_matrix_menu *m, S32 width, S32 height);
  368.     extern void gui_move_fixed_matrix_menu(fixed_matrix_menu *m, S32 x, S32 y);
  369.     extern void gui_fixed_matrix_menu_locate_highlighted_item(fixed_matrix_menu *m);
  370.     extern void gui_fixed_matrix_menu_goto_next_item(fixed_matrix_menu *m);
  371.     extern void gui_fixed_matrix_menu_goto_previous_item(fixed_matrix_menu *m);
  372.     extern void gui_fixed_matrix_menu_goto_previous_row(fixed_matrix_menu *m);
  373.     extern void gui_fixed_matrix_menu_goto_next_row(fixed_matrix_menu *m);
  374.     extern void gui_fixed_matrix_menu_goto_previous_column(fixed_matrix_menu *m);
  375.     extern void gui_fixed_matrix_menu_goto_next_column(fixed_matrix_menu *m);
  376.     extern void gui_fixed_matrix_menu_goto_first_item(fixed_matrix_menu *m);
  377.     extern void gui_fixed_matrix_menu_goto_last_item(fixed_matrix_menu *m);
  378.     extern void gui_fixed_matrix_menu_goto_next_page(fixed_matrix_menu *m);
  379.     extern void gui_fixed_matrix_menu_goto_previous_page(fixed_matrix_menu *m);
  380.     extern void gui_fixed_matrix_menu_goto_item(fixed_matrix_menu *m, S32 i);
  381.     /* MTK Leo add 20040512, for optimize matrix mainmenu */
  382.     extern void mtk_UI_show_fixed_matrix_menu(fixed_matrix_menu *m);
  383.     /* MTK Leo end */
  384. #ifdef __MMI_TOUCH_SCREEN__
  385.     extern BOOL gui_fixed_matrix_menu_translate_pen_event(
  386.                     fixed_matrix_menu *m,
  387.                     mmi_pen_event_type_enum pen_event,
  388.                     S16 x,
  389.                     S16 y,
  390.                     gui_matrix_pen_enum *menu_event);
  391. #endif /* __MMI_TOUCH_SCREEN__ */ 
  392.     extern void gui_show_fixed_matrix_menu(fixed_matrix_menu *m);
  393.     extern void gui_hide_fixed_matrix_menu_highlighted_item(fixed_matrix_menu *m);
  394.     void gui_set_fixed_matrix_menu_item_functions(fixed_matrix_menu *m,
  395.                                                   void (*item_display_function) (void *item, void *common_item_data,
  396.                                                                                  S32 x, S32 y),
  397.                                                   void (*item_measure_function) (void *item, void *common_item_data,
  398.                                                                                  S32 *width, S32 *height),
  399.                                                   void (*item_highlight_function) (void *item, void *common_item_data),
  400.                                                   void (*item_remove_highlight_function) (void *item,
  401.                                                                                           void *common_item_data),
  402.                                                   void (*item_hide_function) (void *item, void *common_item_data, S32 x,
  403.                                                                               S32 y));
  404.     extern void gui_set_fixed_matrix_menu_common_item_data(fixed_matrix_menu *m, void *c);
  405.     /* For Draw Manager  */
  406.     extern void gui_reset_fixed_matrix_col_rows(fixed_matrix_menu *m);
  407.     extern S32 gui_fixed_matrix_auto_disable_scrollbar(fixed_matrix_menu *m);
  408.     /* Dummy functions used by fixed menus */
  409.     extern void UI_fixed_menuitem_dummy_display_function(void *item, void *common_item_data, S32 x, S32 y);
  410.     extern void UI_fixed_menuitem_dummy_hide_function(void *item, void *common_item_data, S32 x, S32 y);
  411.     extern void UI_fixed_menuitem_dummy_measure_function(void *item, void *common_item_data, S32 *width, S32 *height);
  412.     extern void UI_fixed_menuitem_dummy_highlight_function(void *item, void *common_item_data);
  413.     extern void UI_fixed_menuitem_dummy_remove_highlight_function(void *item, void *common_item_data);
  414.     extern void UI_fixed_menuitem_dummy_resize_function(S32 x, S32 y);
  415. #ifdef __MMI_TOUCH_SCREEN__
  416.     extern BOOL UI_fixed_menuitem_dummy_pen_function(
  417.                     void *item,
  418.                     void *common_item_data,
  419.                     S32 item_x,
  420.                     S32 item_y,
  421.                     mmi_pen_event_type_enum pen_event,
  422.                     S16 x,
  423.                     S16 y,
  424.                     gui_list_pen_enum *menuitem_event,
  425.                     gui_pen_event_param_struct *menuitem_param);
  426. #endif /* __MMI_TOUCH_SCREEN__ */ 
  427.     /* 041205 Calvin added */
  428.     extern void gui_set_fixed_menu_bg_id(S32 image_id);
  429.     extern void gui_reset_fiexed_menu_bg_id(void);
  430.     /* Calvin end */
  431.     /* UI drop down control structure   */
  432. #define UI_DROP_DOWN_CONTROL_STATE_NORMAL         0x00000000
  433. #define UI_DROP_DOWN_CONTROL_STATE_FOCUSSED       0x00000001
  434. #define UI_DROP_DOWN_CONTROL_STATE_CLICKED         0x00000002
  435. #define UI_DROP_DOWN_CONTROL_STATE_DISABLED        0x00000004
  436. #define UI_DROP_DOWN_CONTROL_STATE_SELECTED        0x00000008
  437. #define UI_DROP_DOWN_CONTROL_TEXT_LEFT_JUSTIFY     0x00000010
  438. #define UI_DROP_DOWN_CONTROL_TEXT_RIGHT_JUSTIFY    0x00000020
  439. #define UI_DROP_DOWN_CONTROL_TEXT_CENTER_JUSTIFY   0x00000040
  440. #define UI_DROP_DOWN_CONTROL_DISABLE_BACKGROUND    0x00000100
  441. #define UI_DROP_DOWN_CONTROL_DISABLE_DRAW       0x00000200
  442. #define UI_DROP_DOWN_CONTROL_SHOW_BUTTON_ON_FOCUS  0x00000400
  443.     extern UI_drop_down_control_theme *current_drop_down_control_theme;
  444.     typedef struct _drop_down_control
  445.     {
  446.         S32 x, y;
  447.         S32 width, height;
  448.         UI_filled_area *normal_filler;
  449.         UI_filled_area *disabled_filler;
  450.         UI_filled_area *focussed_filler;
  451.         UI_filled_area *clicked_filler;
  452.         color normal_text_color;
  453.         color disabled_text_color;
  454.         color focussed_text_color;
  455.         color clicked_text_color;
  456.         U32 flags;
  457.         UI_string_type text;
  458.         UI_font_type text_font;
  459.         icon_button down_button;
  460.     } drop_down_control;
  461.     extern void gui_set_drop_down_control_current_theme(drop_down_control *o);
  462.     extern void gui_set_drop_down_control_theme(drop_down_control *o, UI_drop_down_control_theme *t);
  463.     extern void gui_create_drop_down_control(drop_down_control *o, S32 x, S32 y, S32 width, S32 height);
  464.     extern void gui_resize_drop_down_control(drop_down_control *o, S32 width, S32 height);
  465.     extern void gui_move_drop_down_control(drop_down_control *o, S32 x, S32 y);
  466.     extern void gui_show_drop_down_control(drop_down_control *o);
  467.     /* UI horizontal select structure   */
  468.     extern UI_horizontal_select_theme *current_horizontal_select_theme;
  469. #ifdef __MMI_TOUCH_SCREEN__
  470.     /* Displacement tolerated on tapping left/right arrows */
  471. #define GUI_HORIZONTAL_SELECT_PEN_VALID_REGION  (5)
  472.     typedef enum
  473.     {
  474.         GUI_HORIZONTAL_SELECT_PEN_NONE,
  475.         GUI_HORIZONTAL_SELECT_PEN_PREV,
  476.         GUI_HORIZONTAL_SELECT_PEN_NEXT
  477.     } gui_horizontal_select_pen_enum;
  478.     typedef struct
  479.     {
  480.         S16 left_region_x, left_region_y;
  481.         S16 left_region_width, left_region_height;
  482.         S16 right_region_x, right_region_y;
  483.         S16 right_region_width, right_region_height;
  484.         S8 pen_down_left_arrow;
  485.         S8 pen_down_right_arrow;
  486.     } gui_horizontal_select_pen_state_struct;
  487. #endif /* __MMI_TOUCH_SCREEN__ */ 
  488.     typedef struct _horizontal_select
  489.     {
  490.         S32 x, y;
  491.         S32 width, height;
  492.         UI_filled_area *background_filler;
  493.         U32 flags;
  494.         S8 left_arrow_pressed;
  495.         S8 right_arrow_pressed;
  496.         PU8 left_arrow_image;
  497.         PU8 right_arrow_image;
  498.         S32 lx, ly;
  499.         S32 rx, ry;
  500.         S32 ix1, iy1, ix2, iy2;
  501.         S32 n_items;
  502.         S32 highlighted_item;
  503.         void **items;
  504.         void *common_item_data;
  505.         /* Clear the background of the whole horizontal selection.
  506.            Usually used together with UI_LIST_MENU_DISABLE_BACKGROUND. */
  507.         void (*clear_background_callback)(S32 x1, S32 y1, S32 x2, S32 y2);
  508.         void (*item_unhighlighted) (S32 i);
  509.         void (*item_highlighted) (S32 i);
  510.         void (*item_display_function) (void *item, void *common_item_data, S32 x, S32 y);
  511.         void (*item_measure_function) (void *item, void *common_item_data, S32 *width, S32 *height);
  512.         void (*item_highlight_function) (void *item, void *common_item_data);
  513.         void (*item_remove_highlight_function) (void *item, void *common_item_data);
  514.         void (*item_hide_function) (void *item, void *common_item_data, S32 x, S32 y);
  515.         void (*item_displayed_callback) (S32 index, S32 x1, S32 y1, S32 x2, S32 y2);
  516.     #ifdef __MMI_TOUCH_SCREEN__
  517.         gui_horizontal_select_pen_state_struct pen_state;
  518.     #endif 
  519.     } horizontal_select;
  520.     extern void gui_set_horizontal_select_current_theme(horizontal_select *m);
  521.     extern void gui_set_horizontal_select_theme(horizontal_select *m, UI_horizontal_select_theme *t);
  522.     extern void gui_create_horizontal_select(horizontal_select *m, S32 x, S32 y, S32 width, S32 height);
  523.     extern void gui_resize_horizontal_select(horizontal_select *m, S32 width, S32 height);
  524.     extern void gui_move_horizontal_select(horizontal_select *m, S32 x, S32 y);
  525.     extern void gui_horizontal_select_goto_item(horizontal_select *m, S32 i);
  526.     extern void gui_horizontal_select_goto_next_item(horizontal_select *m);
  527.     extern void gui_horizontal_select_goto_previous_item(horizontal_select *m);
  528.     extern void gui_horizontal_select_goto_first_item(horizontal_select *m);
  529.     extern void gui_horizontal_select_goto_last_item(horizontal_select *m);
  530.     extern void gui_show_horizontal_select(horizontal_select *m);
  531.     extern void gui_hide_horizontal_select_highlighted_item(horizontal_select *m);
  532.     extern void gui_set_horizontal_select_clear_background_function(
  533.                     horizontal_select *m,
  534.                     void (*clear_bg_function)(S32 x1, S32 y1, S32 x2, S32 y2));
  535.     extern void gui_set_horizontal_select_item_functions(
  536.                     horizontal_select *m,
  537.                     void (*item_display_function) (void *item, void *common_item_data, S32 x, S32 y),
  538.                     void (*item_measure_function) (void *item, void *common_item_data, S32 *width, S32 *height),
  539.                     void (*item_highlight_function) (void *item, void *common_item_data),
  540.                     void (*item_remove_highlight_function) (void *item, void *common_item_data),
  541.                     void (*item_hide_function) (void *item, void *common_item_data, S32 x, S32 y));
  542.     extern void gui_set_horizontal_select_common_item_data(horizontal_select *m, void *c);
  543.     extern void gui_set_horizontal_select_images(horizontal_select *m, PU8 left_arrow, PU8 right_arrow);
  544. #ifdef __MMI_TOUCH_SCREEN__
  545.     extern BOOL gui_horizontal_select_translate_pen_event(
  546.                     horizontal_select *m,
  547.                     mmi_pen_event_type_enum pen_event,
  548.                     S16 x,
  549.                     S16 y,
  550.                     gui_horizontal_select_pen_enum *select_event);
  551. #endif /* __MMI_TOUCH_SCREEN__ */ 
  552. #ifdef __cplusplus
  553. }
  554. #endif 
  555. #endif /* __GUI_FIXED_MENUS_H__ */