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

📄 plxbrowfile.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 "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 "SettingProt.h"
#include "SettingProfile.h"

#include "stdlib.h"
#include "gui.h"
#include "wgui_categories_inputs.h"
#include "wgui_categories_popup.h"

#include "PWBE.h"
#include "../main/plxDefs.h"
#include "plxBrowDefs.h"
#include "../Public/PlxPublic.h"
#include "../public/plxPubDefs.h"
#include "plxBrowPublic.h"
#include "plxbrow.h"
#include "PlxBrowSetting.h"

#define	 PLXBROW_PWBE_SAVE_LOG_FILENAME  "memrst.txt"


//save page func
static BOOL TestAndCreateDownloadDir(const WCHAR* szWidePath);
static int	GetNumOfPagSaved(void);
static int  GetPageTypeStrIDAndSuffix(int PageType, char* szSuffix);
static BOOL	IsCurrPageExisted(const char* szWidePageName);

//savepage screen
static void  EntryPlxBrowSavePageScreen(void);
static void plxBrowSetSavePageInlineItems(void);
static void plxBrowSavePageHiliteInlineItem(S32 index);
static void ExitPlxBrowSavePageScreen(void);
static void SavePageBack(void);
static void SavePageBackConfirmCB(PLIBEVENT event);
static void plxBrowSavePageRskFunc(void);
static void plxBrowSavePageLskFunc(void);
static  U8 SavePageHistoryDelCB(void* param);

//savepage input screen
static void EntryPlxBrowSavePageInputScreen(void);
static void EnterSavePageInputOK (void);
static void plxBrowSavePageInputLskFunc(void);
static void plxBrowSavePageInputRskFunc(void);
//save file existed confirm screen
static void EntrySaveFileExistConfirmScreen(void);
static void SaveFileExistConfirmCB(PLIBEVENT event );
static void SaveFileExistConfirmRskFunc(void);
static void SaveFileExistConfirmLskFunc(void);
//key end handler 
static void SavePageKeyEndHandler(void);
static void SavePageKeyEndExitLskFunc(void);
static void SavePageKeyEndExitConfirmCB(PLIBEVENT event);



static  char g_szCurrSavePageName[PLXBROW_FILENAME_MAX_LEN];
static  char g_szTempPageName[PLXBROW_FILENAME_MAX_LEN];
static  BOOL bIsPageNameChanged = FALSE;
static  BOOL  bWaitSavePageExKeyEndFlag = FALSE;
////////////////////////////////Save Image////////////////////////////////////////////////

void EntryOfPlxBrowSaveImage(void)
{
#ifdef __PLXBROW_SUPPORT_HOTPLUG_
	if(PMSDC_OK != PlxBrowIsMemCardPluged())
	{
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
			GoBackToHistory(SCR_ID_PLX_BROW_VIEW);
        if ( PMSDC_NONE == PlxBrowIsMemCardPluged() )
		    PLIB_MessageBox(PMBTYPE_WARNING, NULL, (const WCHAR *)get_string(STR_ID_PLX_BROW_INSERTCARD), UI_POPUP_NOTIFYDURATION_TIME);
        else
            PLIB_NotifyMSDCWrong();
		return;
	}
#endif //__PLXBROW_SUPPORT_HOTPLUG_
	PWBE_SaveFocusedImage(PlxBrowGetBrowserHandle(), NULL);
}

////////////////////////////////Save Page////////////////////////////////////////////////

/****************************************************************************
* Function	static BOOL TestAndCreateDownloadDir(void)
* Purpose	test and create the download dir
* Params	
* Return	
* Remarks	
\****************************************************************************/
static BOOL TestAndCreateDownloadDir(const WCHAR* szWidePath)
{
	int    nRet;
	WCHAR	szCurrPath[PLXBROW_MAX_PATH];// enough len for path

	FS_GetCurrentDir((WCHAR*)szCurrPath,PLXBROW_MAX_PATH);
	
	nRet = FS_SetCurrentDir((const WCHAR*)szWidePath);
	if(FS_NO_ERROR == nRet)
	{
		FS_SetCurrentDir((const WCHAR*) szCurrPath);
		return TRUE;
	}
	
	nRet = FS_CreateDir((const WCHAR*)szWidePath);
	if(FS_NO_ERROR == nRet)
	{
		if(FS_NO_ERROR == FS_SetCurrentDir((const WCHAR*)szWidePath))
		{
			FS_SetCurrentDir((const WCHAR*)szCurrPath);
			return TRUE ;
		}
		else
			return FALSE;
	}
	else
		return FALSE;
}


/****************************************************************************
* Function	static int	GetNumOfPagSaved(void)
* Purpose	get the number of pages saved
* Params	
* Return	
* Remarks	
\****************************************************************************/
static int	GetNumOfPagSaved(void)
{
	FS_HANDLE		handle;
	FS_DOSDirEntry	file_info;
	U8 				file_name[PLXBROW_FILENAME_MAX_LEN + 2];
	char			szFindMode[10];
	WCHAR			szCurrPath[PLXBROW_MAX_PATH];
	int				nTotalFileNum = 0;
	WCHAR               *szWideChar;

	if(NULL == (szWideChar = PlxAppMalloc(PLXBROW_MAX_PATH*2)))
	{
		PLIB_MessageBox(PMBTYPE_ERROR, NULL, (const WCHAR *)get_string(STR_ID_PLX_BROW_ERR_MEMORYMALLOC), UI_POPUP_NOTIFYDURATION_TIME);
		return -1;
	}
	FS_GetCurrentDir((WCHAR*)szCurrPath,PLXBROW_MAX_PATH);
	AnsiiToUnicodeString((S8 *)szWideChar, (S8 *)GetPBUISavePageDirectory());
	FS_SetCurrentDir((const WCHAR*)szWideChar);

	AnsiiToUnicodeString((S8 *) szFindMode, (S8 *)"*.*ml*");
	handle = FS_FindFirst((WCHAR *)szFindMode, 0, FS_ATTR_DIR, &file_info, (WCHAR *)file_name, PLXBROW_FILENAME_MAX_LEN/2);
	if (handle < 0)
	{
		nTotalFileNum = 0;
		FS_SetCurrentDir((const WCHAR*)szCurrPath);
		return nTotalFileNum;
	}
	else
	{
		AnsiiToUnicodeString((S8 *) szWideChar, (S8 *)PLXBROW_PWBE_SAVE_LOG_FILENAME);
		if(0 != pfnUnicodeStrcmp((const S8*)file_name,(const S8*)szWideChar))
			nTotalFileNum=1;
		while(FS_NO_ERROR == FS_FindNext(handle,&file_info,(WCHAR*)file_name,PLXBROW_FILENAME_MAX_LEN/2))
		{
			if(0 != pfnUnicodeStrcmp((const S8*)file_name,(const S8*)szWideChar))
				nTotalFileNum ++;
		}
	}	
	PlxAppFree(szWideChar);
	FS_FindClose(handle);
	FS_SetCurrentDir((const WCHAR*)szCurrPath);

	return nTotalFileNum;

}


/****************************************************************************
* Function	static BOOL	IsCurrPageExisted(const char* szWidePageName)
* Purpose	test whether the page of the same name is exist 
* Params	
* Return	
* Remarks	
\****************************************************************************/
static BOOL	IsCurrPageExisted(const char* szWidePageName)
{
	FS_HANDLE		handle;
	FS_DOSDirEntry	file_info;
	U8 				file_name[PLXBROW_FILENAME_MAX_LEN + 2];
	WCHAR			szCurrPath[PLXBROW_MAX_PATH];
	BOOL            bIsExist;
	WCHAR			*szWideChar;

	if(NULL == (szWideChar = PlxAppMalloc(PLXBROW_MAX_PATH*2)))
		return FALSE;
	FS_GetCurrentDir((WCHAR*)szCurrPath,PLXBROW_MAX_PATH);
	AnsiiToUnicodeString((S8 *)szWideChar, (S8 *)GetPBUISavePageDirectory());
	FS_SetCurrentDir((const WCHAR*)szWideChar);
	PlxAppFree(szWideChar);

	handle = FS_FindFirst((WCHAR *)szWidePageName, 0, 0, &file_info, (WCHAR *)file_name, PLXBROW_FILENAME_MAX_LEN/2);
	if (handle < 0)
		bIsExist = FALSE;
	else
		bIsExist = TRUE;

	FS_FindClose(handle);
	FS_SetCurrentDir((const WCHAR*)szCurrPath);

	return bIsExist;

}


/****************************************************************************
* Function	static int GetPageTypeStrIDAndSuffix(int PageType, char* szSuffix)
* Purpose	get the type string and suffixname from PageType 
* Params	
* Return	
* Remarks	
\****************************************************************************/
static int GetPageTypeStrIDAndSuffix(int PageType, char* szSuffix)
{
	int  nTypeStrId;

	switch(PageType)
	{
	case MMT_WML1: 
	case MMT_WML2:
	case MMT_WMLS:
	case MMT_WMLSC:
		
		nTypeStrId = STR_ID_PLX_BROW_SAVEPAGE_TYPE_WML;
		if(szSuffix)
		//	pfnUnicodeStrcpy((PS8)szSuffix,(const PS8)L".wml");
		AnsiiToUnicodeString((S8 *)szSuffix, (S8 *)".wml");
		break;

	case  MMT_WMLC:
		nTypeStrId = STR_ID_PLX_BROW_SAVEPAGE_TYPE_WMLC;
		if(szSuffix)
		//	pfnUnicodeStrcpy((PS8)szSuffix, (const PS8)L".wmlc");
			AnsiiToUnicodeString((S8 *)szSuffix, (S8 *)".wmlc");
		break;

	case MMT_HTML:
		nTypeStrId = STR_ID_PLX_BROW_SAVEPAGE_TYPE_HTML;
		if(szSuffix)
		//	pfnUnicodeStrcpy((PS8)szSuffix, (const PS8)L"html");
			AnsiiToUnicodeString((S8 *)szSuffix, (S8 *)".html");
		break;
	
	case MMT_XHTMLBASIC:
	case MMT_XHTMLMP:
		nTypeStrId = STR_ID_PLX_BROW_SAVEPAGE_TYPE_XHTML;
		if(szSuffix)
		//	pfnUnicodeStrcpy((PS8)szSuffix, (const PS8)L".xhtml");
			AnsiiToUnicodeString((S8 *)szSuffix, (S8 *)".xhtml");
		break;
	
	default:
		nTypeStrId = STR_ID_PLX_BROW_SAVEPAGE_TYPE_WML;
		if(szSuffix)
		//	pfnUnicodeStrcpy((PS8)szSuffix, (const PS8)L".wml");
			AnsiiToUnicodeString((S8 *)szSuffix, (S8 *)".wml");
		break;

	}
	return nTypeStrId;
}


/****************************************************************************
* Function	void EntryOfPlxBrowSavePage(void)
* Purpose	entry of the save page screen
* Params	
* Return	
* Remarks	
\****************************************************************************/
void EntryOfPlxBrowSavePage(void)
{
	WCHAR 		*szWideChar;

#ifdef __PLXBROW_SUPPORT_HOTPLUG_
	if(PMSDC_OK != PlxBrowIsMemCardPluged())
	{
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
			GoBackToHistory(SCR_ID_PLX_BROW_VIEW);
        if ( PMSDC_NONE == PlxBrowIsMemCardPluged() )
		    PLIB_MessageBox(PMBTYPE_WARNING, NULL, (const WCHAR *)get_string(STR_ID_PLX_BROW_INSERTCARD), UI_POPUP_NOTIFYDURATION_TIME);
        else
            PLIB_NotifyMSDCWrong();
		return;
	}
#endif // __PLXBROW_SUPPORT_HOTPLUG_
	
	if(NULL == (szWideChar = PlxAppMalloc(PLXBROW_MAX_PATH*2)))
		return;
	AnsiiToUnicodeString((S8 *) szWideChar, (S8 *) GetPBUISavePageDirectory());
	
	if(FALSE == TestAndCreateDownloadDir((const WCHAR*) szWideChar)) 
	{
	//	DisplayPopup((U8*)get_string(STR_ID_PLX_BROW_SAVEPAGE_ERR_DOWNLOADPATH),IMG_ID_PLX_PUBLIC_SUBMENU_POPFAIL /*IMG_GLOBAL_WARNING*/,0,UI_POPUP_NOTIFYDURATION_TIME,WARNING_TONE);
		PLIB_MessageBox(PMBTYPE_ERROR, NULL, (const WCHAR *) GetString(STR_ID_PLX_BROW_SAVEPAGE_ERR_DOWNLOADPATH), UI_POPUP_NOTIFYDURATION_TIME);
		PlxAppFree(szWideChar);
		return;
	}
	PlxAppFree(szWideChar);

	if(PLXBROW_FILE_SAVEPAGE_MAX_NUM <= GetNumOfPagSaved())
	{
		GoBackHistory();
	//	DisplayPopup((U8*)get_string(STR_ID_PLX_BROW_SAVEPAGE_ERR_MAXSAVENUM),IMG_ID_PLX_PUBLIC_SUBMENU_POPFAIL /*IMG_GLOBAL_WARNING*/,0,UI_POPUP_NOTIFYDURATION_TIME,WARNING_TONE);
		PLIB_MessageBox(PMBTYPE_WARNING, NULL, (const WCHAR *) GetString(STR_ID_PLX_BROW_SAVEPAGE_ERR_MAXSAVENUM), UI_POPUP_NOTIFYDURATION_TIME);
		return;
	
	}
	memset(g_szCurrSavePageName,0x0,PLXBROW_FILENAME_MAX_LEN);
	memset(g_szTempPageName,0x0,PLXBROW_FILENAME_MAX_LEN);
	
	EntryPlxBrowSavePageScreen();

}


/****************************************************************************
* Function	static void  EntryPlxBrowSavePageScreen(void)
* Purpose	enter and show the save page screen
* Params	
* Return	
* Remarks	
\****************************************************************************/
#define PLXBROW_SAVEPAGE_INLINEITEM_MAX_NUM 2
static void  EntryPlxBrowSavePageScreen(void)
{
	
	U8* guiBuffer;
	U8* inputBuffer;
	U16 inputBufferSize;
	int nPageTypeStrId;	
	U16  SavePageIcons[PLXBROW_SAVEPAGE_INLINEITEM_MAX_NUM] = { IMG_GLOBAL_L1,0};

	EntryNewScreen(SCR_ID_PLX_BROW_SAVEPAGE, ExitPlxBrowSavePageScreen,
		 NULL, NULL); 
	InitializeCategory57Screen();
	guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_BROW_SAVEPAGE);
	inputBuffer = GetCurrNInputBuffer (SCR_ID_PLX_BROW_SAVEPAGE, &inputBufferSize);
	SetParentHandler(0);
	plxBrowSetSavePageInlineItems();
	RegisterHighlightHandler(plxBrowSavePageHiliteInlineItem);
	if(inputBuffer!=NULL)
		SetCategory57Data(wgui_inline_items, PLXBROW_SAVEPAGE_INLINEITEM_MAX_NUM, inputBuffer); // 2 items
	nPageTypeStrId = GetPageTypeStrIDAndSuffix(PWBE_GetSourceType(PlxBrowGetBrowserHandle()),NULL);
	ShowCategory57Screen((U16)nPageTypeStrId, IMG_ID_PLX_BROW_HOMEPAGE,
						 STR_GLOBAL_EDIT,  IMG_GLOBAL_OK,
						 STR_GLOBAL_BACK, IMG_GLOBAL_BACK,

⌨️ 快捷键说明

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