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

📄 plxbrowbookmark.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 "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 + -