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

📄 plxbrowpush.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
	fileHandle = FS_Open(fileName, FS_READ_ONLY);
	if (fileHandle < 0) {
		FS_SetCurrentDir((const WCHAR *)szCurrPath);
		return -1;
	}
	pPush = PlxAppMalloc(sizeof(PUSH));
	if (0 == pPush) {
		FS_Close(fileHandle);
		FS_SetCurrentDir((const WCHAR *)szCurrPath);
		return -2;
	}
	pPush->pNext = NULL;
	FS_Read(fileHandle, &pPush->fileUnit, sizeof(FILEUNIT), &nRead);
	pPush->pData = PlxAppMalloc(pPush->fileUnit.lItemSize - sizeof(FILEUNIT));
	if (0 == pPush->pData) {
		PlxAppFree(pPush);
		FS_Close(fileHandle);
		FS_SetCurrentDir((const WCHAR *)szCurrPath);
		return -2;
	}
	FS_Read(fileHandle, pPush->pData, pPush->fileUnit.lItemSize - sizeof(FILEUNIT), &nRead);
	FS_Close(fileHandle);
	UCS2Strcpy(pPush->fileName, (S8 *)fileName);
	
	pPush->pNext = pPushChain;
	pPushChain = pPush;
	FS_SetCurrentDir((const WCHAR *)szCurrPath);
	curPushItems ++;
	return 0;
}

/****************************************************************************
* Function	DeleteItemFromChain
* Purpose	delete a item from the chain
* Params	
* Return	
* Remarks	
\****************************************************************************/
int DeleteItemFromChain(PPUSH pPush){
	PPUSH pMove, pPre;
	char		szCurrPath[FS_MAX_PATH];
	
	if (0 == pPush) {
		return 0;
	}

	FS_GetCurrentDir((WCHAR *)szCurrPath , FS_MAX_PATH/2);
	if(0 > SetPushDir())
	{
		return -1;
	}
	
	pPre = pMove = pPushChain;

	while (pMove && pPush != pMove) {
		pPre = pMove;
		pMove = pMove->pNext;
	}
	if (pPre == pMove) {
		pPushChain = pPushChain->pNext;
	}
	else{
		pPre->pNext = pMove->pNext;
		}

	FS_Delete((const WCHAR *)pMove->fileName);
	if(NULL != pMove->pData)
		PlxAppFree(pMove->pData);
	PlxAppFree(pMove);
	curPushItems --;
	FS_SetCurrentDir((const WCHAR *)szCurrPath);
	return 0;
}


#if 0
/****************************************************************************
* Function	hilight_pushmenu_read
* Purpose	the hilight handler of push menu item read
* Params	
* Return	
* Remarks	
\****************************************************************************/
void hilight_pushmenu_read(void){
	ChangeLeftSoftkey(STR_GLOBAL_OK,IMG_GLOBAL_OK);
	ChangeRightSoftkey(STR_GLOBAL_BACK,IMG_GLOBAL_BACK);
	SetLeftSoftkeyFunction(WBPushUserRead,KEY_EVENT_UP);
	SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
}

/****************************************************************************
* Function	hilight_pushmenu_del
* Purpose	the hilight handler of push menu item delete
* Params	
* Return	
* Remarks	
\****************************************************************************/
void hilight_pushmenu_del(void){
	ChangeLeftSoftkey(STR_GLOBAL_OK,IMG_GLOBAL_OK);
	ChangeRightSoftkey(STR_GLOBAL_BACK,IMG_GLOBAL_BACK);
	SetLeftSoftkeyFunction(WBPushDelItem,KEY_EVENT_UP);
	SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
}

/****************************************************************************
* Function	hilight_pushmenu_delall
* Purpose	the hilight handler of push menu item delete all
* Params	
* Return	
* Remarks	
\****************************************************************************/
void hilight_pushmenu_delall(void){
	ChangeLeftSoftkey(STR_GLOBAL_OK,IMG_GLOBAL_OK);
	ChangeRightSoftkey(STR_GLOBAL_BACK,IMG_GLOBAL_BACK);
	SetLeftSoftkeyFunction(WBPushDelAllItems,KEY_EVENT_UP);
	SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
}

#endif 
/****************************************************************************
* Function	void ConfirmJump (void)
* Purpose	r
* Params	
* Return	
* Remarks	
\****************************************************************************/
extern void ConfirmInputJumpTo(void);

void ConfirmJump (void)
{	
	PPUSH  pPush;

#ifdef __PLXBROW_SUPPORT_HOTPLUG_
	if(PMSDC_OK != PlxBrowIsMemCardPluged())
	{
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_PUSH))
			GoBackToHistory(SCR_ID_PLX_BROW_PUSH);
        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_		
	pPush = WBPushGetCurSelItem(curSelItem);
	WBPushSetReadState(pPush, 1);
	PlxBrowSetWapStatusIcon();
	if( 0 ==  pfnUnicodeStrlen((const S8*)jumpToBuffer))
	{
		GoBackHistory();
		PLIB_MessageBox(PMBTYPE_WARNING, NULL, (const WCHAR *)GetString(STR_ID_PLX_BROW_ERR_INVALIDURL),UI_POPUP_NOTIFYDURATION_TIME);
		return;
	}
	ConfirmInputJumpTo();
	DeInitPlxBrowPush();
	
}


/****************************************************************************
* Function	void RejectJump (void)
* Purpose		
* Params	
* Return	
* Remarks	
\****************************************************************************/
void RejectJump (void)
{
	pfnUnicodeStrcpy((S8*)jumpToBuffer,(const S8*)"");
	GoBackToHistory(SCR_ID_PLX_BROW_PUSH);
}



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

#ifdef __PLXBROW_SUPPORT_HOTPLUG_
	if(PMSDC_OK != PlxBrowIsMemCardPluged())
	{
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_PUSH))
			GoBackToHistory(SCR_ID_PLX_BROW_PUSH);
        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_

	PLIB_ConfirmBox(NULL, (const WCHAR *) get_string(STR_ID_PLX_BROW_PUSHBOX_JUMPTOSIURL), NULL,NULL, 
				NULL,0, (void*)&nToneId, 0, JumpToPushSiUrlConfirmCB);
	SetKeyHandler(WBPushKeyEndHandler, 	KEY_END,KEY_EVENT_DOWN);
}


/****************************************************************************
* Function	static void JumpToPushSiUrlConfirmCB(PLIBEVENT event)
* Purpose		
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void JumpToPushSiUrlConfirmCB(PLIBEVENT event)
{
	if(PEVENT_POSITIVE == event)
		ConfirmJump();
	else if( PEVENT_NEGTIVE == event)
		RejectJump();
}


/****************************************************************************
* Function	void WBPushUserRead(void){
* Purpose		
* Params	
* Return	
* Remarks	
\****************************************************************************/
void WBPushUserRead(void){
	PPUSH	pPush;
//	SIINFO  siInfo;
	char*   pszUtf8Url;

#ifdef __PLXBROW_SUPPORT_HOTPLUG_
	if(PMSDC_OK != PlxBrowIsMemCardPluged())
	{
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_PUSH))
			GoBackToHistory(SCR_ID_PLX_BROW_PUSH);
        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_
	
	pPush = WBPushGetCurSelItem(curSelItem);
	DumpPush(pPush);
	if (0 == pPush) {
		return;
	}
	switch(pPush->fileUnit.class) {
	case PUSH_SI:
//		WBPushParseSIItem(pPush->pData, &siInfo);
		pszUtf8Url = (char*)((char *)(pPush->pData) + sizeof(SIFILEITEM) + ((PSIFILEITEM)(pPush->pData))->szTitle);
		if(pszUtf8Url == NULL)
			pfnUnicodeStrcpy((S8*)jumpToBuffer,(const S8*)"");
		else
			PlxUTF82UCS2((char *)jumpToBuffer,(char *)pszUtf8Url, strlen(pszUtf8Url), PLXBROW_URL_NAME_LEN *2);

		EntryJumpToPushSIUrlScreen();
		//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_PUSH_MENU,SCR_ID_PLX_BROW_PUSH_MENU);
		break;
		
	case PUSH_TEXT:
//		WBPushReadTextContent((char *)((char*)(pPush->pData) + sizeof(PTXTFILEITEM)));
		WBPushReadTextContent(pPush);
		
#ifdef 	__PLXBROW_DEBUG_
		PlxTrace("[%d]  WBPushUserRead -----> PUSH_TXT :: push data = %s", __LINE__, (char *)pPush->pData);
#endif	

		break;
	}
}


/****************************************************************************
* Function	WBPushDelItem
* Purpose	enter delete a push item screen
* Params	
* Return	
* Remarks	
\****************************************************************************/
void WBPushDelItem(void){

	int   nToneId = WARNING_TONE;

#ifdef __PLXBROW_SUPPORT_HOTPLUG_
	if(PMSDC_OK != PlxBrowIsMemCardPluged())
	{
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_PUSH))
			GoBackToHistory(SCR_ID_PLX_BROW_PUSH);
        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_
	PLIB_ConfirmBox(NULL, (const WCHAR *) get_string(STR_ID_PLX_BROW_DELETE_CONFIRM), NULL,NULL, 
				NULL,0, (void*)&nToneId, 0, DelSelPushItemConfirmCB);
	SetKeyHandler(WBPushKeyEndHandler, 	KEY_END,KEY_EVENT_DOWN);
}


/****************************************************************************
* Function	static void DelSelPushItemConfirmCB(PLIBEVENT event)
* Purpose		
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void DelSelPushItemConfirmCB(PLIBEVENT event)
{
	if(PEVENT_POSITIVE == event)
		WBPushDoDelItem();
	else if( PEVENT_NEGTIVE == event)
		GoBack2TheHistory();
}

/****************************************************************************
* Function	WBPushDelAllItems
* Purpose	enter delete all items' screen
* Params	
* Return	
* Remarks	
\****************************************************************************/
void WBPushDelAllItems(void){

	int   nToneId = WARNING_TONE;

#ifdef __PLXBROW_SUPPORT_HOTPLUG_
	if(PMSDC_OK != PlxBrowIsMemCardPluged())
	{
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_PUSH))
			GoBackToHistory(SCR_ID_PLX_BROW_PUSH);
        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_
	PLIB_ConfirmBox(NULL, (const WCHAR *) get_string(STR_ID_PLX_BROW_DELETEALL_CONFIRM), NULL,NULL, 
				NULL,0, (void*)&nToneId, 0, DelAllPushItemsConfirmCB);
	SetKeyHandler(WBPushKeyEndHandler, 	KEY_END,KEY_EVENT_DOWN);
}


/****************************************************************************
* Function	static void DelAllPushItemsConfirmCB(PLIBEVENT event)
* Purpose		
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void DelAllPushItemsConfirmCB(PLIBEVENT event)
{
	if(PEVENT_POSITIVE == event)
		WBPushDoDelAllItems();
	else if( PEVENT_NEGTIVE == event)
		GoBack2TheHistory();
}

/****************************************************************************
* Function	WBPushDoDelItem
* Purpose	execute deleting a item
* Params	
* Return	
* Remarks	
\****************************************************************************/
void WBPushDoDelItem(void){
	PPUSH pPush;
	U16  prevScrId;

#ifdef __PLXBROW_SUPPORT_HOTPLUG_
	if(PMSDC_OK != PlxBrowIsMemCardPluged())
	{
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_PUSH))
			GoBackToHistory(SCR_ID_PLX_BROW_PUSH);
        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_
	pPush = WBPushGetCurSelItem(curSelItem);
	DeleteItemFromChain(pPush);
	if(curSelItem == curPushItems)
		curSelItem --;
	PlxBrowSetWapStatusIcon();
	if(0 < curPushItems)
		GoBackToHistory(SCR_ID_PLX_BROW_PUSH);
	else
	{
		DeInitPlxBrowPush();
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
			GoBackToHistory(SCR_ID_PLX_BROW_VIEW);
		else 
		{
			if(MMI_TRUE == GetPreviousScrnIdOf(SCR_ID_PLX_BROW_PUSH, &prevScrId))
				GoBackToHistory(prevScrId);
			else
				GoBackHistory();
		}
	}
	PLIB_MessageBox(PMBTYPE_SUCCESS,NULL, (const WCHAR *)get_string(STR_ID_PLX_BROW_DELETE_SUCCESS), UI_POPUP_NOTIFYDURATION_TIME);
}


/****************************************************************************
* Function	WBPushDoDelAllItems
* Purpose	execute deleting all items
* Params	
* Return	
*

⌨️ 快捷键说明

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