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

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.  * Filename:
  37.  * ---------
  38.  *   gui_tab_bars.h
  39.  *
  40.  * Project:
  41.  * --------
  42.  *   MAUI
  43.  *
  44.  * Description:
  45.  * ------------
  46.  *   Tab Bar - UI component
  47.  *
  48.  * Author:
  49.  * -------
  50.  * -------
  51.  *
  52.  *==============================================================================
  53.  *             HISTORY
  54.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  55.  *------------------------------------------------------------------------------
  56.  * removed!
  57.  *
  58.  *------------------------------------------------------------------------------
  59.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  60.  *==============================================================================
  61.  *******************************************************************************/
  62. #ifndef _GUI_TAB_BARS_H
  63. #define _GUI_TAB_BARS_H
  64. #include "gui.h"
  65. #include "gui_theme_struct.h"
  66. #include "gui_buttons.h"
  67. #ifdef __MMI_TOUCH_SCREEN__
  68. #include "kal_non_specific_general_types.h"
  69. #include "TouchScreenGprot.h"
  70. #endif /* __MMI_TOUCH_SCREEN__ */ 
  71. /***************************************************************************** 
  72. * Define
  73. *****************************************************************************/
  74. /* Flags of tab_bar_item_type.flags */
  75. #define UI_TAB_BAR_ITEM_STATE_NORMAL         0x00000000
  76. #define UI_TAB_BAR_ITEM_STATE_BLINKING       0x00000001
  77. /* Flags of horizontal_tab_bar.flags */
  78. #define UI_TAB_BAR_DISABLE_DRAW                       0x00000001
  79. #define UI_TAB_BAR_LOOP                               0x00000002
  80. #define UI_TAB_BAR_BLINKING_DISPLAYED                 0x00000004
  81. /* Disable pen control on tab bars in certain cases */
  82. #define UI_TAB_BAR_DISABLE_PEN                        0x00000008
  83. /***************************************************************************** 
  84. * Typedef 
  85. *****************************************************************************/
  86. typedef struct _tab_bar_item_type
  87. {
  88.     PU8 icon;
  89.     UI_string_type text;
  90.     U32 flags;
  91. } tab_bar_item_type;
  92. #ifdef __MMI_TOUCH_SCREEN__
  93. typedef enum
  94. {
  95.     GUI_TAB_BAR_PEN_NONE,
  96.     GUI_TAB_BAR_PEN_NEED_REDRAW,
  97.     GUI_TAB_BAR_PEN_JUMP_TO_I
  98. } gui_tab_bar_pen_enum;
  99. typedef struct
  100. {
  101.     S16 left_button_x, left_button_y;
  102.     S16 left_button_width, left_button_height;
  103.     S16 right_button_x, right_button_y;
  104.     S16 right_button_width, right_button_height;
  105.     S8 pen_down_left_button;
  106.     S8 pen_down_right_button;
  107.     /* focused item is changed between Pen Down and Pen Up */
  108.     S8 focus_changed;
  109.     S32 pen_down_tab_item_index;
  110. } gui_tab_bar_pen_state_struct;
  111. #endif /* __MMI_TOUCH_SCREEN__ */ 
  112. typedef struct _horizontal_tab_bar
  113. {
  114.     S16 x, y;
  115.     S16 width, height;
  116.     U32 flags;
  117.     UI_string_type hint;
  118.     S8 n_items;
  119.     S8 focused_item;
  120.     tab_bar_item_type *items;
  121.     /* first item displayed */
  122.     S8 first_displayed_item;
  123.     /* last item displayed */
  124.     S8 last_displayed_item;
  125.     /* the maximum number of tab items that can be displayed at the same time */
  126.     S8 n_displayable_item;
  127.     /* the number of tab items to display ahead when rotating the tab items. */
  128.     S8 n_item_ahead;
  129.     /* width of non-focused tab */
  130.     S16 tab_width;
  131.     S16 tab_height;
  132.     /* width of focused tab */
  133.     S16 focused_tab_width;
  134.     S16 focused_tab_height;
  135.     /* height of the tab area */
  136.     S16 tab_area_height;
  137.     /* height of the hint area */
  138.     S16 hint_area_height;
  139.     /* Left & right button */
  140.     S8 left_button_pressed;
  141.     S8 right_button_pressed;
  142.     /* Icon/text position inside a tab item */
  143.     S16 tab_icon_x, tab_icon_y; /* deprecated */
  144.     S16 tab_text_x, tab_text_y, tab_text_width;
  145.     UI_horizontal_tab_bar_theme *theme;
  146. #ifdef __MMI_TOUCH_SCREEN__
  147.     /* Used by gui_horizontal_tab_bar_translate_pen_event() */
  148.     gui_tab_bar_pen_state_struct pen_state;
  149. #endif /* __MMI_TOUCH_SCREEN__ */ 
  150. } horizontal_tab_bar;
  151. /***************************************************************************** 
  152. * Extern Global Variable
  153. *****************************************************************************/
  154. extern UI_horizontal_tab_bar_theme *current_horizontal_tab_bar_theme;
  155. /***************************************************************************** 
  156. * Extern Global Function
  157. *****************************************************************************/
  158. /* Horizontal tab bar - Basic UI conponent interface */
  159. extern void gui_set_horizontal_tab_bar_current_theme(horizontal_tab_bar *tb);
  160. extern void gui_set_horizontal_tab_bar_theme(horizontal_tab_bar *tb, UI_horizontal_tab_bar_theme *t);
  161. extern void gui_create_horizontal_tab_bar(
  162.                 horizontal_tab_bar *tb,
  163.                 S32 x,
  164.                 S32 y,
  165.                 S16 width,
  166.                 S16 tab_area_height,
  167.                 S16 hint_area_height,
  168.                 S16 tab_width,
  169.                 S16 focused_tab_width,
  170.                 UI_string_type hint,
  171.                 S8 n_item,
  172.                 S8 focused_item,
  173.                 tab_bar_item_type *items);
  174. extern void gui_resize_horizontal_tab_bar(
  175.                 horizontal_tab_bar *tb,
  176.                 S16 width,
  177.                 S16 tab_area_height,
  178.                 S16 hint_area_height);
  179. extern void gui_move_horizontal_tab_bar(horizontal_tab_bar *tb, S32 x, S32 y);
  180. extern void gui_show_horizontal_tab_bar(horizontal_tab_bar *tb, BOOL disable_tab_area, BOOL disable_hint_area);
  181. #ifdef __MMI_TOUCH_SCREEN__
  182. extern BOOL gui_horizontal_tab_bar_translate_pen_event(
  183.                 horizontal_tab_bar *tb,
  184.                 mmi_pen_event_type_enum pen_event,
  185.                 S16 x,
  186.                 S16 y,
  187.                 gui_tab_bar_pen_enum *tab_event,
  188.                 gui_pen_event_param_struct *tab_event_param);
  189. #endif /* __MMI_TOUCH_SCREEN__ */ 
  190. /* Horizontal tab bar - Attributes */
  191. extern void gui_horizontal_tab_bar_set_icon_position(horizontal_tab_bar *tb, S16 x, S16 y);
  192. extern void gui_horizontal_tab_bar_set_text_position(horizontal_tab_bar *tb, S16 x, S16 y, S16 width);
  193. extern void gui_horizontal_tab_bar_set_blinking(horizontal_tab_bar *tb, S8 index);
  194. extern void gui_horizontal_tab_bar_unset_blinking(horizontal_tab_bar *tb, S8 index);
  195. extern BOOL gui_set_horizontal_tab_bar_display_range(horizontal_tab_bar *tb, S32 first_displayed_item);
  196. /* Horizontal tab bar - Navigation */
  197. extern void gui_horizontal_tab_bar_focus_item(horizontal_tab_bar *tb, S8 index);
  198. extern void gui_horizontal_tab_bar_focus_next_item(horizontal_tab_bar *tb);
  199. extern void gui_horizontal_tab_bar_focus_prev_item(horizontal_tab_bar *tb);
  200. extern void gui_horizontal_tab_bar_focus_first_item(horizontal_tab_bar *tb);
  201. extern void gui_horizontal_tab_bar_focus_last_item(horizontal_tab_bar *tb);
  202. extern BOOL gui_horizontal_tab_bar_is_item_displayed(horizontal_tab_bar *tb, int index);
  203. /* Horizontal tab bar - Blinking */
  204. extern void gui_horizontal_tab_bar_start_blinking(horizontal_tab_bar *tb);
  205. extern void gui_horizontal_tab_bar_stop_blinking(horizontal_tab_bar *tb);
  206. /* Tab item */
  207. extern void gui_setup_tab_item(tab_bar_item_type *item, PU8 icon, UI_string_type text, MMI_BOOL enable_blinking);
  208. #endif /* _GUI_TAB_BARS_H */