📄 plxbrowbookmark.c
字号:
/***************************************************************************
*
* Pollex Mobile Platform
*
* Copyright (c) 2004 by Pollex Mobile Software Co., Ltd.
* All Rights Reserved
*
* Module :
*
* Purpose :
*
\**************************************************************************/
#include "PlxConfig.h"
#if defined(PROJECT_BRANCH_06A)
#define __NEWSIMULATOR
#include "FileSystemDef.h"
#undef __NEWSIMULATOR
#else
#ifdef MMI_ON_WIN32
#include <windows.h>
#endif
#ifndef MMI_ON_WIN32
#include "kal_release.h"
#endif
#endif // defined(PROJECT_BRANCH_06A)
#include "string.h"
#include "fs_type.h"
#include "fs_func.h"
#include "fs_errcode.h"
#include "GlobalScrEnum.h"
#include "StdC.h"
#include "CommonScreens.h"
#include "MMI_features.h"
#include "stdlib.h"
#include "gui.h"
#include "wgui_categories_inputs.h"
#include "wgui_categories_popup.h"
#include "SettingProfile.h"
#include "SettingProt.h"
#include "historyGprot.h"
#include "PWBE.h"
#include "../main/plxDefs.h"
#include "plxBrowDefs.h"
#include "plxbrow.h"
#include "../Public/PlxPublic.h"
#include "../public/plxPubDefs.h"
#include "plxBrowPublic.h"
#include "plxbrowBookMark.h"
#include "plxBrowSetting.h"
#define PLXBROW_BM_ERR_NO_ERROR 0
#define PLXBROW_BM_ERR_INVALID_POS -1
#define PLXBROW_BM_ERR_NULL_NAME -2
#define PLXBROW_BM_ERR_NULL_URL -3
#define PLXBROW_BM_ERR_REPEAT_NAME -4
#define PLXBROW_BM_ERR_REPEAT_URL -5
#define PLXBROW_BM_ERR_DEFAULT_NAME -6
#define PLXBROW_BM_ERR_NO_SPACE -7
#define PLXBROW_BM_ERR_NO_MEMORY -8
#define PLXBROW_BM_ERR_NO_CHANGE -9
typedef struct tag_plxBrow_BookMarkItem
{
// BOOL isChanged;
char szBMName[PLXBROW_BMNAME_MAX_LEN * 2];
char *szBMUrl;
}BrowBookMarkItem, *PBrowBooMarkItem;
typedef enum
{
PLXBROW_BOOKMARK_EDIT_NAMELABEL,
PLXBROW_BOOKMARK_EDIT_NAMEINPUT,
PLXBROW_BOOKMARK_EDIT_URLLABEL,
PLXBROW_BOOKMARK_EDIT_URLINPUT
}PLXBROW_BOOKMARK_EDIT_INLINE_ITEM;
static BrowBookMarkItem g_plxBrowBooKMarks[PLXBROW_BOOKMARK_MAX_ITEM];//Unicode
static int g_curNumOfBookMark= 0;
static int g_curHiliteBookMarkID = 0;
static int g_SavedCurHiliteBMID = -1;
static HDMENU g_hPlxBrowBookMarkMenu = NULL;
static HDMENU g_hPlxBrowBookMarkEditMenu = NULL;
static int g_curHiliteBMEditInputID = 0;
static char g_szPlxBrowBMEditInputName[PLXBROW_BMNAME_MAX_LEN * 2]; //Unicode
static char g_szPlxBrowBMEditInputURL[PLXBROW_URL_NAME_LEN * 2]; //Unicode
static char g_szTempInputName[PLXBROW_BMNAME_MAX_LEN *2 ];
extern U8 jumpToBuffer[];
static BOOL g_bSelBooMarkChanged = FALSE;
static BOOL g_bplxBrowBookMarkIsLoad = FALSE;
//for adding to bookmark
//static BOOL g_bIsAddBookMark = FALSE;
static BOOL g_bIsAnyBookMarkChanged = FALSE;
static BOOL bBMWaitExKeyEndFlag = FALSE;
#ifdef __PLXBROW_DEFAULT_BOOKMARK_
extern const DEFAULTBOOKMARK bookmarkDefault[];
extern const int nCountOfDefaultBMark ;
#endif
// bookmark handle functions
static int plxBrowLoadBookMarks(void);
static BOOL plxBrowSaveBookMarks(void);
//static BOOL plxBrowIsAnyBookMarkChanged(void);
static int plxBrowSetOneBookMark(void);
static int plxBrowDeleteOneBookMark(int nDeleteID);
//bookmark screen, the entry func is exposed
static void EntryPlxBrowBookMarkScreen(void);
static void plxBrowGetCurHiliteBookMarkItemID(S32 itemHilite);
static pBOOL plxBrowGetNextBookMarkItem( S32 item_index, UI_string_type str_buff, UI_image_type* img_buff_p, U8 str_img_mask );
//static S32 plxBrowGetBookMarkItemHint ( S32 item_index, UI_string_type *hint_array );
static void ExitPlxBrowBookMarkScreen(void);
static void plxBrowBookMarkDestroyAllMenus(void); //free all menus
static void BookMarkKeyEndHandler(void);
static void BookmakrKeyEndExitLskFunc(void);
//static void BookmarkKeyEndExitConfirmCB(PLIBEVENT event);
static U8 BookmarkHistoryDelCB(void* param);
//bookmark menu screen
static void EntryPlxBrowBookMarkMenu(void);
static int plxBrowCreateBookMarkMenu(void);
static void plxBrowModifyBookMarkMenu(void);
static int plxBrowBookMarkMenuNty(HDMENU hMenu, unsigned long id, unsigned long event);
//book mark menu item handle functions
static void EntryPlxBrowSelBookMarkScreen(void);
static void EntryPlxBrowBookMarkEditScreen(void);
static void plxBrowSetSelBMUrlToHomePage(void);
static void plxBrowBookMarkAddNew(void);
//bookmark delete and delete all menu items handler func
//static void EntryPlxBrowBookMarkDelMsgSelScreen (U16 MessageId, FuncPtr LskFuncs);
static void DelAllBookMarkConfirmCB(PLIBEVENT event);
static void EntryDelAllBookMarkScreen(void);
static void DelSelBookMarkConfirmCB(PLIBEVENT event);
static void EntryDelSelBookMarkScreen(void);
static void BookMarkDelMsgSelLskFunc(void); //delete the bookmark selected
static void BookMarkDelAllMsgSelLskFunc(void);//delete all bookmarks
static void BookMarkDelMsgRskFunc(void);
//bookmark edit screen
void plxBrowSetBMEditInlineItems(void);
static void EntryPlxBrowBookMarkEditScreen(void);
static void ExitPlxBrowBookMarkEditScreen(void);
static void plxBrowBookMarkEditRskFunc(void);
static void plxBrowBookMarkEditLskFunc(void);
static void BMSaveComfirmCB(PLIBEVENT event);
//bookmark edit input screen
static void EntryOfBMEditInput(void);
static void EntryPlxBrowBMEditInputScreen(void);
static void EnterBMEditInputOK (void);
static void plxBrowBMEditInputLskFunc(void);
static void plxBrowBMEditInputRskFunc(void);
//bookmark edit menu screen
//static void EntryPlxBrowBookMarkEditMenu(void);
//static int plxBrowCreateBookMarkEditMenu(void);
//static void plxBrowModifyBookMarkEditMenu(void);
//static int plxBrowBookMarkEditMenuNty(HDMENU hMenu, unsigned long id, unsigned long event);
//bookmark menu item handle functions
static int plxBrowLazySaveBookMarkEdited(void);
//static void plxBrowSetCurPageToBookMark(void);
static void plxBrowBMEditHiliteInlineItem(S32 index);
/****************************************************************************
* Function void EntryOfPlxBrowBookMark(void)
* Purpose entry of pollex browser bookmark
* Params
* Return
* Remarks
\****************************************************************************/
void InitPlxBrowBookMark(void)
{
plxBrowLoadBookMarks();
}
/****************************************************************************
* Function void EntryOfPlxBrowBookMark(void)
* Purpose entry of pollex browser bookmark
* Params
* Return
* Remarks
\****************************************************************************/
void DeInitPlxBrowBookMark(void)
{
plxBrowSaveBookMarks();
g_curHiliteBookMarkID = 0;
g_curHiliteBMEditInputID = 0;
g_bSelBooMarkChanged = FALSE;
g_SavedCurHiliteBMID = -1;
//for add to bookmark
// g_bIsAddBookMark = FALSE;
pfnUnicodeStrcpy((S8*)g_szPlxBrowBMEditInputName,(const S8*)"");
pfnUnicodeStrcpy((S8*)g_szPlxBrowBMEditInputURL,(const S8*)"");
plxBrowBookMarkDestroyAllMenus();
}
/****************************************************************************
* Function void EntryOfPlxBrowBookMark(void)
* Purpose entry of pollex browser bookmark
* Params
* Return
* Remarks
\****************************************************************************/
void EntryOfPlxBrowBookMark(void)
{
EntryPlxBrowBookMarkScreen();
}
/****************************************************************************
* Function static int plxBrowLoadBookMarks(void)
* Purpose load bookmarks from flash
* Params
* Return
* Remarks
\****************************************************************************/
static int plxBrowLoadBookMarks(void)
{
int i;
int nRetFileSize;
FS_HANDLE fd;
int flag =1;
char *szTempUrl;
int nUrlLen;
int nRetUrlReadLen;
int nRetRead;
int nRetNameReadLen;
int nReadCount;
char szWideChar[PLXBROW_MAX_PATH];
#ifdef __PLXBROW_DEFAULT_BOOKMARK_
char *szDefBMark;
int nDefNum;
int nDefSize;
#endif
if(TRUE == g_bplxBrowBookMarkIsLoad)
return 0;
nReadCount = 0;
for(i =0;i < PLXBROW_BOOKMARK_MAX_ITEM;i++)
{
// g_plxBrowBooKMarks[i].isChanged= FALSE;
g_plxBrowBooKMarks[i].szBMUrl = NULL;
memset(g_plxBrowBooKMarks[i].szBMName,0x0,PLXBROW_BMNAME_MAX_LEN *2);
}
i = 0;
AnsiiToUnicodeString((S8 *)szWideChar, (S8 *)GetPBUIBookmarkFilePath());
fd = FS_Open((const WCHAR *)szWideChar,FS_READ_ONLY);
if(0 > fd)
flag = -1;
else
{
if(FS_NO_ERROR != FS_GetFileSize(fd, (UINT *)&nRetFileSize))
flag=-1;
else
{
for(i =0;i < PLXBROW_BOOKMARK_MAX_ITEM;i++)
{
nRetRead = FS_Read(fd, (void *)g_plxBrowBooKMarks[i].szBMName,
(UINT)(PLXBROW_BMNAME_MAX_LEN*2), (UINT *)&nRetNameReadLen);
if(FS_NO_ERROR != nRetRead || 0 > nRetNameReadLen ||
PLXBROW_BMNAME_MAX_LEN*2 < nRetNameReadLen)
{
flag = -1;
break ;
}
// if( 0 == pfnUnicodeStrlen(g_plxBrowBooKMarks[i].szBMName))
// pfnUnicodeStrcpy((s8*)g_plxBrowBooKMarks[i].szBMName,(S8*)get_string(STR_ID_PLX_BROW_BOOKMARK_DEFAULT_BMNAME));
nRetRead= FS_Read(fd, (void *)&nUrlLen , (UINT)sizeof(int), (UINT *)&nRetUrlReadLen);
if(FS_NO_ERROR != nRetRead || nRetUrlReadLen != sizeof(int) ||
0 > nUrlLen ||PLXBROW_URL_NAME_LEN * 2< nUrlLen )
{
flag = -1;
break;
}
if(0 < nUrlLen)
{
if(NULL == (szTempUrl = (char*)PlxAppMalloc(nUrlLen)))
{
flag = -1;
break;
}
else
{
nRetRead = FS_Read(fd, (void *) szTempUrl, (UINT)nUrlLen,( UINT * )&nRetUrlReadLen);
if(FS_NO_ERROR != nRetRead && nRetUrlReadLen != nUrlLen)
{
PlxAppFree(szTempUrl);
szTempUrl = NULL;
flag=-1;
break;
}//end if
}//end else
g_plxBrowBooKMarks[i].szBMUrl = szTempUrl;
}//end if
}//end for
nReadCount = i;
FS_Close(fd);
}//end else
}//end else
#ifdef __PLXBROW_DEFAULT_BOOKMARK_
if(flag == -1 && i <= 0)
{
if(NULL != (szDefBMark= (char*)PlxAppMalloc(PLXBROW_BM_DEFAUT_URL_LEN *2 )))
{
if(nCountOfDefaultBMark > PLXBROW_BOOKMARK_MAX_ITEM)
nDefNum = PLXBROW_BOOKMARK_MAX_ITEM;
else
nDefNum= nCountOfDefaultBMark;
for(i = 0; i< nDefNum; i++)
{
nDefSize = strlen(bookmarkDefault[i].szBMURL);
if(nDefSize < PLXBROW_BM_DEFAUT_URL_LEN)
AnsiiToUnicodeString((S8 *)szDefBMark, (S8 *)(bookmarkDefault[i].szBMURL));
// PlxUTF82UCS2((char*)szDefBMark, (char*)(bookmarkDefault[i].szBMURL), nDefSize, PLXBROW_BM_DEFAUT_URL_LEN * 2);
// PlxGB2312ToUCS2((const char *)bookmarkDefault[i].szBMURL, nDefSize, (char *)szDefBMark, PLXBROW_BM_DEFAUT_URL_LEN * 2);
else
{
AnsiiNToUnicodeString((S8 *)szDefBMark,(S8 *) (bookmarkDefault[i].szBMURL), PLXBROW_BM_DEFAUT_URL_LEN - 1);
// PlxUTF82UCS2((char*)szDefBMark, (char*)(bookmarkDefault[i].szBMURL), PLXBROW_BM_DEFAUT_URL_LEN - 1, PLXBROW_BM_DEFAUT_URL_LEN * 2);
// PlxGB2312ToUCS2((const char *)bookmarkDefault[i].szBMURL, PLXBROW_BM_DEFAUT_URL_LEN - 1, (char *)szDefBMark, PLXBROW_BM_DEFAUT_URL_LEN * 2);
*(szDefBMark + PLXBROW_BM_DEFAUT_URL_LEN * 2 - 2) = '\0';
*(szDefBMark + PLXBROW_BM_DEFAUT_URL_LEN * 2 - 1 ) = '\0';
}
g_plxBrowBooKMarks[i].szBMUrl =(char*)plxBrowWideStrDup((const WCHAR*)szDefBMark);
if(NULL != g_plxBrowBooKMarks[i].szBMUrl)
{
if(DEFBMNAME_ANSII == bookmarkDefault[i].nEncode)
{
AnsiiToUnicodeString((S8 *)szDefBMark, (S8 *)(bookmarkDefault[i].szBMName));
}
else if(DEFBMNAME_UNICODE == bookmarkDefault[i].nEncode)
{
pfnUnicodeStrcpy((S8*)szDefBMark,(const S8*)bookmarkDefault[i].szBMName);
}
else if(DEFBMNAME_GB2312 == bookmarkDefault[i].nEncode)
{
nDefSize = strlen(bookmarkDefault[i].szBMName);
PlxGB2312ToUCS2((const char *)bookmarkDefault[i].szBMName, nDefSize, (char *)szDefBMark, PLXBROW_BM_DEFAUT_URL_LEN * 2);
}
else // DEFBMNAME_UTF8
{
PlxUTF82UCS2((char*)szDefBMark, (char*)(bookmarkDefault[i].szBMName), nDefSize, PLXBROW_BMNAME_MAX_LEN * 2);
}
nDefSize = pfnUnicodeStrlen((const S8*)szDefBMark);
if(nDefSize < PLXBROW_BMNAME_MAX_LEN)
// AnsiiToUnicodeString((S8 *)g_plxBrowBooKMarks[i].szBMName, (S8 *)(bookmarkDefault[i].szBMName));
// PlxUTF82UCS2((char*)g_plxBrowBooKMarks[i].szBMName, (char*)(bookmarkDefault[i].szBMName), nDefSize, PLXBROW_BMNAME_MAX_LEN * 2);
pfnUnicodeStrcpy((S8*)g_plxBrowBooKMarks[i].szBMName,szDefBMark);
else
{
// AnsiiNToUnicodeString((S8 *)g_plxBrowBooKMarks[i].szBMName,(S8 *) (bookmarkDefault[i].szBMName), PLXBROW_BMNAME_MAX_LEN -1);
// PlxUTF82UCS2((char*)g_plxBrowBooKMarks[i].szBMName, (char*)(bookmarkDefault[i].szBMName), PLXBROW_BMNAME_MAX_LEN - 1, PLXBROW_BMNAME_MAX_LEN * 2);
pfnUnicodeStrncpy((S8*)g_plxBrowBooKMarks[i].szBMName,szDefBMark, PLXBROW_BMNAME_MAX_LEN - 1);
*(g_plxBrowBooKMarks[i].szBMName + PLXBROW_BMNAME_MAX_LEN * 2 - 2) = '\0';
*(g_plxBrowBooKMarks[i].szBMName + PLXBROW_BMNAME_MAX_LEN * 2 -1 ) = '\0';
}
}
else
break;
}
PlxAppFree(szDefBMark);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -