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