⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plxbrow.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
/***************************************************************************
*
*                      Pollex Mobile Platform
*
*  Copyright (c) 2004 by Pollex Mobile Software Co., Ltd.
*                       All Rights Reserved
*
*  Module  :    
*
*  Purpose :
*  
\**************************************************************************/


#include "StdC.h"
#include "CommonScreens.h"
#include "MMI_features.h"
#include "gui.h"
#include "gdi_include.h"
#include "wgui_categories.h"
#include "wgui_categories_inputs.h"
#include "SettingProfile.h"
#include "SettingProt.h"
#include "CommonScreens.h"

#ifdef __MMI_TOUCH_SCREEN__
#include "wgui_touch_screen.h"
#endif

#include "PWBE.h"
#include "plxbrowPort.h"
#include "guicallback.h"
#include "../main/plxDefs.h"
#include "plxBrowDefs.h"
#include "plxbrow.h"
#include "../Public/PlxPublic.h"
#include "../public/plxPubDefs.h"
#include "plxBrowPublic.h"
#include "plxBrowHistory.h"
#include "plxbrowBookMark.h"
#include "plxBrowFile.h"
#include "plxBrowSetting.h" 
#include "plxBrowPush.h"

/*
#if defined(__MMI_MAINLCD_128X160__)
#define BAR_HEIGHT	13		
#elif defined(__MMI_MAINLCD_176X220__)
#define BAR_HEIGHT  17
#endif
*/

			

#define   PLXBROW_EXITTING_TIMER_DELAY  100
//#define   PLXBROW_FORCE_RESET_EXITFLAG_DELAY  (60000/PLXBROW_EXITTING_TIMER_DELAY + 5) //61 secondss


static const LIBLIST_GUI guiFuncList = {
	PWBCBDrawLine,
	PWBCBDrawRect,
	PWBCBDrawEllipse,
	PWBCBDrawPolygon,

	PWBCBSetTextStyle,
	PWBCBDrawText,
	PWBCBGetTextInfo,
	PWBCBEditText,

	PWBCBDrawImage,
	(LIB_ENDIMAGE)PWBCBEndImageDraw,
	(LIB_GETIMAGEINFO)PWBCBGetImageInfo,

	PWBCBSelectOption,

	(LIB_STARTRING)PWBCBStartRing,
	PWBCBStopRing,
	PWBCBBeginDisplay,
	PWBCBEndDisplay,
	PWBCBGetUIStr
};

BROWINFO plxBrowInfo={
	0
};

#if 0
typedef enum {
	EXIT_FLAG_INVALID,
	EXIT_FLAG_RSKPRESSED,
	EXIT_FLAG_KEYEND,
	EXIT_FLAG_RESTART
}ExittingFlags;

static  int nExittingBrowserFlags = EXIT_FLAG_INVALID;
#endif

typedef enum{
	BROWSER_NORMAL,
	BROWSER_EXIT,
	BROWSER_START_WAIT_EXIT,
	BROWSER_RESTART_WAIT_EXIT,
}BrowserStatus;

U8 jumpToBuffer[PLXBROW_URL_NAME_LEN * 2];
static char * szOldLinkInput = NULL;


static  BOOL bInExittingStatus = FALSE;
static  int     nBrowserStatus = BROWSER_NORMAL;
static  char*  szTempSavedUrl = NULL;
static  int	   nTempSavedUrlLen = 0;//buffer length
static BOOL  bWaitBrowViewExKeyEndFlag = FALSE;
static BOOL  bIsLinkInput = FALSE;	
static HDMENU g_hPlxBrowserMenu = NULL;
static HDMENU g_hPlxBrowserOptionSubMenu = NULL;

extern char pWebPageTitle[];

void EntryPlxBrowserScreen(void);
void EntryOfPlxBrowUrlInput(void);
static void EntryOfPlxBrowserJumptoScreen(void);
static void EnterJumpToUrlOK (void);
void ConfirmInputJumpTo(void);
void ExitInputJumpto(void);
static void SaveInputLink(void);
//static void InitPollexBrowser(void);
//static void OpenHomePage(void);
#ifdef  __PLXBROW_KEYENTER_NOSUPPORT_
static  void  MenuViewCurrFocusPage(void);
#endif
static void MenuOpenHomePage(void);
static void MenuRefreshCurPage(void);
static void MenuGoBack(void);
static void MenuStop(void);
static void rePaintBrowser(void);
static void PWBProcessKeyEvent(void);
static void PWBProcessCharEvent(void);
//int PlxWideCharToUTF8(const char * lpWideCharStr, int cWideCharLen, char * lpUtf8Str, int cUtf8Len);
static void LeaveBrowserScreen(void);
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);
static void PlxBrowSetCallBackFunc(void);
static U8 BrowserHistoryCBHhandler(void* param);

//extern void wbtestfunc(void);

extern void PWBDrawStatusBar(WB_RECT *prcBar, U16 strInfoID);


void MenuSetHomePage(void);
#ifndef __PLXBROW_DISABLE_HANGUP_
void MenuHangUp(void);
#endif
static void TryDestroyAllMenus(void);
static void ExitBrowserRskFunc(void);
static void ExitBrowserLskFunc(void);
static void EntryPlxBrowserExitConfirm(void);
static void ExitBrowserConfirmCB(PLIBEVENT event);
//static void BrowserKeyEndExitConfirmCB(PLIBEVENT event);
static void BrowserKeyEndExitLskFunc(void);

static void EntryPlxBrowserMenuScreen(void);
static int  CreatePlxBrowserMenu(void);
static void ModifyPlxBrowserMenu(void);
static int  PlxBrowserMenuNty(HDMENU hMenu, unsigned long id, unsigned long event);

static void InitPlxBrowserEngine(void);
static void InitPlxBrowserEngineOption(void);
static void InitPlxBrowserUI(void);
static void InitPlxBrowserUIData(void);

#ifdef __PLXBROW_SWITCH_PROTOCOL_
static void PlxBrowResetProtocol(void);
#endif 

static void StartPlxBrowser(void);
#if 0
static void RskPressedDeInitPlxBrowser(void);
void KeyEndDeInitPlxBrowser(void);
static void ExittingBrowserTimerHandler(void);
void RefreshExittingBrowserScreen(U16 message_id);
static void EntryExittingBrowserScreen(void);
static void LeaveExittingBrowserScreen(void);
#endif
static void DeInitPlxBrowserEngine(void);
static void DeInitPlxBrowserUI(void);
static void DeInitPlxBrowserUIData(void);
static void BrowserKeyEndHandler(void);
static void  BrowserRskToMainList(void);


#ifdef __MMI_TOUCH_SCREEN__
static void PWBOnTouchPenDown(mmi_pen_point_struct pos);
static void PWBOnTouchPenMove(mmi_pen_point_struct pos);
static void PWBOnTouchPenUp(mmi_pen_point_struct pos);
static void PWBOnTouchPenRepeat(mmi_pen_point_struct pos);
static BOOL PWBProcessPenOnScrollbar(mmi_pen_point_struct pos, mmi_pen_event_type_enum pen_event);
static BOOL PWBProcessPenOnSoftkey(mmi_pen_point_struct pos, mmi_pen_event_type_enum pen_event);
static BOOL PWBUsePenSelectItem(mmi_pen_point_struct pos, mmi_pen_event_type_enum pen_event);
#endif //__MMI_TOUCH_SCREEN__

extern void GUICBExteriorKeyEndHandler(void);
extern void TryDestroyPlxBrowMainMenu(void); 
extern	void RedrawCategory66Screen(void);
#ifdef __PLXBROW_DEBUG_
extern void PlxTrace(const char* fmt, ...);
#endif
#ifdef __PLXBROW_PUSH_TEST_
extern void TestSIPush(void);
extern void TestTextPush(void);
#endif 


/****************************************************************************
* Function	GetBrowserVScrollWidth
* Purpose	
* Params	
* Return	
* Remarks	
\****************************************************************************/
int	GetBrowserVScrollWidth(void)
{
#ifdef __PLXBROW_DISABLE_VSCROLL_
	return 0;
#else
	return current_MMI_theme->scrollbar_size;
#endif
}


/****************************************************************************
* Function	GetBrowserHScrollWidth
* Purpose	
* Params	
* Return	
* Remarks	
\****************************************************************************/
int	GetBrowserHScrollWidth(void)
{
#ifdef __PLXBROW_DISABLE_HSCROLL_
	return 0;
#else
	return current_MMI_theme->scrollbar_size;
#endif
}


/****************************************************************************
* Function	GetBrowserStatusBarHeight
* Purpose	
* Params	
* Return	
* Remarks	
\****************************************************************************/
int	GetBrowserStatusBarHeight(void)	
{						
#ifdef  __PLXBROW_DISABLE_STATUSBAR_	

	return 0;

#else

	int   fontW;				
	int   fontH;
	int   barHeight = 14 + 1;
	
#if defined(__MMI_MAINLCD_128X128__)
	barHeight = 14 + 1;
#elif defined(__MMI_MAINLCD_128X160__)
	barHeight = 14 + 1; 		
#elif defined(__MMI_MAINLCD_176X220__)
	barHeight = 17 + 1; 		
#endif
	
	pixtel_UI_measure_string(get_string(STR_ID_PLX_BROW_STATUS_CONNECTSTART),&fontW,&fontH); 
	if(fontH <= 0)			
		return barHeight;		
	else
	{
		if(fontH == 14)
			return fontH + 1;
		else
			return fontH + 1 + 1;
	}
#endif  //__PLXBROW_DISABLE_STATUSBAR_
}	


/****************************************************************************
* Function	HBROWSER PlxBrowGetBrowserHandle(void)
* Purpose	
* Params	
* Return	
* Remarks	
\****************************************************************************/
HBROWSER PlxBrowGetBrowserHandle(void)
{
	return plxBrowInfo.hBrow;
}


/****************************************************************************
* Function	
* Purpose	
* Params	
* Return	
* Remarks	
\****************************************************************************/
void PlxBrowOpenWebPage(char *pUtf8Url)
{	
	int		nUrlLen;
	char*   pNewUrl;
	char*	strTempUrl = NULL;
	char*	pURL=pUtf8Url;


	while(*pURL == ' ')
		pURL ++;
	
	pNewUrl = pURL;
	if(NULL == pURL || 0 ==(nUrlLen = strlen(pURL)))
		return;
	if(7 > nUrlLen || 
		(7 == nUrlLen && 0 != plxBrowStrnicmp((const char*)pURL,(const char*)"http://",7) &&
		0 != plxBrowStrnicmp((const char*)pURL,(const char*)"file://", 7)) ||
		(8 <= nUrlLen && 0 != plxBrowStrnicmp((const char*)pURL,(const char*)"http://",7) &&
		0 != plxBrowStrnicmp((const char*)pURL,(const char*)"https://", 8) &&
		0 != plxBrowStrnicmp((const char*)pURL,(const char*)"file://", 7))
	)
	{
		if(NULL ==(strTempUrl = PlxAppMalloc(nUrlLen+8)))
		{
			PLIB_MessageBox(PMBTYPE_ERROR, NULL, (const WCHAR *)GetString(STR_ID_PLX_BROW_ERR_MEMORYMALLOC),UI_POPUP_NOTIFYDURATION_TIME);
			return;
		}
		strcpy(strTempUrl,"http://");
		if( PLXBROW_URL_NAME_LEN - 7<= nUrlLen)
		{
			strncat(strTempUrl,pURL, PLXBROW_URL_NAME_LEN  - 8);
			strTempUrl[PLXBROW_URL_NAME_LEN - 1] = '\0';
		}
		else 
			strcat(strTempUrl,pURL);	
		pNewUrl = strTempUrl;
	}
	//must do this for that the url changed notify message cannot be sent when the url is invalid.
	PlxBrowSaveCurrentUrl((const char *)pNewUrl);  

	PWBE_NewPage(plxBrowInfo.hBrow, pNewUrl, WBTRANS_GET, 0, 0);

	if(strTempUrl)
		PlxAppFree(strTempUrl);
	
#ifdef __PLXBROW_DEBUG_	
    PlxTrace("[%d]  PlxBrowOpenWebPage -----> Open pUrl = %s \n",__LINE__, pURL);
#endif
}

/****************************************************************************
* Function	 void EntryOfPlxBrowserViewScreen(const char*  szUtf8Url)
* Purpose	entry of browser's view screen
* Params	
* Return	
* Remarks	
\****************************************************************************/
 void EntryOfPlxBrowserView(const char*  szUtf8Url)
{
	int	nUtf8UrlLen;
	char* pTemp;
	if(NULL == szUtf8Url || 0 == (nUtf8UrlLen = strlen(szUtf8Url)))
	{
	//	DisplayPopup((U8 *)get_string(STR_ID_PLX_BROW_ERR_INVALIDURL), IMG_ID_PLX_PUBLIC_SUBMENU_POPFAIL, 0, UI_POPUP_NOTIFYDURATION_TIME, WARNING_TONE);
		PLIB_MessageBox(PMBTYPE_WARNING, NULL, (const WCHAR *)get_string(STR_ID_PLX_BROW_ERR_INVALIDURL), UI_POPUP_NOTIFYDURATION_TIME);
		return;
	}
	if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
		GoBackToHistory(SCR_ID_PLX_BROW_VIEW);
	else if(SCR_ID_PLX_BROW_VIEW != GetExitScrnID())
		EntryPlxBrowserScreen();
	if(FALSE == bInExittingStatus)
		PlxBrowOpenWebPage((char*)szUtf8Url); 
	else if(BROWSER_START_WAIT_EXIT == nBrowserStatus)
	{
		if(NULL != (pTemp = PlxAppRealloc(szTempSavedUrl, nUtf8UrlLen + 1)))
		{
			szTempSavedUrl = pTemp;
			strcpy(szTempSavedUrl,szUtf8Url);
			nTempSavedUrlLen = nUtf8UrlLen + 1;
		}
		else
		{
			if(nTempSavedUrlLen > nUtf8UrlLen + 1 && szTempSavedUrl != NULL)
				strcpy(szTempSavedUrl, szUtf8Url);
			else
			{
				if(szTempSavedUrl)
					PlxAppFree(szTempSavedUrl);
				nTempSavedUrlLen = 0;
				PLIB_MessageBox(PMBTYPE_ERROR, NULL, (const WCHAR *)get_string(STR_ID_PLX_BROW_ERR_MEMORYMALLOC),UI_POPUP_NOTIFYDURATION_TIME);
				return;
			}
		}
	}
}


/****************************************************************************
* Function	PlxBrowSaveCurrentUrl
* Purpose	
* Params	
* Return	
* Remarks	
\****************************************************************************/
void PlxBrowSaveCurrentUrl(const char* szUtf8Url)
{
#ifndef __PLXBROW_SWITCH_PROTOCOL_
#define   URL_LEN_INTERVAL   100
	int 		nUtf8UrlLen;
	static int	nAverageUrlLen = URL_LEN_INTERVAL * 4;
	char*	pTemp;

	if(NULL == szUtf8Url)
		return;
	if(NULL == szTempSavedUrl  || 0 != strcmp((const char*)szUtf8Url, (const char*)szTempSavedUrl))
	{
		nUtf8UrlLen = strlen(szUtf8Url);
		nAverageUrlLen = (nAverageUrlLen + nUtf8UrlLen ) / 2;
		if(nAverageUrlLen <= 0)
			nAverageUrlLen = URL_LEN_INTERVAL + 50;
		if(nUtf8UrlLen >= nTempSavedUrlLen)
		{
			pTemp = PlxAppRealloc(szTempSavedUrl, nUtf8UrlLen + URL_LEN_INTERVAL);
			if(NULL != pTemp)
			{
				szTempSavedUrl = pTemp;
				nTempSavedUrlLen = nUtf8UrlLen + URL_LEN_INTERVAL;
				strcpy(szTempSavedUrl,szUtf8Url);
			}
			else
			{
				if(szTempSavedUrl)
					PlxAppFree(szTempSavedUrl);
				nTempSavedUrlLen = 0;
				return;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -