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

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.  * wgui_categories_tab.h
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   MAUI
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   This file is intended for tab control categories screen.
  48.  *
  49.  * Author:
  50.  * -------
  51.  * -------
  52.  *
  53.  *============================================================================
  54.  *             HISTORY
  55.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  56.  *------------------------------------------------------------------------------
  57.  * removed!
  58.  *
  59.  * removed!
  60.  * removed!
  61.  * removed!
  62.  *
  63.  * removed!
  64.  * removed!
  65.  * removed!
  66.  *
  67.  *------------------------------------------------------------------------------
  68.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  69.  *============================================================================
  70.  ****************************************************************************/
  71. /*  Include: MMI header file */
  72. #include "MMI_features.h"
  73. #include "gui_config.h"//051106 tab mainmenu
  74. #ifdef __MMI_UI_TAB_PANE__
  75. #include "CustThemesRes.h"
  76. #include "gui_tab.h"
  77. #include "gui.h"
  78. #include "wgui_tab.h"
  79. #include "wgui_categories.h"
  80. /*  Include: PS header file */
  81. /***************************************************************************** 
  82. * Define
  83. *****************************************************************************/
  84. /***************************************************************************** 
  85. * Typedef 
  86. *****************************************************************************/
  87. /***************************************************************************** 
  88. * Local Variable
  89. *****************************************************************************/
  90. /***************************************************************************** 
  91. * Local Function
  92. *****************************************************************************/
  93. /***************************************************************************** 
  94. * Global Variable
  95. *****************************************************************************/
  96. extern FuncPtr backup_exit_func_ptr;
  97. /***************************************************************************** 
  98. * Global Function
  99. *****************************************************************************/
  100. /*****************************************************************************
  101.  * FUNCTION
  102.  *  set_category_default_tab_pane
  103.  * DESCRIPTION
  104.  *  default reset category function for tab pane
  105.  * PARAMETERS
  106.  *  void
  107.  *  a(?)        [IN/OUT]        
  108.  *  b(?)        [IN]            
  109.  * RETURNS
  110.  *  void
  111.  *****************************************************************************/
  112. void set_category_default_tab_pane(void)
  113. {
  114.     /*----------------------------------------------------------------*/
  115.     /* Local Variables                                                */
  116.     /*----------------------------------------------------------------*/
  117.     /*----------------------------------------------------------------*/
  118.     /* Code Body                                                      */
  119.     /*----------------------------------------------------------------*/
  120.     move_tab_pane(0, MMI_title_y);
  121.     MMI_title_y += MMI_tab_height;
  122.     override_menu_shortcut_default_region(MMI_title_x, MMI_title_y, MMI_title_width, MMI_title_height);
  123. }
  124. /*****************************************************************************
  125.  * FUNCTION
  126.  *  reset_category_default_tab_pane
  127.  * DESCRIPTION
  128.  *  default reset category function for tab pane
  129.  * PARAMETERS
  130.  *  void
  131.  *  a(?)        [IN/OUT]        
  132.  *  b(?)        [IN]            
  133.  * RETURNS
  134.  *  void
  135.  *****************************************************************************/
  136. void reset_category_default_tab_pane(void)
  137. {
  138.     /*----------------------------------------------------------------*/
  139.     /* Local Variables                                                */
  140.     /*----------------------------------------------------------------*/
  141.     /*----------------------------------------------------------------*/
  142.     /* Code Body                                                      */
  143.     /*----------------------------------------------------------------*/
  144.     MMI_title_y -= MMI_tab_height;
  145.     override_menu_shortcut_default_region(MMI_title_x, MMI_title_y, MMI_title_width, MMI_title_height);
  146. }
  147. /*****************************************************************************
  148.  * FUNCTION
  149.  *  show_category_two_icon_tab_pane
  150.  * DESCRIPTION
  151.  *  category for two icon tab pane
  152.  * PARAMETERS
  153.  *  void
  154.  *  a(?)        [IN/OUT]        
  155.  *  b(?)        [IN]            
  156.  * RETURNS
  157.  *  void
  158.  *****************************************************************************/
  159. void show_category_two_icon_tab_pane(void)
  160. {
  161.     /*----------------------------------------------------------------*/
  162.     /* Local Variables                                                */
  163.     /*----------------------------------------------------------------*/
  164.     /*----------------------------------------------------------------*/
  165.     /* Code Body                                                      */
  166.     /*----------------------------------------------------------------*/
  167.     enable_tab_pane_display();
  168.     create_and_setup_two_icon_tab_pane();
  169.     set_category_default_tab_pane();
  170.     tab_pane_goto_current_highlighted_item();
  171.     register_tab_pane_keys();
  172.     disable_tab_pane_display();
  173.     set_tab_pane_category_entry_function(set_category_default_tab_pane);
  174.     set_tab_pane_category_exit_function(reset_category_default_tab_pane);
  175. }
  176. /*****************************************************************************
  177.  * FUNCTION
  178.  *  show_category_two_text_tab_pane
  179.  * DESCRIPTION
  180.  *  category for two text tab pane
  181.  * PARAMETERS
  182.  *  void
  183.  *  a(?)        [IN/OUT]        
  184.  *  b(?)        [IN]            
  185.  * RETURNS
  186.  *  void
  187.  *****************************************************************************/
  188. void show_category_two_text_tab_pane(void)
  189. {
  190.     /*----------------------------------------------------------------*/
  191.     /* Local Variables                                                */
  192.     /*----------------------------------------------------------------*/
  193.     /*----------------------------------------------------------------*/
  194.     /* Code Body                                                      */
  195.     /*----------------------------------------------------------------*/
  196.     enable_tab_pane_display();
  197.     create_and_setup_two_text_tab_pane();
  198.     set_category_default_tab_pane();
  199.     tab_pane_goto_current_highlighted_item();
  200.     register_tab_pane_keys();
  201.     disable_tab_pane_display();
  202.     set_tab_pane_category_entry_function(set_category_default_tab_pane);
  203.     set_tab_pane_category_exit_function(reset_category_default_tab_pane);
  204. }
  205. /*****************************************************************************
  206.  * FUNCTION
  207.  *  show_category_four_icon_tab_pane
  208.  * DESCRIPTION
  209.  *  category for four icon tab pane
  210.  * PARAMETERS
  211.  *  void
  212.  *  a(?)        [IN/OUT]        
  213.  *  b(?)        [IN]            
  214.  * RETURNS
  215.  *  void
  216.  *****************************************************************************/
  217. void show_category_four_icon_tab_pane(void)
  218. {
  219.     /*----------------------------------------------------------------*/
  220.     /* Local Variables                                                */
  221.     /*----------------------------------------------------------------*/
  222.     /*----------------------------------------------------------------*/
  223.     /* Code Body                                                      */
  224.     /*----------------------------------------------------------------*/
  225.     enable_tab_pane_display();
  226.     create_and_setup_four_icon_tab_pane();
  227.     set_category_default_tab_pane();
  228.     backup_exit_func_ptr = GetCurrExitFuncPtr();
  229.     tab_pane_goto_current_highlighted_item();
  230.     register_tab_pane_keys();
  231.     disable_tab_pane_display();
  232.     set_tab_pane_category_entry_function(set_category_default_tab_pane);
  233.     set_tab_pane_category_exit_function(reset_category_default_tab_pane);
  234. }
  235. /*****************************************************************************
  236.  * FUNCTION
  237.  *  show_category_three_icon_tab_pane
  238.  * DESCRIPTION
  239.  *  category for three icon tab pane
  240.  * PARAMETERS
  241.  *  void
  242.  *  a(?)        [IN/OUT]        
  243.  *  b(?)        [IN]            
  244.  * RETURNS
  245.  *  void
  246.  *****************************************************************************/
  247. void show_category_three_icon_tab_pane(void)
  248. {
  249.     /*----------------------------------------------------------------*/
  250.     /* Local Variables                                                */
  251.     /*----------------------------------------------------------------*/
  252.     /*----------------------------------------------------------------*/
  253.     /* Code Body                                                      */
  254.     /*----------------------------------------------------------------*/
  255.     enable_tab_pane_display();
  256.     create_and_setup_three_icon_tab_pane();
  257.     set_category_default_tab_pane();
  258.     tab_pane_goto_current_highlighted_item();
  259.     register_tab_pane_keys();
  260.     disable_tab_pane_display();
  261.     set_tab_pane_category_entry_function(set_category_default_tab_pane);
  262.     set_tab_pane_category_exit_function(reset_category_default_tab_pane);
  263. }
  264. /*****************************************************************************
  265.  * FUNCTION
  266.  *  set_category_one_icon_tab_pane
  267.  * DESCRIPTION
  268.  *  category for one icon tab pane
  269.  * PARAMETERS
  270.  *  void
  271.  *  a(?)        [IN/OUT]        
  272.  *  b(?)        [IN]            
  273.  * RETURNS
  274.  *  void
  275.  *****************************************************************************/
  276. UI_filled_area *backup_filler;
  277. UI_filled_area new_title_filler;
  278. S32 title_theme_changed = 0;
  279. void set_category_one_icon_tab_pane(void)
  280. {
  281.     /*----------------------------------------------------------------*/
  282.     /* Local Variables                                                */
  283.     /*----------------------------------------------------------------*/
  284.     /*----------------------------------------------------------------*/
  285.     /* Code Body                                                      */
  286.     /*----------------------------------------------------------------*/
  287.     resize_tab_pane(0, 0);
  288.     /* PMT NEERAJ START 20050616 */
  289. #ifdef __MMI_UI_TITLE_TRANSITION__
  290.     /* PMT VIKAS START 20051209 */
  291. #if(TITLE_TRANSITION_STYLE_NON_BLOCKING)
  292.     enable_title_transition();
  293. #endif 
  294.     /* PMT VIKAS END 20051209 */
  295.     set_title_transition_based_on_keys();
  296. #endif /* __MMI_UI_TITLE_TRANSITION__ */ 
  297.     /* PMT NEERAJ END 20050616 */
  298.     MMI_content_height -= MMI_MENUITEM_HEIGHT;
  299.     MMI_title_height += MMI_MENUITEM_HEIGHT;
  300.     override_menu_shortcut_default_region(MMI_title_x, MMI_title_y, MMI_title_width, MMI_title_height);
  301.     title_theme_changed = 1;
  302.     backup_filler = current_UI_theme->window_title_theme->active_filler;
  303.     new_title_filler = *current_UI_theme->window_title_theme->active_filler;
  304.     new_title_filler.flags &= ~UI_FILLED_AREA_TYPE_BITMAP;
  305.     new_title_filler.flags |=
  306.         UI_FILLED_AREA_TYPE_COLOR | UI_FILLED_AREA_DOUBLE_BORDER | UI_FILLED_AREA_NO_VERTICAL_LINE;
  307.     current_UI_theme->window_title_theme->active_filler = &new_title_filler;
  308.     set_tab_pane_modify_data_function(set_tab_pane_modify_title_icon);
  309.     set_tab_pane_cyclic();
  310. }
  311. /*****************************************************************************
  312.  * FUNCTION
  313.  *  reset_category_one_icon_tab_pane
  314.  * DESCRIPTION
  315.  *  category for one icon tab pane
  316.  * PARAMETERS
  317.  *  void
  318.  *  a(?)        [IN/OUT]        
  319.  *  b(?)        [IN]            
  320.  * RETURNS
  321.  *  void
  322.  *****************************************************************************/
  323. void reset_category_one_icon_tab_pane(void)
  324. {
  325.     /*----------------------------------------------------------------*/
  326.     /* Local Variables                                                */
  327.     /*----------------------------------------------------------------*/
  328.     /*----------------------------------------------------------------*/
  329.     /* Code Body                                                      */
  330.     /*----------------------------------------------------------------*/
  331.     /* PMT NEERAJ START 20050616 */
  332. #ifdef __MMI_UI_TITLE_TRANSITION__
  333.     /* PMT VIKAS START 20051209 */
  334. #if(TITLE_TRANSITION_STYLE_NON_BLOCKING)
  335.     disable_title_transition();
  336. #endif 
  337.     /* PMT VIKAS END 20051209 */
  338.     reset_title_transition();
  339. #endif /* __MMI_UI_TITLE_TRANSITION__ */ 
  340.     /* PMT NEERAJ END 20050616 */
  341.     MMI_content_height += MMI_MENUITEM_HEIGHT;
  342.     MMI_title_height -= MMI_MENUITEM_HEIGHT;
  343.     current_UI_theme->window_title_theme->active_filler = backup_filler;
  344.     title_theme_changed = 0;
  345.     reset_tab_pane_modify_data_function();
  346.     override_menu_shortcut_default_region(MMI_title_x, MMI_title_y, MMI_title_width, MMI_title_height);
  347. }
  348. /*****************************************************************************
  349.  * FUNCTION
  350.  *  show_category_one_icon_tab_pane
  351.  * DESCRIPTION
  352.  *  category for one icon tab pane
  353.  * PARAMETERS
  354.  *  void
  355.  *  a(?)        [IN/OUT]        
  356.  *  b(?)        [IN]            
  357.  * RETURNS
  358.  *  void
  359.  *****************************************************************************/
  360. void show_category_one_icon_tab_pane(void)
  361. {
  362.     /*----------------------------------------------------------------*/
  363.     /* Local Variables                                                */
  364.     /*----------------------------------------------------------------*/
  365.     /*----------------------------------------------------------------*/
  366.     /* Code Body                                                      */
  367.     /*----------------------------------------------------------------*/
  368.     enable_tab_pane_display();
  369.     create_and_setup_one_icon_tab_pane();
  370.     set_category_one_icon_tab_pane();
  371.     tab_pane_goto_current_highlighted_item();
  372.     register_tab_pane_keys();
  373.     disable_tab_pane_display();
  374.     set_tab_pane_category_entry_function(set_category_one_icon_tab_pane);
  375.     set_tab_pane_category_exit_function(reset_category_one_icon_tab_pane);
  376. }
  377. /*****************************************************************************
  378.  * FUNCTION
  379.  *  check_and_set_title_theme_changed
  380.  * DESCRIPTION
  381.  *  
  382.  * PARAMETERS
  383.  *  void
  384.  * RETURNS
  385.  *  void
  386.  *****************************************************************************/
  387. void check_and_set_title_theme_changed(void)
  388. {
  389.     /*----------------------------------------------------------------*/
  390.     /* Local Variables                                                */
  391.     /*----------------------------------------------------------------*/
  392.     /*----------------------------------------------------------------*/
  393.     /* Code Body                                                      */
  394.     /*----------------------------------------------------------------*/
  395.     if (title_theme_changed)
  396.     {
  397.         backup_filler = current_UI_theme->window_title_theme->active_filler;
  398.         new_title_filler = *current_UI_theme->window_title_theme->active_filler;
  399.         new_title_filler.flags &= ~UI_FILLED_AREA_TYPE_BITMAP;
  400.         new_title_filler.flags |=
  401.             UI_FILLED_AREA_TYPE_COLOR | UI_FILLED_AREA_DOUBLE_BORDER | UI_FILLED_AREA_NO_VERTICAL_LINE;
  402.         current_UI_theme->window_title_theme->active_filler = &new_title_filler;
  403.     }
  404. }
  405. /*
  406.  * void redraw_category_vertical_scroll_menu(void)
  407.  * {
  408.  * #if(UI_DOUBLE_BUFFER_SUPPORT)
  409.  * gui_lock_double_buffer();
  410.  * #endif
  411.  * show_tab_pane();
  412.  * #if(UI_DOUBLE_BUFFER_SUPPORT)
  413.  * gui_unlock_double_buffer();
  414.  * gui_BLT_double_buffer(0,0,UI_device_width-1,UI_device_height-1);
  415.  * #endif
  416.  * }
  417.  * 
  418.  * U8*  get_history_category_vertical_scroll_menu(U8* history_buffer)
  419.  * {
  420.  * get_tab_pane_history(history_buffer);
  421.  * return(history_buffer);
  422.  * }
  423.  * 
  424.  * S32 get_history_size_category_vertical_scroll_menu(void)
  425.  * {
  426.  * return(get_tab_pane_history_size());
  427.  * }
  428.  * 
  429.  * void show_category_vertical_scroll_menu(U16 n_items, U16 *str_list,U16 *img_list,
  430.  * U16 hilite, U8 *buffer)
  431.  * {
  432.  * create_four_icontext_tab_pane();
  433.  * move_tab_pane(0,UI_device_height-MMI_softkey_height-MMI_title_height-27);
  434.  * resize_tab_pane(MMI_title_height+27,UI_device_width);
  435.  * set_four_icontext_pane_theme_data();
  436.  * set_tab_pane(n_items,str_list,img_list,hilite);
  437.  * set_tab_pane_category_history(buffer);
  438.  * set_tab_pane_hightlight_function(standard_tab_pane_highlight_function);
  439.  * tab_pane_disable_function_exection();
  440.  * tab_pane_goto_current_highlighted_item();
  441.  * register_tab_pane_keys();
  442.  * RedrawCategoryFunction=redraw_category_vertical_scroll_menu;
  443.  * GetCategoryHistory=get_history_category_vertical_scroll_menu;
  444.  * GetCategoryHistorySize=get_history_size_category_vertical_scroll_menu;
  445.  * redraw_category_vertical_scroll_menu();
  446.  * }
  447.  */
  448. #endif /* __MMI_UI_TAB_PANE__ */