📄 plxbrowpush.c
字号:
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 + -