📄 plxbrowbookmark.c
字号:
/****************************************************************************
* 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 + -