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

📄 plxbrowbookmark.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:


/****************************************************************************
* Function	static void plxBrowBookMarkDestroyAllMenus(void)
* Purpose	try to destroy all menus	
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void plxBrowBookMarkDestroyAllMenus(void)
{
	if(NULL != g_hPlxBrowBookMarkMenu)
	{
		PlxDestroyDMenu(g_hPlxBrowBookMarkMenu);
		g_hPlxBrowBookMarkMenu = NULL;
	}
	if(NULL != g_hPlxBrowBookMarkEditMenu)
	{
		PlxDestroyDMenu(g_hPlxBrowBookMarkEditMenu);
		g_hPlxBrowBookMarkEditMenu = NULL;
	}
}	



/****************************************************************************
* Function	static void BookMarkKeyEndHandler(void)
* Purpose	key end handler of bookmark screen 
* Params	
* Return	
* Remarks	
\****************************************************************************/
void ExecGeneralKeyEndHandler (FuncPtr handler);
static void BookMarkKeyEndHandler(void)
{
	ExecGeneralKeyEndHandler (BookmakrKeyEndExitLskFunc);
}


/****************************************************************************
* Function	BookmakrKeyEndExitLskFunc
* Purpose	
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void BookmakrKeyEndExitLskFunc(void)
{
	PlxBrowExitBrowserAndGoIdle();
}


/****************************************************************************
* Function	BookmarkHistoryDelCB
* Purpose		
* Params	
* Return	
* Remarks	
\****************************************************************************/
static  U8 BookmarkHistoryDelCB(void* param)
{
	if(TRUE == bBMWaitExKeyEndFlag)
	{
		bBMWaitExKeyEndFlag = FALSE;
		DeInitPlxBrowBookMark();
		DeInitPlxBrowser(); //try deinit browser
	}
	return 0;
}


/****************************************************************************
* Function	static void EntryPlxBrowBookMarkMenu(void)
* Purpose	show the menu screen of bookmark list screen 
* Params	
* Return	
* Remarks	
\****************************************************************************/
extern void TestSIPush(void);
extern void TestTextPush(void);

static void EntryPlxBrowBookMarkMenu(void)
{
	plxBrowCreateBookMarkMenu();
	if (NULL == g_hPlxBrowBookMarkMenu) 
		return;
	plxBrowModifyBookMarkMenu();
	PlxSetDMenuDispInfo(0, IMG_ID_PLX_BROW_BOOKMARK, 0,0, 0,0);
	PlxShowDMenu(g_hPlxBrowBookMarkMenu, SCR_ID_PLX_BROW_BOOKMARK_MENU, STR_ID_PLX_BROW_BOOKMARK,
		plxBrowBookMarkMenuNty,EntryPlxBrowBookMarkMenu);
//	ClearKeyHandler(KEY_END,KEY_EVENT_DOWN);
	SetKeyHandler(BookMarkKeyEndHandler,KEY_END,KEY_EVENT_DOWN);
#ifdef __PLXBROW_PUSH_TEST_
	SetKeyHandler(TestSIPush,KEY_VOL_UP, KEY_EVENT_DOWN);
	SetKeyHandler(TestTextPush,KEY_VOL_DOWN, KEY_EVENT_DOWN);
#endif
}



/****************************************************************************
* Function	static int plxBrowCreateHBookMarkMenu(void)
* Purpose	create the menu of bookmark list screen 
* Params	
* Return	
* Remarks	
\****************************************************************************/
static int plxBrowCreateBookMarkMenu(void)
{

	if(NULL != g_hPlxBrowBookMarkMenu)
		return 0;
	g_hPlxBrowBookMarkMenu = PlxCreateDMenu(0);
	if (NULL == g_hPlxBrowBookMarkMenu) 
	{
		return -1;	//create menu failed
	}
	PlxInsertDMenuItem(g_hPlxBrowBookMarkMenu, -1, MF_ENABLED, DMENU_ID_PLX_BROW_BOOKMARK_VIEW,
		(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_VIEW), IMG_GLOBAL_L1);
	
	PlxInsertDMenuItem(g_hPlxBrowBookMarkMenu, -1, MF_ENABLED, DMENU_ID_PLX_BROW_BOOKMARK_NEW,
		(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_NEW), IMG_GLOBAL_L2);

	PlxInsertDMenuItem(g_hPlxBrowBookMarkMenu, -1, MF_ENABLED, DMENU_ID_PLX_BROW_BOOKMARK_EDIT,
		(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_EDIT), IMG_GLOBAL_L3);
	
	PlxInsertDMenuItem(g_hPlxBrowBookMarkMenu, -1, MF_ENABLED, DMENU_ID_PLX_BROW_BOOKMARK_SETHOMEPAGE,
		(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_SETHOMEPAGE), IMG_GLOBAL_L4);
	PlxInsertDMenuItem(g_hPlxBrowBookMarkMenu, -1, MF_ENABLED, DMENU_ID_PLX_BROW_BOOKMARK_DELETE,
		(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_DELETE), IMG_GLOBAL_L5);

	PlxInsertDMenuItem(g_hPlxBrowBookMarkMenu, -1, MF_ENABLED, DMENU_ID_PLX_BROW_BOOKMARK_DELETEALL,
		(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_DELETEALL), IMG_GLOBAL_L6);
	return 0;
}


/****************************************************************************
* Function	static void  plxBrowModifyHistoryMenu(void)
* Purpose   enable or disable bookmark list  menu item
* Params	
* Return	
* Remarks	
\****************************************************************************/

static void  plxBrowModifyBookMarkMenu(void)
{	
	unsigned short isMenuEnabled = 0;

	if(0> g_curHiliteBookMarkID  || g_curNumOfBookMark >= PLXBROW_BOOKMARK_MAX_ITEM)
		return;
	
	if(NULL == g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMUrl)
		isMenuEnabled = MF_DISABLED;
	else
		isMenuEnabled = MF_ENABLED;
	PlxModifyDMenuItem(g_hPlxBrowBookMarkMenu,0,(unsigned short)(isMenuEnabled|MF_BYPOSITION),(unsigned long)DMENU_ID_PLX_BROW_BOOKMARK_VIEW,
					(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_VIEW),(unsigned short)IMG_GLOBAL_L1);
	PlxModifyDMenuItem(g_hPlxBrowBookMarkMenu,3,(unsigned short)(isMenuEnabled|MF_BYPOSITION),(unsigned long)DMENU_ID_PLX_BROW_BOOKMARK_SETHOMEPAGE,
					(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_SETHOMEPAGE),(unsigned short)IMG_GLOBAL_L4);
	PlxModifyDMenuItem(g_hPlxBrowBookMarkMenu,4,(unsigned short)(isMenuEnabled|MF_BYPOSITION),(unsigned long)DMENU_ID_PLX_BROW_BOOKMARK_DELETE,
					(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_DELETE),(unsigned short)IMG_GLOBAL_L5);
	
	isMenuEnabled = g_curNumOfBookMark > 0 ? MF_ENABLED : MF_DISABLED;
	PlxModifyDMenuItem(g_hPlxBrowBookMarkMenu,2,(unsigned short)(isMenuEnabled|MF_BYPOSITION),(unsigned long)DMENU_ID_PLX_BROW_BOOKMARK_EDIT,
					(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_EDIT),(unsigned short)IMG_GLOBAL_L3);
	PlxModifyDMenuItem(g_hPlxBrowBookMarkMenu,5,(unsigned short)(isMenuEnabled|MF_BYPOSITION),(unsigned long)DMENU_ID_PLX_BROW_BOOKMARK_DELETEALL,
					(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_DELETEALL),(unsigned short)IMG_GLOBAL_L6);
	
	isMenuEnabled = g_curNumOfBookMark < PLXBROW_BOOKMARK_MAX_ITEM ? MF_ENABLED : MF_DISABLED;
	PlxModifyDMenuItem(g_hPlxBrowBookMarkMenu,1,(unsigned short)(isMenuEnabled|MF_BYPOSITION),(unsigned long)DMENU_ID_PLX_BROW_BOOKMARK_NEW,
					(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_NEW),(unsigned short)IMG_GLOBAL_L2);
	
	return ;
}



/****************************************************************************
* Function	static int plxBrowHistoryMenuNty(HDMENU hMenu, unsigned long id, unsigned long event)
* Purpose  	notify function for bookmark list menus
* Params	
* Return	
* Remarks	
\****************************************************************************/
static int plxBrowBookMarkMenuNty(HDMENU hMenu, unsigned long id, unsigned long event)
{

	switch(event) 
	{
	case ENT_RIGHT:
	case ENT_OK:	
		switch(id) 
		{
		case DMENU_ID_PLX_BROW_BOOKMARK_VIEW:
			EntryPlxBrowSelBookMarkScreen();
			//temp solution for the problem of wrong focus item in dynamic menu 
			//when there are two screen id in history stack but only one menu resoure in memory;
			if(FALSE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
				DeleteBetweenScreen(SCR_ID_PLX_BROW_BOOKMARK_MENU,SCR_ID_PLX_BROW_BOOKMARK_MENU);
			break;
	
		case DMENU_ID_PLX_BROW_BOOKMARK_EDIT:
			EntryPlxBrowBookMarkEditScreen();
			break;

		case DMENU_ID_PLX_BROW_BOOKMARK_NEW:
			plxBrowBookMarkAddNew();
			break;

		case DMENU_ID_PLX_BROW_BOOKMARK_SETHOMEPAGE:
			plxBrowSetSelBMUrlToHomePage();
			break;
			
		case DMENU_ID_PLX_BROW_BOOKMARK_DELETE:
		//	EntryPlxBrowBookMarkDelMsgSelScreen(STR_ID_PLX_BROW_BOOKMARK_DELETE_CONFIRM,BookMarkDelMsgSelLskFunc);
			if(ENT_OK == event)
				EntryDelSelBookMarkScreen();
			break;

		case DMENU_ID_PLX_BROW_BOOKMARK_DELETEALL:
		//	EntryPlxBrowBookMarkDelMsgSelScreen(STR_ID_PLX_BROW_BOOKMARK_DELETEALL_CONFIRM,BookMarkDelAllMsgSelLskFunc);
			if(ENT_OK == event)
				EntryDelAllBookMarkScreen();
			break;

		default:
			return -1;
		}
		break;
		
	case ENT_LEFT:
//		if(id == DMENU_ID_PLX_BROW_BOOKMARK_DELETE || id == DMENU_ID_PLX_BROW_BOOKMARK_DELETEALL)
//			break;
	case ENT_BACK:
		GoBackHistory();
		if(hMenu)
			PlxDestroyDMenu(hMenu);
		g_hPlxBrowBookMarkMenu = NULL;
		break;
	default:
		return -1;
	}
	

	return 0;
}


/****************************************************************************
* Function	static void  EntryPlxBrowSelBookMarkScreen(void)
* Purpose	view the selected bookmark in browing screen	
* Params	
* Return	
* Remarks	
\****************************************************************************/

static void  EntryPlxBrowSelBookMarkScreen(void)
{
	int      nWideUrlLen;
	char	 *szTempUtf8Url;
	
	if(0> g_curHiliteBookMarkID  || g_curHiliteBookMarkID >= PLXBROW_BOOKMARK_MAX_ITEM)
		return;
	if(NULL == g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMUrl)
		return;
	 nWideUrlLen = pfnUnicodeStrlen(g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMUrl);
	 if(NULL == (szTempUtf8Url = (char*)PlxAppMalloc(nWideUrlLen * 3 + 2)))
	 	return;
	PlxWideCharToUTF8(g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMUrl, nWideUrlLen,
		(char*)szTempUtf8Url, nWideUrlLen * 3 + 2);
	
	DeInitPlxBrowBookMark();
	EntryOfPlxBrowserView((const char*)szTempUtf8Url);
	PlxAppFree(szTempUtf8Url);
}


/****************************************************************************
* Function	static void plxBrowSetSelBMUrlToHomePage(void)
* Purpose	set the selected bookmark to homepage	
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void plxBrowSetSelBMUrlToHomePage(void)
{
	char *nTempUtf8;
	int 	nWideUrlLen;
	
	if(0 > g_curHiliteBookMarkID  || PLXBROW_BOOKMARK_MAX_ITEM <= g_curHiliteBookMarkID)
		return;
	nWideUrlLen=pfnUnicodeStrlen(g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMUrl);
	if(0 == nWideUrlLen)
	{
		GoBackHistory();
		PLIB_MessageBox(PMBTYPE_WARNING, NULL,( const WCHAR *)get_string(STR_ID_PLX_BROW_ERR_INVALIDURL), UI_POPUP_NOTIFYDURATION_TIME);
		return;//PlxBrowSetHomepage(NULL);
	}
	else
	{
		if(NULL == (nTempUtf8 = (char*)PlxAppMalloc(nWideUrlLen * 3 + 2)))
		{
			GoBackHistory();
			PLIB_MessageBox(PMBTYPE_ERROR, NULL, (const WCHAR * )get_string(STR_ID_PLX_BROW_ERR_MEMORYMALLOC), UI_POPUP_NOTIFYDURATION_TIME);
			return;
		}
		PlxWideCharToUTF8(( const char *)(g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMUrl),nWideUrlLen, nTempUtf8,nWideUrlLen * 3 + 2);
		GoBackHistory();
		if(0 == PlxBrowSetHomepage(nTempUtf8))
			PLIB_MessageBox(PMBTYPE_SUCCESS, NULL,( const WCHAR *) GetString(STR_ID_PLX_BROW_SETHOMEPAGE_SUCCESS), UI_POPUP_NOTIFYDURATION_TIME);
		PlxAppFree(nTempUtf8);
	}
}


/****************************************************************************
* Function	static void EntryPlxBrowBookMarkEditScreen(void)
* Purpose	entry the bookmark edit screen	
* Params	
* Return	
* Remarks	
\****************************************************************************/

#define PLXBROW_BOOKMARK_EDIT_MAX_ITEM 4
static void EntryPlxBrowBookMarkEditScreen(void)
{
	U8* guiBuffer;
	U8* inputBuffer;
	U16 inputBufferSize;
	U16  BMEditIcons[PLXBROW_BOOKMARK_EDIT_MAX_ITEM] = { IMG_GLOBAL_L1, 0, IMG_GLOBAL_L2, 0 };
	U16 BookMarkKeyNeeded[] = {KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9 };

	EntryNewScreen(SCR_ID_PLX_BROW_BOOKMARK_EDIT, ExitPlxBrowBookMarkEditScreen,
		 NULL, NULL); 

	InitializeCategory57Screen();

	guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_BROW_BOOKMARK_EDIT);

	inputBuffer = GetCurrNInputBuffer (SCR_ID_PLX_BROW_BOOKMARK_EDIT, &inputBufferSize);

	SetParentHandler(0);

	plxBrowSetBMEditInlineItems();

	RegisterHighlightHandler(plxBrowBMEditHiliteInlineItem);

	if(inputBuffer!=NULL)
		SetCategory57Data(wgui_inline_items, PLXBROW_BOOKMARK_EDIT_MAX_ITEM, inputBuffer);
//for adding to bookmark
/*	if(TRUE == g_bIsAddBookMark)
	{
		ShowCategory57Screen(STR_ID_PLX_BROW_BOOKMARK_EDIT_SCRTITLE, IMG_ID_PLX_BROW_BOOKMARK,
						 STR_ID_PLX_BROW_OPTION,  IMG_GLOBAL_OK,
						 STR_GLOBAL_BACK, IMG_GLOBAL_BACK,
						 PLXBROW_BOOKMARK_EDIT_MAX_ITEM, BMEditIcons,
						 wgui_inline_items, 0,guiBuffer);
		SetCategory57RightSoftkeyFunctions(EntryPlxBrowBookMarkEditMenu,plxBrowBookMarkEditRskFunc); // do nothing but go back
	}
	else
*/	{
		ShowCategory57Screen(STR_ID_PLX_BROW_BOOKMARK_EDIT_SCRTITLE, IMG_ID_PLX_BROW_BOOKMARK,
						 STR_GLOBAL_EDIT,  IMG_GLOBAL_OK,
						 STR_GLOBAL_BACK, IMG_GLOBAL_BACK,
						 PLXBROW_BOOKMARK_EDIT_MAX_ITEM, BMEditIcons,
						 wgui_inline_items, 0,guiBuffer);
		SetCategory57RightSoftkeyFunctions(plxBrowBookMarkEditLskFunc, plxBrowBookMarkEditRskFunc);
	}

	SetCategory57LeftSoftkeyFunction(EntryOfBMEditInput);
	SetKeyHandler(EntryOfBMEditInput, KEY_ENTER, KEY_EVENT_UP);
	SetGroupKeyHandler(EntryOfBMEditInput, BookMarkKeyNeeded, sizeof(BookMarkKeyNeeded)/sizeof(U16), KEY_EVENT_UP);
//	ClearKeyHandler(KEY_END,KEY_EVENT_DOWN);
	SetKeyHandler(BookMarkKeyEndHandler,KEY_END,KEY_EVENT_DOWN);
#ifdef __PLXBROW_PUSH_TEST_
	SetKeyHandler(TestSIPush,KEY_VOL_UP, KEY_EVENT_DOWN);
	SetKeyHandler(TestTextPush,KEY_VOL_DOWN, KEY_EVENT_DOWN);
#endif
}


/****************************************************************************

⌨️ 快捷键说明

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