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

MTK

开发平台:

C/C++

  1. /*******************************************************************************
  2. *  Modification Notice:
  3. *  --------------------------
  4. *  This software is modified by MediaTek Inc. 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_calendar.h
  39.  *
  40.  * Project:
  41.  * --------
  42.  *   Maui_Software
  43.  *
  44.  * Description:
  45.  * ------------
  46.  *  calendar related funtions
  47.  *
  48.  * Author:
  49.  * -------
  50.  * -------
  51.  *
  52.  *------------------------------------------------------------------------------
  53.  * $Log$
  54.  *
  55.  * removed!
  56.  * removed!
  57.  * 
  58.  *
  59.  */
  60. /**********************************************************************************
  61.    Filename:      gui_calendar.h
  62.    Author:        manju
  63.    Date Created:  July-07-2003
  64.    Contains:      Contains the calendar control
  65.    Remarks:    Currently not portable
  66. **********************************************************************************/
  67. #include "MMI_features.h"
  68. #include "gui.h"
  69. #ifndef __GUI_CALENDAR_H__
  70. #define __GUI_CALENDAR_H__
  71. #ifdef __cplusplus
  72. extern "C"
  73. {
  74. #endif /* __cplusplus */ 
  75. #ifdef __MMI_TOUCH_SCREEN__
  76. #include "kal_non_specific_general_types.h"
  77. #include "TouchScreenGprot.h"
  78.     typedef enum
  79.     {
  80.         // TODO: some events are useless
  81.         GUI_CALENDAR_PEN_NONE,
  82.         GUI_CALENDAR_PEN_HIGHLIGHT_CHANGED,
  83.         GUI_CALENDAR_PEN_NEED_REDRAW,
  84.         GUI_CALENDAR_PEN_ITEM_SELECTED
  85.     } gui_calendar_pen_enum;
  86. #endif /* __MMI_TOUCH_SCREEN__ */ 
  87. #define ENABLE_CALENDAR_CONTROL     1
  88. #if(ENABLE_CALENDAR_CONTROL)
  89.     /* Externals used by the calendar            */
  90.     extern void _show_bitmap(S32 x1, S32 y1, bitmap *b);
  91.     extern void _get_bitmap(S32 x1, S32 y1, S32 x2, S32 y2, bitmap *b);
  92.     /* Internal flags used by calendar control      */
  93. #define MAX_CALENDAR_DAYS           32
  94. #define CALENDAR_SUNDAY             0
  95. #define  CALENDAR_MONDAY               1
  96. #define CALENDAR_TUESDAY            2
  97. #define CALENDAR_WEDNESDAY          3
  98. #define CALENDAR_THURSDAY           4
  99. #define CALENDAR_FRIDAY             5
  100. #define CALENDAR_SATURDAY           6
  101. #define CALENDAR_WEEK_START            CALENDAR_SUNDAY
  102. #define CALENDAR_WEEK_END           CALENDAR_SATURDAY
  103.     /* Flags used by the list of items (days)    */
  104. #define  CALENDAR_NORMAL_DAY           0x00
  105. #define CALENDAR_TASK_DAY           0x01
  106. #define CALENDAR_CURRENT_DAY        0x02
  107. #define CALENDAR_SPECIAL_DAY1       0x03
  108. #define CALENDAR_SPECIAL_DAY2       0x04
  109. #define CALENDAR_SPECIAL_DAY3       0x05
  110. #define CALENDAR_SPECIAL_DAY4       0x06
  111. #define CALENDAR_POPUP_DAY          0x80
  112.     /* Flags used by the calendar control        */
  113. #define CALENDAR_HIGHLIGHT_BACKUP      0x00000001
  114. #define CALENDAR_POPUP_BACKUP       0x00000002
  115. #define CALENDAR_ENABLE_POPUP       0x00000004
  116. #define CALENDAR_HIDE_POPUP            0x00000008
  117. #define CALENDAR_SHOW_INFO_BOX            0x00000010
  118.     /* Theme structure for the calendar control  */
  119.     typedef struct _calendar_theme
  120.     {
  121.         UI_font_type text_font;
  122.         color normal_day_text_color;
  123.         color task_day_text_color;
  124.         color current_day_text_color;
  125.         color selected_day_text_color;
  126.         color week_start_day_text_color;
  127.         color week_end_day_text_color;
  128.         color special1_day_text_color;
  129.         color special2_day_text_color;
  130.         color special3_day_text_color;
  131.         color special4_day_text_color;
  132.         UI_filled_area *blank_day_filler;
  133.         UI_filled_area *normal_day_filler;
  134.         UI_filled_area *task_day_filler;
  135.         UI_filled_area *current_day_filler;
  136.         UI_filled_area *selected_day_filler;
  137.         UI_filled_area *week_start_day_filler;
  138.         UI_filled_area *week_end_day_filler;
  139.         UI_filled_area *special1_day_filler;
  140.         UI_filled_area *special2_day_filler;
  141.         UI_filled_area *special3_day_filler;
  142.         UI_filled_area *special4_day_filler;
  143.     } calendar_theme;
  144.     /* calendar control structure             */
  145.     typedef struct _calendar_control
  146.     {
  147.         S32 x, y, x1, y1, x2, y2;
  148.         S32 px1, py1, px2, py2;
  149.         S32 cell_width, cell_height;
  150.         S32 n_rows, n_columns;
  151.         S32 start_column, end_column;
  152.         S32 first_item, last_item;
  153.         S32 highlighted_item;
  154.         U32 flags;
  155.         calendar_theme *theme;
  156.         void (*month_previous_day_function) (void);
  157.         void (*month_next_day_function) (void);
  158.         void (*month_previous_week_function) (void);
  159.         void (*month_next_week_function) (void);
  160.     #ifdef __MMI_TOUCH_SCREEN__
  161.         void (*previous_month_function) (void);
  162.         void (*next_month_function) (void);
  163.     #ifdef __MMI_UI_CALENDAR_WITH_INFO_BOX__
  164.         void (*previous_year_function) (void);
  165.         void (*next_year_function) (void);
  166.     #endif /* __MMI_UI_CALENDAR_WITH_INFO_BOX__ */ 
  167.     #endif /* __MMI_TOUCH_SCREEN__ */ 
  168.         void (*popuptitle_lunarcalendar) (U8 u1, U8 u2, U8 u3, U8 u4);
  169.         void (*draw_background_function) (S32 x1, S32 y1, S32 x2, S32 y2);
  170.         void (*item_unhighlighted_function) (S32 index);
  171.         void (*item_highlighted_function) (S32 index);
  172.         void (*display_popup) (S32 day, S32 *x1, S32 *y1, S32 *x2, S32 *y2);
  173.     #ifdef __MMI_UI_CALENDAR_WITH_INFO_BOX__
  174.         /* set by draw manager */
  175.         S32 info_x1, info_y1, info_x2, info_y2;
  176.         S32 max_n_info;
  177.         /* set by application */
  178.         S32 n_info;
  179.         U16 *icon_list;
  180.         U8 **description_list;
  181.         void (*update_info_box) (S32 *p_n_info, U16 **p_icon_list, U8 ***p_description_list);
  182.     #endif /* __MMI_UI_CALENDAR_WITH_INFO_BOX__ */ 
  183.         bitmap cursor_save_bitmap;
  184.         bitmap popup_save_bitmap;
  185.         U8 *list_of_items;
  186.     #ifdef __MMI_TOUCH_SCREEN__
  187.         S32 pen_down_on_highlighted_item;
  188.     #endif 
  189.     } calendar_control;
  190.     extern void gui_create_calendar(
  191.                     calendar_control *c,
  192.                     S32 x,
  193.                     S32 y,
  194.                     S32 n_columns,
  195.                     S32 n_rows,
  196.                     S32 cell_width,
  197.                     S32 cell_height);
  198.     void gui_set_calendar_background_function(calendar_control *c, void (*f) (S32 x1, S32 y1, S32 x2, S32 y2));
  199.     extern void gui_set_calendar_days(calendar_control *c, S32 first_dow, S32 last_day, U8 *list_of_items);
  200.     extern void gui_show_calendar(calendar_control *c);
  201.     extern void gui_calendar_refresh_highlight(
  202.                     calendar_control *c,
  203.                     S32 old_highlighted_item,
  204.                     S32 new_highlighted_item);
  205.     extern void gui_calendar_highlight_day(calendar_control *c, S32 day);
  206.     extern void gui_calendar_previous_day(calendar_control *c);
  207.     extern void gui_calendar_next_day(calendar_control *c);
  208.     extern void gui_calendar_next_row(calendar_control *c);
  209.     extern void gui_calendar_previous_row(calendar_control *c);
  210.     extern void gui_move_calendar(calendar_control *c, S32 x, S32 y);
  211. #ifdef __MMI_UI_CALENDAR_WITH_INFO_BOX__
  212.     extern void gui_calendar_draw_info_box(calendar_control *c);
  213. #endif 
  214. #ifdef __MMI_TOUCH_SCREEN__
  215.     extern void gui_calendar_go_to_day(calendar_control *c, U8 index);
  216.     extern BOOL gui_calendar_translate_pen_event(
  217.                     calendar_control *c,
  218.                     mmi_pen_event_type_enum pen_event,
  219.                     S16 x,
  220.                     S16 y,
  221.                     gui_calendar_pen_enum *calendar_event);
  222.     extern void gui_calendar_translate_pen_position(calendar_control *c, S32 x, S32 y, S32 *item_index);
  223. #endif /* __MMI_TOUCH_SCREEN__ */ 
  224. #endif /* (ENABLE_CALENDAR_CONTROL) */ 
  225. #ifdef __cplusplus
  226. }
  227. #endif 
  228. #endif /* __GUI_CALENDAR_H__ */