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

📄 plxbrowfile.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
	for(i = DeleteID; i<PLXBROW_FILE_SAVEPAGE_MAX_NUM -1; i++)
	{
		g_plxBrowFileStore[i] = g_plxBrowFileStore[i+1];
		g_PageInfo[i].nPageSize = g_PageInfo[i+1].nPageSize;
		g_PageInfo[i].nSubDocSize = g_PageInfo[i+1].nSubDocSize;
	}
	g_plxBrowFileStore[i] = NULL;
	g_PageInfo[i].nPageSize = 0;
	g_PageInfo[i].nSubDocSize = 0;
}


/****************************************************************************
* Function	static void  GetPageSavedInfo(const WCHAR* pszWidePageName, PPageSavedInfo pPageInfo)
* Purpose	get file size informations of pages saved
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void  GetPageSavedInfo(const WCHAR* pszWidePageName, PPageSavedInfo pPageInfo)
{
	WCHAR*			p;
	int				nWideNameLen;
	char			szPageDir[PLXBROW_FILENAME_MAX_LEN ];//no more  than 14 chars
	char 			*szSavePath;
	char 			*szCurrPath;
	FS_HANDLE		handle;
	FS_DOSDirEntry	file_info;
	U8 				file_name[PLXBROW_FILENAME_MAX_LEN + 2];
	WCHAR			szWideChar[7];
	
	if(NULL == pszWidePageName || 0 ==(nWideNameLen = pfnUnicodeStrlen((const S8*)pszWidePageName)))
		return;
	if(NULL == (szSavePath = PlxAppMalloc(PLXBROW_MAX_PATH*2)))
		return ;
	if(NULL == (szCurrPath = PlxAppMalloc(PLXBROW_MAX_PATH*2)))
	{
		PlxAppFree(szSavePath);
		return;
	}
		
	FS_GetCurrentDir((WCHAR *)szSavePath, (UINT) PLXBROW_MAX_PATH);
//	FS_SetCurrentDir((const WCHAR*)PLXBROW_FILE_DOWNLOAD_PATH);
	for(p = (WCHAR*) pszWidePageName + nWideNameLen; p>pszWidePageName; p--)
	{
		AnsiiToUnicodeString((S8 *) szWideChar, (S8 *)".");
		if(0 == pfnUnicodeStrncmp((const S8*)p, (const S8*)szWideChar, 1))
		{
			pfnUnicodeStrncpy((S8*)szPageDir,(const S8*)pszWidePageName,(U32)( p-pszWidePageName));
			AnsiiToUnicodeString((S8 *)szWideChar, (S8 *)"_files");
			pfnUnicodeStrcat((S8*)szPageDir,(const S8*)szWideChar);
			break;
		}
	}
	
	AnsiiToUnicodeString((S8 *)szCurrPath, (S8 *) GetPBUISavePageDirectory());
	pfnUnicodeStrcat((S8*)szCurrPath,(const S8*)szPageDir);
	if(FS_NO_ERROR == FS_SetCurrentDir((const WCHAR*)szCurrPath))
	{
		AnsiiToUnicodeString((S8 *) szWideChar, (S8 *)"*.*");
		if (0 <= (handle = FS_FindFirst((WCHAR *)szWideChar, 0, FS_ATTR_DIR, &file_info, (WCHAR *)file_name, PLXBROW_FILENAME_MAX_LEN/2)))
		{
			pPageInfo->nSubDocSize += file_info.FileSize;
			
			while(FS_NO_ERROR == FS_FindNext(handle,&file_info,(WCHAR*)file_name,PLXBROW_FILENAME_MAX_LEN/2))
			{
				pPageInfo->nSubDocSize += file_info.FileSize;
			}
		}
		FS_FindClose(handle);
	}
//	FS_SetCurrentDir((const WCHAR*)PLXBROW_FILE_DOWNLOAD_PATH);
	FS_SetCurrentDir((const WCHAR*)szSavePath);
	PlxAppFree(szSavePath);
	PlxAppFree(szCurrPath);
	return ;
	
}

/****************************************************************************
* Function	static void  EntryPlxBrowFileScreen(void)
* Purpose	enter the file screen
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void  EntryPlxBrowFileScreen(void)
{
	U8* guiBuffer;

	LoadFileStore();
	EntryNewScreen(SCR_ID_PLX_BROW_FILE,NULL, EntryPlxBrowFileScreen, NULL);
	guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_BROW_FILE);	
	RegisterHighlightHandler(GetCurHiliteFileItemID);

	ShowCategory184Screen(STR_ID_PLX_BROW_FILE, IMG_ID_PLX_BROW_FILES,
				STR_ID_PLX_BROW_OPTION,IMG_GLOBAL_OK,
				STR_GLOBAL_BACK, IMG_GLOBAL_BACK,
				g_NumOfFileSaved,
				GetNextFileItem, GetFileItemHint, g_curHiliteFileID, guiBuffer);

	SetKeyHandler(JumpToSelFileScreen, KEY_ENTER, KEY_EVENT_UP); 
	SetLeftSoftkeyFunction(EntryPlxBrowFileMenu, KEY_EVENT_UP);
	SetRightSoftkeyFunction(ExitPlxBrowFileScreen,KEY_EVENT_UP);
//	ClearKeyHandler(KEY_END,KEY_EVENT_DOWN);
	SetKeyHandler(FileKeyEndHandler,KEY_END,KEY_EVENT_DOWN);
	SetKeyHandler(ExitPlxBrowFileScreen,KEY_LEFT_ARROW, KEY_EVENT_DOWN);
	SetKeyHandler(EntryPlxBrowFileMenu,KEY_RIGHT_ARROW, KEY_EVENT_DOWN);

}


/****************************************************************************
* Function	static void GetCurHiliteFileItemID(S32 itemHilite)
* Purpose			
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void GetCurHiliteFileItemID(S32 itemHilite)
{
	g_curHiliteFileID = itemHilite;
}


/****************************************************************************
* Function	static BOOL GetNextFileItem( S32 item_index, UI_string_type str_buff, UI_image_type* img_buff_p, U8 str_img_mask )
* Purpose		
* Params	
* Return	
* Remarks	
\****************************************************************************/
static pBOOL GetNextFileItem( S32 item_index, UI_string_type str_buff, UI_image_type* img_buff_p, U8 str_img_mask )
{	
	if(0 > item_index || PLXBROW_FILE_SAVEPAGE_MAX_NUM <= item_index)
		return FALSE;

	pfnUnicodeStrcpy((S8*)str_buff, g_plxBrowFileStore[item_index]);
	*img_buff_p = (UI_image_type)GetImage((U16)(IMG_GLOBAL_L1 + item_index));
	
	return TRUE;
}


/****************************************************************************
* Function	static S32 GetFileItemHint ( S32 item_index, UI_string_type *hint_array )
* Purpose	get tips of file size 		
* Params	
* Return	
* Remarks	
\****************************************************************************/
static S32 GetFileItemHint ( S32 item_index, UI_string_type *hint_array )
{
	char   szUtf8SizeStr[20];
	char  szWideSizeStr[20];
	float    nSize;

	if(0 > item_index || PLXBROW_FILE_SAVEPAGE_MAX_NUM <=item_index)
		return -1;
//	memset(szUtf8SizeStr,0x0,20);
	nSize =(float)(g_PageInfo[item_index].nPageSize + g_PageInfo[item_index].nSubDocSize);
	nSize = nSize /1024; // k
	sprintf(szUtf8SizeStr,"%.2f",nSize);
//	AnsiiNToUnicodeString((S8 *)hint_array[item_index],( S8 *)szUtf8SizeStr,strlen(szUtf8SizeStr));
	PlxUTF82UCS2((char * )szWideSizeStr,( char *)szUtf8SizeStr, strlen(szUtf8SizeStr), 20);
	pfnUnicodeStrcpy((S8*)hint_array[0],(const S8*)szWideSizeStr);
	AnsiiToUnicodeString((S8 *) szWideSizeStr, (S8 *)"K" );
	pfnUnicodeStrcat((S8*)hint_array[0],(const S8*)szWideSizeStr);
	return 1;
}


/****************************************************************************
* Function	static void ExitPlxBrowFileScreen(void)
* Purpose			
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void ExitPlxBrowFileScreen(void)
{
	DeInitPlxBrowFile();
	if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
		GoBackToHistory(SCR_ID_PLX_BROW_VIEW);
	else
		GoBackHistory();
}



/****************************************************************************
* Function	static void EntryPlxBrowFileMenu(void)
* Purpose	show menu screen of file screen		
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void EntryPlxBrowFileMenu(void)
{
	CreateFileMenu();
	if (NULL == g_hPlxBrowFileMenu) 
		return;
	ModifyFileMenu();
	PlxSetDMenuDispInfo(0, IMG_ID_PLX_BROW_FILES, 0,0, 0,0);
	PlxShowDMenu(g_hPlxBrowFileMenu, SCR_ID_PLX_BROW_FILE_MENU, STR_ID_PLX_BROW_FILE,
		FileMenuNty,EntryPlxBrowFileMenu);
//	ClearKeyHandler(KEY_END,KEY_EVENT_DOWN);
	SetKeyHandler(FileKeyEndHandler,KEY_END,KEY_EVENT_DOWN);
}



/****************************************************************************
* Function	static int CreateFileMenu(void)
* Purpose	
* Params	
* Return	
* Remarks	
\****************************************************************************/
static int CreateFileMenu(void)
{
	if(NULL != g_hPlxBrowFileMenu)
		return 0;
	g_hPlxBrowFileMenu = PlxCreateDMenu(0);
	if (NULL == g_hPlxBrowFileMenu) 
	{
		return -1;	//create menu failed
	}
	PlxInsertDMenuItem(g_hPlxBrowFileMenu, -1, MF_ENABLED, DMENU_ID_PLX_BROW_FILE_VIEW,//浏览
		(const char *)get_string(STR_ID_PLX_BROW_HISTORY_VIEW), IMG_GLOBAL_L1);
	
	PlxInsertDMenuItem(g_hPlxBrowFileMenu, -1, MF_ENABLED, DMENU_ID_PLX_BROW_FILE_DELETE,//delete
	(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_DELETE), IMG_GLOBAL_L2);

	PlxInsertDMenuItem(g_hPlxBrowFileMenu, -1, MF_ENABLED, DMENU_ID_PLX_BROW_FILE_DELETEALL,//删除全部
		(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_DELETEALL), IMG_GLOBAL_L3);
	return 0;
}


/****************************************************************************
* Function	static void  ModifyFileMenu(void)
* Purpose	
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void  ModifyFileMenu(void)
{	
	unsigned short isMenuEnabled;
	isMenuEnabled = g_NumOfFileSaved > 0 ? MF_ENABLED : MF_DISABLED; 
	PlxModifyDMenuItem(g_hPlxBrowFileMenu,0,(unsigned short)(isMenuEnabled|MF_BYPOSITION),(unsigned long)DMENU_ID_PLX_BROW_FILE_VIEW,
					(const char *)get_string(STR_ID_PLX_BROW_HISTORY_VIEW),(unsigned short)IMG_GLOBAL_L1);

	PlxModifyDMenuItem(g_hPlxBrowFileMenu,1,(unsigned short)(isMenuEnabled|MF_BYPOSITION), (unsigned long)DMENU_ID_PLX_BROW_FILE_DELETE,
					(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_DELETE),(unsigned short)IMG_GLOBAL_L2);
	
	PlxModifyDMenuItem(g_hPlxBrowFileMenu,2,(unsigned short)(isMenuEnabled|MF_BYPOSITION), (unsigned long)DMENU_ID_PLX_BROW_FILE_DELETEALL,
					(const char *)get_string(STR_ID_PLX_BROW_BOOKMARK_DELETEALL),(unsigned short)IMG_GLOBAL_L3);

	return ;
}



/****************************************************************************
* Function	static int FileMenuNty(HDMENU hMenu, unsigned long id, unsigned long event)
* Purpose  	notify function for history menus
* Params	
* Return	
* Remarks	
\****************************************************************************/
static int FileMenuNty(HDMENU hMenu, unsigned long id, unsigned long event)
{

	switch(event) 
	{
	case ENT_RIGHT:
	case ENT_OK:
		switch(id) 
		{
		case DMENU_ID_PLX_BROW_FILE_VIEW:
			JumpToSelFileScreen();
			//temp solution for the problem of wrong focus item in dynamic menu 
			//when there are two screen id in history stack but only one menu resoure in memory;
			if(FALSE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
				DeleteBetweenScreen(SCR_ID_PLX_BROW_FILE_MENU,SCR_ID_PLX_BROW_FILE_MENU);
			break;

		case DMENU_ID_PLX_BROW_FILE_DELETE:
			if(ENT_OK == event)
				EntryDelFileConfirmScreen();
			break;
	
		case DMENU_ID_PLX_BROW_FILE_DELETEALL:
			if(ENT_OK == event)
				EntryDelAllFileConfirmScreen();
			break;

		default:
			return -1;
		}
		break;

	case ENT_LEFT:	
//	if(id == DMENU_ID_PLX_BROW_FILE_DELETE || id == DMENU_ID_PLX_BROW_FILE_DELETEALL)
//		break;
	case ENT_BACK:
		GoBackHistory();
		if(hMenu)
			PlxDestroyDMenu(hMenu);
		g_hPlxBrowFileMenu = NULL;
		break;
	default:
		return -1;
	}

	return 0;
}



/****************************************************************************
* Function	static  void JumpToSelFileScreen(void)
* Purpose	view the selected page saved in browser screen
* Params	
* Return	
* Remarks	
\***************************************************************************/
static  void JumpToSelFileScreen(void)
{
	char 	*szUtf8FileName;
	char 	*szWideFileName;
	int   nWideFileNameLen;
//	WCHAR  szWideChar[PLXBROW_MAX_PATH];

#ifdef __PLXBROW_SUPPORT_HOTPLUG_
	if(PMSDC_OK != PlxBrowIsMemCardPluged())
	{
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_FILE))
			GoBackToHistory(SCR_ID_PLX_BROW_FILE);
        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(0> g_curHiliteFileID || g_curHiliteFileID >= g_NumOfFileSaved )
		return;
	if(NULL == (szWideFileName = PlxAppMalloc(PLXBROW_MAX_PATH*2)))
		return;
	if(NULL == (szUtf8FileName = PlxAppMalloc(PLXBROW_MAX_PATH)))
	{
		PlxAppFree(szWideFileName);
		return;
	}		
	AnsiiToUnicodeString((S8 *) szWideFileName, (S8 *)"file://");
//	AnsiiToUnicodeString((S8 *) szWideChar, (S8 *)"file://");
//	pfnUnicodeStrcpy((S8*)szWideFileName,(const S8*)szWideChar);
	AnsiiToUnicodeString((S8 *) szWideFileName+14, (S8 *)GetPBUISavePageDirectory());
//	AnsiiToUnicodeString((S8 *) szWideChar, (S8 *)PLXBROW_FILE_DOWNLOAD_PATH);
//	pfnUnicodeStrcat((S8*)szWideFileName,(const S8*)szWideChar);
	pfnUnicodeStrcat((S8*)szWideFileName,(const S8*)g_plxBrowFileStore[g_curHiliteFileID]);
	nWideFileNameLen = pfnUnicodeStrlen((const PS8)szWideFileName);
	PlxWideCharToUTF8((const char *)szWideFileName, nWideFileNameLen,szUtf8FileName, PLXBROW_MAX_PATH);

	DeInitPlxBrowFile(); //退出file 模块
	EntryOfPlxBrowserView((const char*)szUtf8FileName);
	PlxAppFree(szWideFileName);
	PlxAppFree(szUtf8FileName);
}


/****************************************************************************
* Function	static void EntryDelFileConfirmScreen (void)
* Purpose		
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void EntryDelFileConfirmScreen (void)
{
	int   nToneId = WARNING_TONE;

⌨️ 快捷键说明

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