plxbrowbookmark.c
来自「mtk wap和mms代码。。适应mtk 25。26平台」· C语言 代码 · 共 1,913 行 · 第 1/5 页
C
1,913 行
#endif //__PLXBROW_DEFAULT_BOOKMARK_
//if read error ,init the last bookmark
/* do not show empty bookmark
if(-1 ==flag)
{
for (i=nReadCount;i < PLXBROW_BOOKMARK_MAX_ITEM ;i++)
{
// g_plxBrowBooKMarks[i].isChanged =FALSE;
pfnUnicodeStrcpy(g_plxBrowBooKMarks[i].szBMName,(char*)get_string(STR_ID_PLX_BROW_BOOKMARK_DEFAULT_BMNAME));//Unicode string
g_plxBrowBooKMarks[i].szBMUrl=NULL;
}
}
*/
//recalcute the num of bookmarks
g_curNumOfBookMark =0;
for (i=0;i < PLXBROW_BOOKMARK_MAX_ITEM ;i++)
{
if(NULL != g_plxBrowBooKMarks[i].szBMUrl)
g_curNumOfBookMark ++;
}
g_bplxBrowBookMarkIsLoad = TRUE;
g_bIsAnyBookMarkChanged = FALSE;
return 0;
}
/****************************************************************************
* Function static void plxBrowEmptyBookMarks(void)
* Purpose empty the bookmarks to free memory
* Params
* Return
* Remarks
\****************************************************************************/
void plxBrowEmptyBookMarks(void)
{
int i;
for(i=0 ; i<PLXBROW_BOOKMARK_MAX_ITEM; i++)
{
// g_plxBrowBooKMarks[i].isChanged = FALSE;
// pfnUnicodeStrcpy(g_plxBrowBooKMarks[i].szBMName,(char*)get_string(STR_ID_PLX_BROW_BOOKMARK_DEFAULT_BMNAME));
if(NULL!=g_plxBrowBooKMarks[i].szBMUrl)
{
PlxAppFree(g_plxBrowBooKMarks[i].szBMUrl);
g_plxBrowBooKMarks[i].szBMUrl= NULL;
}
}
g_curNumOfBookMark = 0; //empty
g_bplxBrowBookMarkIsLoad = FALSE;
g_bIsAnyBookMarkChanged = FALSE;
}
/****************************************************************************
* Function static BOOL plxBrowSaveBookMarks(void)
* Purpose save the bookmarks and free memory
* Params
* Return
* Remarks
\****************************************************************************/
static BOOL plxBrowSaveBookMarks(void)
{
int nRetFileSize;
int i;
int nUrlLen;
int nFileLen=0;
FS_HANDLE fd;
WCHAR szCurPath[PLXBROW_MAX_PATH];
char *szWbuf;
char *szWtmp;
int nRetFile;
if(FALSE == g_bplxBrowBookMarkIsLoad)
return TRUE;
if(FALSE == g_bIsAnyBookMarkChanged)
{
plxBrowEmptyBookMarks();
return TRUE;
}
AnsiiToUnicodeString((S8 *)szCurPath,(S8 *) GetPBUIBookmarkFilePath());
if(0 > (fd=FS_Open((const WCHAR *)szCurPath,FS_CREATE | FS_READ_WRITE | FS_ATTR_HIDDEN | FS_ATTR_SYSTEM)))
{
PLIB_MessageBox(PMBTYPE_ERROR, (const WCHAR *) NULL, (const WCHAR *)get_string(STR_ID_PLX_BROW_SAVEPAGE_ERR_FILEOPENFAIL),UI_POPUP_NOTIFYDURATION_TIME);
plxBrowEmptyBookMarks();
return FALSE;
}
for (i = 0;i < PLXBROW_BOOKMARK_MAX_ITEM;i++ )
{
nFileLen += PLXBROW_BMNAME_MAX_LEN * 2 ;
nFileLen += sizeof(int);
if (NULL != g_plxBrowBooKMarks[i].szBMUrl)
nFileLen += ((pfnUnicodeStrlen(g_plxBrowBooKMarks[i].szBMUrl) +1)*2); //include string end char
}
if(NULL == (szWbuf = (char*)PlxAppMalloc(nFileLen)))
{
PLIB_MessageBox(PMBTYPE_ERROR, (const WCHAR *) NULL, (const WCHAR *)get_string(STR_ID_PLX_BROW_ERR_MEMORYMALLOC),UI_POPUP_NOTIFYDURATION_TIME);
nRetFileSize = -1;
}
else
{
szWtmp = szWbuf;
for (i = 0;i < PLXBROW_BOOKMARK_MAX_ITEM;i++ )
{
// if(0 == pfnUnicodeStrcmp((const s8*)g_plxBrowBooKMarks[i].szBMName,(const S8*)get_string(STR_ID_PLX_BROW_BOOKMARK_DEFAULT_BMNAME)))
// PlxAppMemcpy(szWtmp,"",PLXBROW_BMNAME_MAX_LEN * 2);
// else
PlxAppMemcpy(szWtmp, g_plxBrowBooKMarks[i].szBMName,PLXBROW_BMNAME_MAX_LEN * 2);
szWtmp += PLXBROW_BMNAME_MAX_LEN * 2;
nUrlLen=0;
if (NULL != g_plxBrowBooKMarks[i].szBMUrl)
{
nUrlLen = (pfnUnicodeStrlen(g_plxBrowBooKMarks[i].szBMUrl) +1) * 2;
}
PlxAppMemcpy(szWtmp,&nUrlLen,sizeof(int));
szWtmp += sizeof(int);
if (nUrlLen !=0)
{
PlxAppMemcpy(szWtmp,g_plxBrowBooKMarks[i].szBMUrl,nUrlLen);
szWtmp += nUrlLen;
}
}//end for
nRetFile = FS_Write(fd, (void *)szWbuf, (UINT)nFileLen, (UINT *)&nRetFileSize);
PlxAppFree(szWbuf);
if (FS_NO_ERROR != nRetFile || nRetFileSize != nFileLen)
nRetFileSize = -1;
}
plxBrowEmptyBookMarks();
if (nRetFileSize == -1)
{
FS_Close(fd);
return FALSE;
}
FS_Close(fd);
return TRUE;
}
/****************************************************************************
* Function static int plxBrowSetOneBookMark(void) //Unicode
* Purpose set one bookmark with new infomation
* Params
* Return
* Remarks
\****************************************************************************/
static int plxBrowSetOneBookMark(void) //Unicode
{
int i;
int nNewUrlLen;
int nNewNameLen;
char *szTempUrl;
char *szTempUtf8Url;
int flag= 0;
int nUtf8UrlLen;
if(0>g_curHiliteBookMarkID ||PLXBROW_BOOKMARK_MAX_ITEM <= g_curHiliteBookMarkID)
return PLXBROW_BM_ERR_INVALID_POS;
if(0 ==(nNewNameLen = pfnUnicodeStrlen((const S8*)g_szPlxBrowBMEditInputName)))
return PLXBROW_BM_ERR_NULL_NAME;
if(0 ==(nNewUrlLen=pfnUnicodeStrlen((const S8*)g_szPlxBrowBMEditInputURL)))
return PLXBROW_BM_ERR_NULL_URL;
if(0 == pfnUnicodeStrcmp((const S8*)g_szPlxBrowBMEditInputName, (const S8*)g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMName))
{
if(NULL != g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMUrl
&& 0 ==pfnUnicodeStrcmp((const S8*)g_szPlxBrowBMEditInputURL,(const S8*)g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMUrl))
return PLXBROW_BM_ERR_NO_CHANGE; // no change
}
// if(0 == pfnUnicodeStrcmp((const char*)get_string(STR_ID_PLX_BROW_BOOKMARK_DEFAULT_BMNAME),szBMarkName))
// return PLXBROW_BM_ERR_DEFAULT_NAME;
for (i=0; i<PLXBROW_BOOKMARK_MAX_ITEM; i++) //check name repeated
{
if(g_curHiliteBookMarkID == i)
continue;
if(0 == pfnUnicodeStrcmp(g_plxBrowBooKMarks[i].szBMName,g_szPlxBrowBMEditInputName))
return PLXBROW_BM_ERR_REPEAT_NAME;
/* if(NULL != g_plxBrowBooKMarks[i].szBMUrl)
{
nBMItemUrlLen = pfnUnicodeStrlen(g_plxBrowBooKMarks[i].g_szPlxBrowBMEditInputURL);
if(nBMItemUrlLen == nNewUrlLen)
{
if(0 ==pfnUnicodeStrcmp(g_plxBrowBooKMarks[i].szBMUrl,g_szPlxBrowBMEditInputURL))
return PLXBROW_BM_ERR_REPEAT_URL;
}
}
*/
}
if(NULL == (szTempUtf8Url = (char*)PlxAppMalloc( nNewUrlLen * 3 + 2)))
return PLXBROW_BM_ERR_NO_MEMORY;
PlxWideCharToUTF8((const char *)g_szPlxBrowBMEditInputURL, nNewUrlLen, szTempUtf8Url,nNewUrlLen * 3 + 2);
nUtf8UrlLen = strlen((const char*)szTempUtf8Url);
if(7 > nUtf8UrlLen ||
( 7 == nUtf8UrlLen && 0 != plxBrowStrnicmp((const char*)szTempUtf8Url,(const char*)"http://",7) &&
0 != plxBrowStrnicmp((const char*)szTempUtf8Url,(const char*)"file://", 7)) ||
( 8 <= nUtf8UrlLen &&
0 != plxBrowStrnicmp((const char*)szTempUtf8Url,(const char*)"http://",7) &&
0 != plxBrowStrnicmp((const char*)szTempUtf8Url,(const char*)"https://", 8) &&
0 != plxBrowStrnicmp((const char*)szTempUtf8Url,(const char*)"file://", 7))
)
{
flag = 1;
}
PlxAppFree(szTempUtf8Url);
if((flag == 1 && PLXBROW_URL_NAME_LEN - 7<= nNewUrlLen) ||
(flag == 0 && PLXBROW_URL_NAME_LEN <= nNewUrlLen))//num of character
nNewUrlLen = PLXBROW_URL_NAME_LEN-1 ;
else if(1 == flag)
nNewUrlLen += 7;
if(NULL == (szTempUrl =(char*)PlxAppMalloc((nNewUrlLen+1)*2)))
{
return PLXBROW_BM_ERR_NO_MEMORY;
}
if(flag == 1)
{
AnsiiToUnicodeString((S8 *)szTempUrl, (S8 *)"http://");
if( PLXBROW_URL_NAME_LEN - 7<= nNewUrlLen)
{
pfnUnicodeStrncat((S8*)szTempUrl,(const S8*)g_szPlxBrowBMEditInputURL, PLXBROW_URL_NAME_LEN -8 );
szTempUrl[nNewUrlLen *2 ]='\0';
szTempUrl[nNewUrlLen * 2 + 1 ]='\0';
}
else
pfnUnicodeStrcat((S8*)szTempUrl,(const S8*)g_szPlxBrowBMEditInputURL);
}
else
{
pfnUnicodeStrncpy((S8*)szTempUrl, (const S8*) g_szPlxBrowBMEditInputURL,nNewUrlLen);
szTempUrl[nNewUrlLen *2 ]='\0';
szTempUrl[nNewUrlLen * 2 + 1 ]='\0';
}
if(NULL != g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMUrl) //change a bookmark existed.
PlxAppFree(g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMUrl);
else
g_curNumOfBookMark ++; //add new bookmark
g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMUrl=szTempUrl;
g_bIsAnyBookMarkChanged = TRUE;
pfnUnicodeStrncpy((S8*)g_plxBrowBooKMarks[g_curHiliteBookMarkID].szBMName,(const S8*)g_szPlxBrowBMEditInputName,nNewNameLen);
return PLXBROW_BM_ERR_NO_ERROR;
}
/****************************************************************************
* Function static int plxBrowDeleteOneBookMark(int nDeleteID)
* Purpose delete on bookmark in memory but not save it to flash
* Params
* Return
* Remarks
\****************************************************************************/
static int plxBrowDeleteOneBookMark(int nDeleteID)
{
int i;
if(0 > nDeleteID || PLXBROW_BOOKMARK_MAX_ITEM <= nDeleteID)
return -1;
if(NULL == g_plxBrowBooKMarks[nDeleteID].szBMUrl)
return 0;
// pfnUnicodeStrcpy(g_plxBrowBooKMarks[nDeleteID].szBMName,(char*)get_string(STR_ID_PLX_BROW_BOOKMARK_DEFAULT_BMNAME));
PlxAppFree(g_plxBrowBooKMarks[nDeleteID].szBMUrl);
g_plxBrowBooKMarks[nDeleteID].szBMUrl= NULL;
//memset(g_plxBrowBooKMarks[nDeleteID].szBMName,0x0,PLXBROW_BMNAME_MAX_LEN *2);
//g_plxBrowBooKMarks[nDeleteID].isChanged = TRUE;
g_bIsAnyBookMarkChanged = TRUE;
for (i = nDeleteID; i<g_curNumOfBookMark -1; i++)
{
g_plxBrowBooKMarks[i].szBMUrl = g_plxBrowBooKMarks[i+1].szBMUrl;
PlxAppMemcpy((void*)g_plxBrowBooKMarks[i].szBMName,(const void*)g_plxBrowBooKMarks[i+1].szBMName,(unsigned int)PLXBROW_BMNAME_MAX_LEN * 2);
// g_plxBrowBooKMarks[i].isChanged = g_plxBrowBooKMarks[i+1].isChanged;
}
g_plxBrowBooKMarks[i].szBMUrl = NULL;
memset(g_plxBrowBooKMarks[i].szBMName,0x0,PLXBROW_BMNAME_MAX_LEN);
g_curNumOfBookMark --;
return 0;
}
//////////////////////////// UI Screen ////////////////////////////
/****************************************************************************
* Function static void EntryPlxBrowBookMarkScreen(void)
* Purpose load and init bookmarks,entry the bookmark list screen
* Params
* Return
* Remarks
\****************************************************************************/
static void EntryPlxBrowBookMarkScreen(void)
{
U8* guiBuffer = NULL;
plxBrowLoadBookMarks();
g_bSelBooMarkChanged = FALSE;
memset(g_szPlxBrowBMEditInputName,0x00,PLXBROW_BMNAME_MAX_LEN *2);
memset(g_szPlxBrowBMEditInputURL,0x00,PLXBROW_URL_NAME_LEN *2);
if(FALSE == CheckIsBackHistory())
g_curHiliteBookMarkID = 0;
EntryNewScreen(SCR_ID_PLX_BROW_BOOKMARK,NULL, EntryPlxBrowBookMarkScreen, NULL);
// guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_BROW_BOOKMARK);
RegisterHighlightHandler(plxBrowGetCurHiliteBookMarkItemID);
ShowCategory184Screen(STR_ID_PLX_BROW_BOOKMARK, IMG_ID_PLX_BROW_BOOKMARK,
STR_ID_PLX_BROW_OPTION,IMG_GLOBAL_OK,
STR_GLOBAL_BACK, IMG_GLOBAL_BACK,
g_curNumOfBookMark/*PLXBROW_BOOKMARK_MAX_ITEM*/,
plxBrowGetNextBookMarkItem, NULL, g_curHiliteBookMarkID, guiBuffer);
SetKeyHandler(EntryPlxBrowSelBookMarkScreen, KEY_ENTER, KEY_EVENT_UP);//press enter key to view the bookmark url
SetRightSoftkeyFunction(ExitPlxBrowBookMarkScreen,KEY_EVENT_UP);
SetLeftSoftkeyFunction(EntryPlxBrowBookMarkMenu, KEY_EVENT_UP);
// ClearKeyHandler(KEY_END,KEY_EVENT_DOWN);
SetKeyHandler(BookMarkKeyEndHandler,KEY_END,KEY_EVENT_DOWN);
SetKeyHandler(ExitPlxBrowBookMarkScreen,KEY_LEFT_ARROW, KEY_EVENT_DOWN);
SetKeyHandler(EntryPlxBrowBookMarkMenu,KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
}
/****************************************************************************
* Function static void plxBrowGetCurHiliteBookMarkItemID(S32 itemHilite)
* Purpose get the ID of hilite bookmark
* Params
* Return
* Remarks
\****************************************************************************/
static void plxBrowGetCurHiliteBookMarkItemID(S32 itemHilite)
{
g_curHiliteBookMarkID = itemHilite;
}
/****************************************************************************
* Function static pBOOL plxBrowGetNextBookMarkItem( S32 item_index, UI_string_type str_buff, UI_image_type* img_buff_p, U8 str_img_mask )
* Purpose get the bookmark item by item index
* Params
* Return
* Remarks
\****************************************************************************/
static pBOOL plxBrowGetNextBookMarkItem( S32 item_index, UI_string_type str_buff, UI_image_type* img_buff_p, U8 str_img_mask )
{
if(0 > item_index || PLXBROW_BOOKMARK_MAX_ITEM <= item_index)
return FALSE;
pfnUnicodeStrcpy((S8*)str_buff, g_plxBrowBooKMarks[item_index].szBMName);
*img_buff_p = (UI_image_type)GetImage((U16)(IMG_GLOBAL_L1 + item_index));
return TRUE;
}
/****************************************************************************
* Function static void ExitPlxBrowBookMarkScreen(void)
* Purpose exit the bookmark screen
* Params
* Return
* Remarks
\****************************************************************************/
static void ExitPlxBrowBookMarkScreen(void)
{
// plxBrowSaveBookMarks();
if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
GoBackToHistory(SCR_ID_PLX_BROW_VIEW);
else
{
GoBackHistory();
}
DeInitPlxBrowBookMark();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?