📄 jui_widget.c
字号:
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
/*************************************************************************
* Include header files
*************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
/*************************************************************************
* MTK include header files
*************************************************************************/
#include "kal_release.h"
#include "staticGraphics.h"
#include "lcd_sw.h"
#include "lcd_if.h"
#include "gui.h"
#include "wgui_categories.h"
#include "wgui_status_icons.h"
#include "wgui_softkeys.h"
#include "wgui_categories_util.h"//021007 Java title
#include "jam_msg_handler.h"
#include "settingprofile.h"
#include "statusiconres.h"
#include "jal.h"
#include "jui_internal.h"
#include "jvm_adaptor.h"
#include "jam_internal.h"
#include "jma_internal.h"
#include "ScrMemMgrGprot.h"
#include "j2me_custom_option.h"
#include "Resource_audio.h"
#ifdef SUPPORT_MMAPI
#include "lcd_if.h"
#include "gdi_include.h"
#endif /* SUPPORT_MMAPI */
#include "mdi_datatype.h"
#include "mdi_audio.h"
#include "mdi_include.h"
/*************************************************************************
* Definition
*************************************************************************/
#define JUI_MAX_SOFTKEYS 2
#define JUI_SOFTKEY_STR_BUF 32
#define BOTTOM_BAR_HEIGHT MMI_button_bar_height
#define SOFTBUTTON_WIDTH MMI_softkey_width
/*************************************************************************
* external Function
*************************************************************************/
/* extern void checkEventOver(void); */
extern void jvm_check_event_over(void);
extern void mdi_audio_suspend_background_play(void);
extern void mdi_audio_set_volume(U8 type, U8 volume);
extern void mdi_audio_set_mute(U8 vol_type, BOOL mute);
extern void mdi_audio_resume_background_play(void);
extern void jui_widget_layer_set_position(GDI_HANDLE act_layer);
kal_bool jui_widget_obj_show_status(jui_obj_type_enum obj);
kal_bool jui_widget_override_mode_setting(jui_obj_type_enum obj, kal_bool display_status);
#if defined (MMI_SHOW_STATUS_ICON_IN_TITLE)
extern void gui_title_oem_show_normal_ex(void);
#endif
/*************************************************************************
* External Variable
*************************************************************************/
extern icontext_button MMI_softkeys[WGUI_MAX_SOFTKEYS];
extern gdi_layer_struct *gdi_act_layer;
extern kal_int32 UI_device_width;
extern kal_int32 UI_device_height;
extern kal_int32 MMI_button_bar_height;
extern MMI_BOOL g_wgui_status_bar_integrated_disabled;
extern kal_mutexid J2ME_lcd_mutex;
/*************************************************************************
* Global Variable
*************************************************************************/
kal_uint8 jui_softkey_label[JUI_MAX_SOFTKEYS][JUI_SOFTKEY_STR_BUF];
kal_uint32 jui_show_connect_icon_cnt = 0;
kal_uint16 jui_title_buffer[(JUI_MAX_TITLE_LENGTH + 1)];
kal_bool jui_is_text_scrolling;
kal_bool jui_is_hide_status_icon = KAL_FALSE;
kal_uint16 *jui_lcd_buffer = NULL;
kal_uint16 *jui_icon_lcd_buffer = NULL;
kal_int32 jui_lcd_buffer_size;
gdi_handle jui_layer_handle = GDI_LAYER_EMPTY_HANDLE;
gdi_handle jui_icon_layer_handle = GDI_LAYER_EMPTY_HANDLE;
kal_int32 jui_icon_layer_buffer_size = 0;
/* status bar + title */
gdi_handle jui_status_icon_layer_handle = GDI_LAYER_EMPTY_HANDLE;//021007 Java title
gdi_handle jui_soft_button_layer_handle = GDI_LAYER_EMPTY_HANDLE;
gdi_handle jui_icon_layer_blt_handle = GDI_LAYER_EMPTY_HANDLE;
kal_int32 jui_softbutton1_char_count = -1;
kal_int32 jui_softbutton2_char_count = -1;
kal_bool jui_set_blt_status_icon = KAL_FALSE;
gdi_handle jui_hardware_layer_handle = 0;
static kal_uint32 jui_hardware_layer_blt_index = GDI_LAYER_ENABLE_LAYER_1;
#ifdef __JUI_USE_DOUBLE_BUFFER_LAYER__
kal_uint16 *jui_lcd_buffer_double = NULL;
gdi_handle jui_blt_handle = GDI_LAYER_EMPTY_HANDLE;
kal_bool jui_double_buffer_activated = KAL_FALSE;
#endif
kal_bool jui_title_is_shown = KAL_FALSE;
kal_int32 jui_title_offset = 0;
#ifdef J2ME_SUPPORT_BACKGROUND
kal_bool jui_bg_vm_audio = KAL_FALSE;
#endif
#if defined (__MMI_MAINLCD_128X128__) || defined (__MMI_MAINLCD_128X160__) || defined (MMI_SHOW_STATUS_ICON_IN_TITLE)
kal_uint8 jui_widget_default_screen_setting[JUI_SCREEN_MODE_END] =
{
6, /* NORMAL SCREEN MODE, 00000110 */
2 /* FULL SCREEN MODE, 00000010 */
};
#else
kal_uint8 jui_widget_default_screen_setting[JUI_SCREEN_MODE_END] =
{
7, /* NORMAL SCREEN MODE, 00000111 */
2 /* FULL SCREEN MODE, 00000010 */
};
#endif
kal_uint8 jui_widget_available_screen_setting = 1;
kal_uint32 jui_widget_act_mode_idx = JUI_SCREEN_MODE_FULL;
static kal_uint8 jui_widget_is_normal_mode_blt_layer_set = 0;
kal_int32 jui_ui_device_width = 0;
kal_int32 jui_ui_device_height = 0;
/* this variable is used to see if the screen displayable object has been changed and the soft button
must be modified no metter the content of the soft button is the same with the previous one or not.
The variable is set by Java_com_sun_midp_lcdui_DefaultEventHandler_updateCommandSet in defaultLCDUI.c */
/* JAL should not care about Java Level behavior */
/* extern kal_bool isCommandMustUpdate; */
#if COMPILER_SUPPORTS_LONG
kal_uint64 latestNITime = 0;
#define NET_INDICATOR_DELAY 2500 /* 2.5 seconds */
#else /* COMPILER_SUPPORTS_LONG */
kal_uint64 latestNITime = {0, 0};
#if BIG_ENDIAN
kal_uint64 NET_INDICATOR_DELAY = {0, 2500};
#else
kal_uint64 NET_INDICATOR_DELAY = {2500, 0};
#endif
#endif /* COMPILER_SUPPORTS_LONG */
/*
* jui_mutex_lock is a mutex that can be re-enter.
* We afarid that VM would be suspend when it hold jui_lcd_mutex
* on second entering. That will cause dead lock.
* ( jvm_screen_owner true at first, but false at second )
*
* Therefore, jvm_screen_owner must be protected by
* jui_lcd_mutex_lock also
*
* => ( jvm_screen_owner true at first, can not change until
* java task release jui_lcd_mutex. )
*
*/
#define JAL_LOCK_MUTEX \
jui_lcd_mutex_lock(); \
if(!jvm_is_own_screen()){\
jui_lcd_mutex_unlock();\
return;\
}
#define JAL_UNLOCK_MUTEX \
jui_lcd_mutex_unlock();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -