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

📄 plxbrowpush.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
			if(0 != listItems)
				PlxAppFree(listItems[i]);
		}
		PlxAppFree(listItems);
		listItems = 0;
		
	}
	if(0 != listIcons)
		PlxAppFree(listIcons);
	listIcons = 0;

	bakItemsNum = 0;
#endif		
	DestroyPushChain();
	curSelItem = 0;

	if(NULL != wbPushMenu)
	{	
		PlxDestroyDMenu(wbPushMenu);
		wbPushMenu = NULL;
	}
	
	if(NULL != pContent)
	{
		PlxAppFree(pContent);
		pContent = NULL;
	}
	nPushHistoryFlag = PUSH_NO_IN_HISTORY;
#ifdef 	__PLXBROW_DEBUG_  
    PlxTrace("[%d]  DeInitPlxBrowPush-----> destroy push chain ", __LINE__);
#endif

}



/****************************************************************************
* Function	EntryOfPlxBrowPush
* Purpose	
* Params	
* Return	
* Remarks	
\****************************************************************************/
void EntryOfPlxBrowPush(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_

	if(0 > BuildPushItemChain())
	{
		DeInitPlxBrowPush();
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
			GoBackToHistory(SCR_ID_PLX_BROW_VIEW);
		PLIB_MessageBox(PMBTYPE_ERROR, NULL, (const WCHAR *)get_string(STR_ID_PLX_BROW_ERR_MEMORYMALLOC),UI_POPUP_NOTIFYDURATION_TIME);
//		ExternEndKeyDownFuncPtr = NULL;
		ClearExEndKeyHandler();
		return;
	}
	if(0 >= curPushItems)
	{
		DeInitPlxBrowPush();
		if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
			GoBackToHistory(SCR_ID_PLX_BROW_VIEW);
		PLIB_MessageBox(PMBTYPE_EMPTY, NULL, (const WCHAR *)get_string(STR_GLOBAL_EMPTY), 	UI_POPUP_NOTIFYDURATION_TIME);
//		ExternEndKeyDownFuncPtr = NULL;
		ClearExEndKeyHandler();
		return;
	}
#ifdef 	__PLXBROW_DEBUG_  
    PlxTrace("[%d]   EntryOfPlxBrowPush-----> Enter push list screen ", __LINE__);
#endif

	EnterWBPushScreen();
}


/****************************************************************************
* Function	EnterWBPushScreen
* Purpose	enter push box screen
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void EnterWBPushScreen(void){
	U8* guiBuffer = NULL;
	
	EntryNewScreen(SCR_ID_PLX_BROW_PUSH, NULL, EnterWBPushScreen, NULL);
//	guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_BROW_PUSH);	
	RegisterHighlightHandler(WBPushMarkCurSel);
	if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
		nPushHistoryFlag |= PUSH_AFTER_BROWSER;
	else
		nPushHistoryFlag |= PUSH_BEFORE_BROWSER;
#ifdef 	__PLXBROW_DEBUG_
	PlxTrace("[%d] EnterWBPushScreen -----> pushnum = %d", __LINE__, curPushItems);
#endif

#if 0
	GetWBPushItemInfo();
	ShowCategory84Screen(STR_ID_PLX_BROW_PUSHBOX, IMG_ID_PLX_BROW_PUSHBOX, STR_ID_PLX_BROW_OPTION, IMG_GLOBAL_OK,
						  STR_GLOBAL_BACK, IMG_GLOBAL_BACK,
						  curPushItems, (U8**)listItems, listIcons,
						  LIST_MENU, curSelItem,
						  guiBuffer);
#endif

	ShowCategory184Screen(STR_ID_PLX_BROW_PUSHBOX, IMG_ID_PLX_BROW_PUSHBOX, STR_ID_PLX_BROW_OPTION, IMG_GLOBAL_OK, 
							STR_GLOBAL_BACK, IMG_GLOBAL_BACK, curPushItems, GetNextPushItem, GetNextPushItemHint, 
							curSelItem, guiBuffer);

	SetRightSoftkeyFunction(ExitWbPush,KEY_EVENT_UP);
	SetLeftSoftkeyFunction(EntryWBPushMenu, KEY_EVENT_UP);
	SetKeyHandler(WBPushUserRead,KEY_ENTER,KEY_EVENT_UP);
	SetKeyHandler(WBPushKeyEndHandler,KEY_END,KEY_EVENT_DOWN);
	SetDelScrnIDCallbackHandler(SCR_ID_PLX_BROW_PUSH,PushCBHhandler);
	SetKeyHandler(ExitWbPush,KEY_LEFT_ARROW, KEY_EVENT_DOWN);
	SetKeyHandler(EntryWBPushMenu,KEY_RIGHT_ARROW, KEY_EVENT_DOWN);


#ifdef __PLXBROW_PUSH_TEST_
	SetKeyHandler(TestSIPush,KEY_VOL_UP, KEY_EVENT_UP);
	SetKeyHandler(TestTextPush,KEY_VOL_DOWN, KEY_EVENT_UP);
	SetKeyHandler(TestSIPush,KEY_LEFT_ARROW, KEY_EVENT_UP);
	SetKeyHandler(TestTextPush,KEY_RIGHT_ARROW, KEY_EVENT_UP);
#endif //__PLXBROW_PUSH_TEST_	

}


/****************************************************************************
* Function	PushCBHhandler
* Purpose	
* Params	
* Return	
* Remarks	
\****************************************************************************/
static U8 PushCBHhandler(void* param)
{
	if( 0 == param && FALSE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW) && 
		FALSE == IsScreenPresent(SCR_ID_PLX_BROW_MAIN))
	{
		PAPP_WapShutDown();
	}
	return FALSE;
}


/****************************************************************************
* Function	GetNextPushItem
* Purpose	get push list items and icons
* Params	
* Return	
* Remarks	
\****************************************************************************/
static pBOOL GetNextPushItem( S32 item_index, UI_string_type str_buff, UI_image_type* img_buff_p, U8 str_img_mask )
{
	PPUSH 		pMv;
	int 		i;
	char		*pUtf8Title;
	int			nUtf8TitleLen;
	int			nWideTitleLen;
	char		szPrefix[] = "...";
	char		szWideTemp[PLXBROW_MAX_PATH];
	
	if(0 > item_index || item_index >= curPushItems)
		return FALSE;
	
	for (pMv = pPushChain, i = 0; i < curPushItems && pMv != NULL; ++ i) 
	{
		if(i == item_index)
			break;
		pMv = pMv->pNext;
	}
	if(i == curPushItems || pMv == NULL)
		return FALSE;
	
	switch(pMv->fileUnit.class) 
	{
	case PUSH_SI:
		if( 0 == ((PSIFILEITEM)(pMv->pData))->nRead)
			*img_buff_p =  (UI_image_type)GetImage((U16)IMG_ID_PLX_BROW_PUSHLINKUNREAD);
		else
			*img_buff_p =  (UI_image_type)GetImage((U16)IMG_ID_PLX_BROW_PUSHLINKREAD);
		
		pUtf8Title = (char *)(pMv->pData) + sizeof(SIFILEITEM);
		nUtf8TitleLen = ((PSIFILEITEM)(pMv->pData))->szTitle;
		break;
		
	case PUSH_TEXT:
		if(0 ==((PTXTFILEITEM)(pMv->pData))->bRead)
			*img_buff_p =  (UI_image_type)GetImage((U16) IMG_ID_PLX_BROW_PUSHTXTUNREAD);
		else
			*img_buff_p =  (UI_image_type)GetImage((U16) IMG_ID_PLX_BROW_PUSHTXTREAD);

		pUtf8Title = (char*)(pMv->pData) + sizeof(TXTFILEITEM);
		if(NULL!= pUtf8Title)
			nUtf8TitleLen =strlen(pUtf8Title);
		break;
		
	default:
		return FALSE;
	}
	if( PLXBROW_MAX_PATH /2 -2 <= nUtf8TitleLen)
		nUtf8TitleLen = PLXBROW_MAX_PATH / 2 - 2;
	PlxUTF82UCS2((char *)szWideTemp, (char *)pUtf8Title,nUtf8TitleLen, PLXBROW_MAX_PATH);
	nWideTitleLen = pfnUnicodeStrlen((const S8*)szWideTemp);
	if(nWideTitleLen > MAX_SUBMENU_CHARACTERS)
	{
		pfnUnicodeStrncpy((S8*)str_buff,(const S8*)szWideTemp,MAX_SUBMENU_CHARACTERS - 3);
		PlxUTF82UCS2((char *)szWideTemp, (char *)szPrefix, strlen((const char*)szPrefix), PLXBROW_MAX_PATH);
		pfnUnicodeStrcat((S8*)str_buff,(const S8*)szWideTemp);
	}	
	else
		pfnUnicodeStrcpy((S8*)str_buff,(const S8*)szWideTemp);
	return TRUE;
}


/****************************************************************************
* Function	GetNextPushItemHint
* Purpose	get push list items and icons
* Params	
* Return	
* Remarks	
\****************************************************************************/
static S32 GetNextPushItemHint ( S32 item_index, UI_string_type *hint_array )
{
	return 0;
}

#if 0
/****************************************************************************
* Function	GetWBPushItemInfo
* Purpose	get push list items and icons
* Params	
* Return	
* Remarks	
\****************************************************************************/
static void GetWBPushItemInfo(void)
{
	PPUSH 		pMv;
	int 		i;
	char		*pUtf8Title;
	int			nUtf8TitleLen;
	
	
	if(0 < curPushItems)
	{
		for(i = 0; i<bakItemsNum; i++)
		{
			if(NULL != listItems && NULL != listItems[i])
				PlxAppFree(listItems[i]);
			listItems[i] = NULL;
		}
		if(NULL != listItems)
			PlxAppFree(listItems);
		if(NULL != listIcons)
			PlxAppFree(listIcons);
		listIcons = NULL;
		
		if(NULL == (listItems = PlxAppMalloc(sizeof(PU8) * curPushItems)))
		{
			listItems = NULL;
			return;
		}
		if(NULL == (listIcons= PlxAppMalloc(sizeof(U16) * curPushItems)))
		{
			listIcons = NULL;
		}
#ifdef 	__PLXBROW_DEBUG_
		PlxTrace("%s : %d, pushnum = %d", __FILE__, __LINE__, curPushItems);
#endif		
		for (pMv = pPushChain, i = 0; i < curPushItems && pMv != 0; ++ i) 
		{
			switch(pMv->fileUnit.class) {
			case PUSH_SI:
				pUtf8Title = (char *)(pMv->pData) + sizeof(SIFILEITEM);
				nUtf8TitleLen = ((PSIFILEITEM)(pMv->pData))->szTitle;
#ifdef 	__PLXBROW_DEBUG_
				PlxTrace("PUSH_SI:  num:%d :: push title: %s,   len: %d,   pMV= %d", i, pUtf8Title,nUtf8TitleLen,pMv);
#endif	
				if(NULL != listItems)
				{
					if(0 < nUtf8TitleLen && NULL != (listItems[i] = PlxAppMalloc(nUtf8TitleLen *2 +2)))
						PlxUTF82UCS2((char *) listItems[i], (char *) pUtf8Title,nUtf8TitleLen,nUtf8TitleLen*2);
					else
						listItems[i] = NULL;
				}
				if(NULL != listIcons )
				{
					if( 0 == ((PSIFILEITEM)(pMv->pData))->nRead)
						listIcons[i] = IMG_ID_PLX_BROW_PUSHLINKUNREAD;
					else
						listIcons[i] = IMG_ID_PLX_BROW_PUSHLINKREAD;
#ifdef 	__PLXBROW_DEBUG_
					PlxTrace("num: %d  ::  read = %d", i, (int)( ((PSIFILEITEM)(pMv->pData))->nRead));
#endif			
				}
				break;
				
				
			case PUSH_TEXT:
				pUtf8Title = (char*)(pMv->pData) + sizeof(TXTFILEITEM);
				if(NULL!= pUtf8Title)
					nUtf8TitleLen =strlen(pUtf8Title);
#ifdef 	__PLXBROW_DEBUG_
				PlxTrace("PUSH_TXT:  num:%d :: push title: %s,   len: %d,   pMV= %d", i, pUtf8Title,nUtf8TitleLen,pMv);
#endif	
				if(NULL !=listItems)
				{
					if(0 < nUtf8TitleLen && NULL != (listItems[i] = PlxAppMalloc(nUtf8TitleLen*2+2)))
						PlxUTF82UCS2((char *)listItems[i],( char *)pUtf8Title, nUtf8TitleLen,nUtf8TitleLen*2+2);
					else
						listItems[i] =NULL;
				}
				if(NULL != listIcons)
				{
					if(0 ==((PTXTFILEITEM)(pMv->pData))->bRead)
						listIcons[i] = IMG_ID_PLX_BROW_PUSHTXTUNREAD;
					else
						listIcons[i] = IMG_ID_PLX_BROW_PUSHTXTREAD;
				}
				break;
				
			default:
				break;
			}
			pMv = pMv->pNext;
		}
	}
	bakItemsNum = curPushItems;
}
#endif

/****************************************************************************
* Function	WBPushMarkCurSel
* Purpose	remember the selected item
* Params	
* Return	
* Remarks	
\****************************************************************************/
void WBPushMarkCurSel(S32 selItem){
	curSelItem = selItem;
}


/****************************************************************************
* Function	ExitWbPush
* Purpose	exit push box screen
* Params	
* Return	
* Remarks	
\****************************************************************************/
void ExitWbPush(void){

	PlxBrowSetWapStatusIcon();
	DeInitPlxBrowPush();

	if(TRUE == IsScreenPresent(SCR_ID_PLX_BROW_VIEW))
		GoBackToHistory(SCR_ID_PLX_BROW_VIEW);
	else
	{
		GoBackHistory();
		ClearExEndKeyHandler();
	}
//	ExternEndKeyDownFuncPtr = NULL;
}


#if 0
/****************************************************************************
* Function	EnterWBPushMenu
* Purpose	enter push menu screen
* Params	
* Return	
* Remarks	
\****************************************************************************/
void EnterWBPushMenu(void){
	U16 nStrItemList[MAX_SUB_MENUS]; /* Stores the strings id of submenus returned */
	U16 nNumofItem;      /* Stores no of children in the submenu*/
	U8* guiBuffer;       /* Buffer holding history data */
	U16 SettingsSubmenuImageList[MAX_SUB_MENUS];
	
	SetHiliteHandler(MENU_ID_PLX_BROW_PUSH_READ, hilight_pushmenu_read);
	SetHiliteHandler(MENU_ID_PLX_BROW_PUSH_DEL, hilight_pushmenu_del);
	SetHiliteHandler(MENU_ID_PLX_BROW_PUSH_DELALL, hilight_pushmenu_delall);
	
	EntryNewScreen(SCR_ID_PLX_BROW_PUSH_MENU, NULL, EnterWBPushMenu, NULL);
	
	/* 2 Get current screen to gui buffer  for history purposes*/
	guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_BROW_MENU);	
	
    /* 3. Retrieve no of child of menu item to be displayed */
	nNumofItem = GetNumOfChild(MENU_ID_PLX_BROW_PUSH);
	
	/* 5. Retrieve string ids in sequence of given menu item to be displayed */
	GetSequenceStringIds(MENU_ID_PLX_BROW_PUSH,nStrItemList);
	
	GetSequenceImageIds(MENU_ID_PLX_BROW_PUSH, SettingsSubmenuImageList);
	
	/* 6 Set current parent id*/
	SetParentHandler(MENU_ID_PLX_BROW_PUSH);
	
	/* 7 Register highlight handler to be called in menu screen */
	RegisterHighlightHandler(ExecuteCurrHiliteHandler);
	
	/* 8 Display Category1 Screen */
	
	ShowCategory15Screen(STR_ID_PLX_BROW_MENU, IMG_ID_PLX_BROW,
						  STR_GLOBAL_OK, IMG_GLOBAL_OK,

⌨️ 快捷键说明

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