📄 plxbrow.c
字号:
/****************************************************************************
* Function MenuViewCurrFocusPage
* Purpose
* Params
* Return
* Remarks
\****************************************************************************/
#ifdef __PLXBROW_KEYENTER_NOSUPPORT_
static void MenuViewCurrFocusPage(void)
{
int vKey = WBKEY_F5;
int nType;
int flag = 0;
if(NULL == plxBrowInfo.hBrow)
return;
nType = PWBE_GetCurFocusType(plxBrowInfo.hBrow);
if(WBFOCUS_SELECT == nType || WBFOCUS_EDIT == nType)
flag = 1;
if(0 == flag)
GoBackHistory();
PWBE_ProcessEvent(plxBrowInfo.hBrow, WBET_KEYDOWN, vKey, 0);
if(1 == flag)
{
DeleteScreenIfPresent(SCR_ID_PLX_BROW_MENU);
}
}
#endif
/****************************************************************************
* Function MenuOpenHomePage
* Purpose when menu item homepage confirmed
* Params
* Return
* Remarks
\****************************************************************************/
static void MenuOpenHomePage(void){
GoBackHistory();
// OpenHomePage();
PlxBrowOpenWebPage((char*)PlxBrowGetHomepage());
}
/****************************************************************************
* Function MenuRefreshCurPage
* Purpose when menu item refresh confirmed
* Params
* Return
* Remarks
\****************************************************************************/
static void MenuRefreshCurPage(void){
GoBackHistory();
PWBE_Refresh(plxBrowInfo.hBrow);
}
/****************************************************************************
* Function MenuGoBack
* Purpose browser menu back item hilight handler
* Params
* Return
* Remarks
\****************************************************************************/
static void MenuGoBack(void){
#ifndef __PLXBROW_RSK_PREVPAGE_
GoBackHistory();
#endif
PWBE_PrevPage(plxBrowInfo.hBrow);
}
/****************************************************************************
* Function MenuStop
* Purpose browser menu stop item hilight handler
* Params
* Return
* Remarks
\****************************************************************************/
static void MenuStop(void){
GoBackHistory();
PWBE_Stop(plxBrowInfo.hBrow);
}
/****************************************************************************
* Function rePaintBrowser
* Purpose when the browse need paint, call this
* Params
* Return
* Remarks
\****************************************************************************/
static void rePaintBrowser(void){
WB_PAGEINFO pageInfo;
WB_RECT rcPt;
WB_SBSTATE iScrollShow;
#ifdef __PLXBROW_LOGO_NOSCROLL_
if(0 == plxBrowInfo.bShowLogo)
#endif
{
//set horizontal scrollbar
PWBE_GetPageInfo(plxBrowInfo.hBrow, WBSBT_HORZ, &pageInfo);
#ifdef __PLXBROW_DYNCSHOW_HSCROLL_
if(pageInfo.nMax > pageInfo.nPage )
iScrollShow = WBSBS_ENABLE;
else
iScrollShow = WBSBS_DISABLE;
#else
iScrollShow = WBSBS_ENABLE;
#endif
PWBCBSetScrollPosProc(0, WBSBT_HORZ, &pageInfo, iScrollShow);
//set vertical scrollbar
PWBE_GetPageInfo(plxBrowInfo.hBrow, WBSBT_VERT, &pageInfo);
#ifdef __PLXBROW_DYNCSHOW_VSCROLL_
if(pageInfo.nMax > pageInfo.nPage )
iScrollShow = WBSBS_ENABLE;
else
iScrollShow = WBSBS_DISABLE;
#else
iScrollShow = WBSBS_ENABLE;
#endif
PWBCBSetScrollPosProc(0, WBSBT_VERT, &pageInfo, iScrollShow);
}
rcPt.left = rcPt.top = 0;
rcPt.right = plxBrowInfo.rcInScreen.right - plxBrowInfo.rcInScreen.left;
rcPt.bottom = plxBrowInfo.rcInScreen.bottom - plxBrowInfo.rcInScreen.top;
PWBCBBeginDisplay(0, 0);
PWBE_RefreshPaint(plxBrowInfo.hBrow, &rcPt);
PWBCBEndDisplay(0);
PWBDrawStatusBar(&plxBrowInfo.rcStatusBar, plxBrowInfo.curStatusStr);
}
/****************************************************************************
* Function PWBProcessKeyEvent
* Purpose receive & deal with keypad event
* Params
* Return
* Remarks
\****************************************************************************/
static void PWBProcessKeyEvent(){
U16 keyCode, keyType;
WB_VKEY vKey;
GetkeyInfo(&keyCode, &keyType);
switch(keyCode) {
case KEY_UP_ARROW:
vKey = WBKEY_UP;
#ifdef __PLXBROW_UPDOWNKEY_TO_SWITCHPAGE_
if(KEY_EVENT_DOWN == keyType)
PWBE_ProcessEvent(plxBrowInfo.hBrow,WBET_KEYDOWN, WBKEY_PAGEUP, 0);
return;
#endif
break;
case KEY_DOWN_ARROW:
vKey = WBKEY_DOWN;
#ifdef __PLXBROW_UPDOWNKEY_TO_SWITCHPAGE_
if(KEY_EVENT_DOWN == keyType)
PWBE_ProcessEvent(plxBrowInfo.hBrow,WBET_KEYDOWN, WBKEY_PAGEDOWN, 0);
return;
#endif
break;
case KEY_LEFT_ARROW:
vKey = WBKEY_LEFT;
break;
case KEY_RIGHT_ARROW:
vKey = WBKEY_RIGHT;
break;
case KEY_VOL_UP:
vKey = WBKEY_UP;
#ifdef __PLXBROW_VOLKEY_TO_SWITCHPAGE_
if(KEY_EVENT_DOWN == keyType)
PWBE_ProcessEvent(plxBrowInfo.hBrow,WBET_VERTSCROLL, WBKEY_PAGEUP, 0);
return;
#endif
break;
case KEY_VOL_DOWN:
vKey = WBKEY_DOWN;
#ifdef __PLXBROW_VOLKEY_TO_SWITCHPAGE_
if(KEY_EVENT_DOWN == keyType)
PWBE_ProcessEvent(plxBrowInfo.hBrow,WBET_VERTSCROLL, WBKEY_PAGEDOWN, 0);
return;
#endif
break;
case KEY_ENTER:
vKey = WBKEY_F5;
break;
#ifdef __PLXBROW_SUPPORT_VOLENTER_KEY_
case PBKEY_VOL_ENTER:
vKey = WBKEY_F5;
break;
#endif
default:
return;
}
if (KEY_EVENT_UP == keyType) {
//key up
PWBE_ProcessEvent(plxBrowInfo.hBrow, WBET_KEYUP, vKey, 0);
}
else if(KEY_EVENT_DOWN == keyType){
//key down
PWBE_ProcessEvent(plxBrowInfo.hBrow, WBET_KEYDOWN, vKey, 0);
}
}
/****************************************************************************
* Function PWBProcessCharEvent
* Purpose receive & deal with input event
* Params
* Return
* Remarks
\****************************************************************************/
static void PWBProcessCharEvent(){
U16 keyCode;
U16 keyType;
char strCode;
GetkeyInfo(&keyCode, &keyType);
if(KEY_EVENT_DOWN != keyType)
return;
switch(keyCode)
{
case KEY_0:
case KEY_1:
case KEY_2:
case KEY_3:
case KEY_4:
case KEY_5:
case KEY_6:
case KEY_7:
case KEY_8:
case KEY_9:
strCode = '0' + keyCode - KEY_0;
break;
case KEY_STAR:
strCode = '*';
break;
case KEY_POUND:
strCode = '#';
break;
default:
return;
}
PWBE_ProcessEvent(plxBrowInfo.hBrow, WBET_CHAR, (char)strCode, 0);
}
/*******************************************************************************/
// Modify for MTK Emu problem
/****************************************************************************
* Function testPaintEmu
* Purpose repaint screen in emu
* Params
* Return
* Remarks
\****************************************************************************/
void testPaintEmu(void){
// pixtel_UI_BLT_double_buffer(0, 0, 172, 220);
pixtel_UI_BLT_double_buffer(0, 0, UI_DEVICE_WIDTH, UI_DEVICE_HEIGHT);
}
/****************************************************************************
* Function DrawSpaceInScrollBars
* Purpose draw the space between horizonal and vertical scrollbars while two of scrollbars are showing
* Params
* Return
* Remarks
\****************************************************************************/
void DrawSpaceInScrollBars(void)
{
#if !(defined (__PLXBROW_DISABLE_VSCROLL_) || defined(__PLXBROW_DISABLE_HSCROLL_))
WB_RECT rcSpace ;
int bar_height;
int nHScrollWidth;
int nVScrollWidth;
#ifdef __PLXBROW_LOGO_NOSCROLL_
if(plxBrowInfo.bShowLogo)
return;
#endif //__PLXBROW_LOGO_NOSCROLL_
bar_height = GetBrowserStatusBarHeight();
nHScrollWidth = GetBrowserHScrollWidth();
nVScrollWidth = GetBrowserVScrollWidth();
rcSpace.left = MMI_content_width - (nVScrollWidth) ;
rcSpace.top = MMI_content_height + MMI_title_height + MMI_title_y - (nHScrollWidth) - bar_height;
rcSpace.right = MMI_content_width;
rcSpace.bottom =rcSpace.top+ nHScrollWidth ;//+ 1;
pixtel_UI_lock_double_buffer();
pixtel_UI_push_clip();
pixtel_UI_set_clip(rcSpace.left, rcSpace.top, rcSpace.right, rcSpace.bottom);
#if defined(__PLXBROW_DYNCSHOW_HSCROLL_) || defined (__PLXBROW_DYNCSHOW_VSCROLL_)
{
WB_PAGEINFO HPageInfo;
WB_PAGEINFO VPageInfo;
PWBE_GetPageInfo(plxBrowInfo.hBrow, WBSBT_HORZ, &HPageInfo);
PWBE_GetPageInfo(plxBrowInfo.hBrow, WBSBT_VERT, &VPageInfo);
if((plxBrowInfo.hBrow != NULL) && (HPageInfo.nMax > HPageInfo.nPage && VPageInfo.nMax > VPageInfo.nPage))
{
pixtel_UI_draw_filled_area((s32)rcSpace.left, (s32)rcSpace.top, (s32)rcSpace.right, (s32)rcSpace.bottom,
current_MMI_theme->scrollbar_background_filler);
}
}
#else
{
pixtel_UI_draw_filled_area((s32)rcSpace.left, (s32)rcSpace.top, (s32)rcSpace.right, (s32)rcSpace.bottom,
current_MMI_theme->scrollbar_background_filler);
}
#endif
pixtel_UI_pop_clip();
pixtel_UI_unlock_double_buffer();
pixtel_UI_BLT_double_buffer(rcSpace.left, rcSpace.top, rcSpace.right, rcSpace.bottom);
#endif
}
/****************************************************************************
* Function ExitBrowViewScreen
* Purpose
* Params
* Return
* Remarks
\****************************************************************************/
void ExitBrowViewScreen(void)
{
reset_softkeys();
ExitCategoryFunction=MMI_dummy_function;
RedrawCategoryFunction=MMI_dummy_function;
GetCategoryHistory=dummy_get_history;
GetCategoryHistorySize=dummy_get_history_size;
}
#ifdef __MMI_WALLPAPER_ON_BOTTOM__
extern UI_image_ID_type idle_screen_wallpaper_ID;
extern gdi_handle wgui_base_layer;
extern gdi_handle wgui_layer_1;
#endif
/****************************************************************************
* Function PlxDrawBrowserScreen
* Purpose Modify ShowCategory400Screen for Pollex need (MTK emu problem)
* Params
* Return
* Remarks
\****************************************************************************/
static void PlxDrawBrowserScreen(U16 title,U16 title_icon,U16 left_softkey,U16 left_softkey_icon,U16 right_softkey,U16 right_softkey_icon,U8* history_buffer)
{
/*
WB_RECT rcSpace ;
int bar_height;
int nHScrollWidth;
int nVScrollWidth;
*/ UI_font_type pFont = &MMI_default_font;
/* bar_height = GetBrowserStatusBarHeight();
nHScrollWidth = GetBrowserHScrollWidth();
nVScrollWidth = GetBrowserVScrollWidth();
rcSpace.left = MMI_content_width - (nVScrollWidth) ;
rcSpace.top = MMI_content_height + MMI_title_height + MMI_title_y - (nHScrollWidth) - bar_height;
rcSpace.right = MMI_content_width;
rcSpace.bottom =rcSpace.top+ nHScrollWidth + 1;
*/
pixtel_UI_lock_double_buffer();
#ifdef __MMI_WALLPAPER_ON_BOTTOM__
wgui_set_wallpaper_on_bottom(MMI_TRUE);
/* 053005 Calvin added */
#ifdef __MMI_DRAW_MANAGER__
dm_set_scr_bg_redraw(MMI_TRUE);
#endif
pixtel_UI_reset_clip();
gdi_layer_multi_layer_enable();
gdi_layer_get_base_handle(&wgui_base_layer);
pixtel_UI_layer_transparent(wgui_base_layer, UI_SUBMENU_OPACITY_BASED_LAYER,
0, 0, UI_device_width-1, UI_device_height-1);
if (wgui_layer_1 == GDI_LAYER_EMPTY_HANDLE)
{
gdi_layer_create(0, 0, UI_device_width, UI_device_height, &wgui_layer_1);
}
#if defined (__MMI_UI_TRANSPARENT_EFFECT__) || defined (__MMI_UI_LIST_HIGHLIGHT_EFFECTS__)
if(pixtel_UI_get_transparent_source_layer()==GDI_LAYER_EMPTY_HANDLE)
{
pixtel_UI_set_transparent_source_layer(wgui_layer_1);
}
#endif
gdi_layer_set_active(wgui_layer_1);
gdi_layer_lock_frame_buffer();
gdi_layer_push_clip();
gdi_layer_reset_clip();
gdi_layer_set_opacity(TRUE, 150);
gdi_image_draw_animation(0,0, get_image(idle_screen_wallpaper_ID),NULL);
gdi_layer_pop_clip();
gdi_layer_unlock_frame_buffer();
gdi_layer_restore_base_active();
gdi_layer_set_blt_layer(wgui_layer_1, wgui_base_layer, 0, 0);
gdi_layer_blt_previous(0, 0, UI_device_width-1, UI_device_height-1);
gdi_layer_set_active(wgui_base_layer);
#endif // __MMI_WALLPAPER_ON_BOTTOM__
pixtel_UI_push_clip();
pixtel_UI_set_clip(0,0,UI_device_width-1,UI_device_height-1);
clear_screen();
clear_category_screen_key_hand
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -