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

📄 list.c

📁 这一款新闻类业务的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "newsddt.h"

boolean List_Save(Newsddt * pme,enListType enLt)
{
    int         j = 0;
    char *      p1 = NULL;
    ListData *  pListData = NULL;
    CtlAddItem  ai = {0};
    AECHAR      wsz[128] = {0};
    IMenuCtl    *pm = NULL;

    if (pme->m_nIdx == 0)
    {
        List_DeleteAll(pme,1);
    }
    pm = pme->m_pList[pme->m_nIdx];
    IMENUCTL_GetItem(pm,IMENUCTL_GetSel(pm),&ai);
    switch(ai.wFont)
    {
    case 30:        //上一页
    case 31:        //下一页
    case 32:        //跳转
        //if (MENU_Read != pme->m_enMenuType)
        //{
            List_DeleteAll(pme,pme->m_nIdx);
            pme->m_nIdx--;
        //}
        break;
    default:
        break;
    }

    pme->m_nIdx++;
    pm = pme->m_pList[pme->m_nIdx];
    if (!pm)
    {
        return FALSE;
    }

    p1 = GetPartString((char *)pme->m_pWebBody, '@', 0);
    //标题
    if(NULL!=p1 && STRLEN(p1)>0)
    {
        GetWSTR((const byte *)p1, wsz);
        IMENUCTL_SetTitle(pm, NULL, 0, wsz);
        if (LIST_SearchRes == enLt &&
            (APP_STATE_SearchNews == pme->m_eAppState||         //新闻搜索
            APP_STATE_HotSearch == pme->m_eAppState))           //热点搜索
        {
            CtlAddItem ai;
            AECHAR* pwTmText = NULL;
            char* pTmText = NULL;
            char* pTmCustTxt1 = AECHARTOCHAR(pme->m_wszCustTxt1);

            InputText_SetText(pme,(AECHAR*)wsz);
            AddString(&pTmText,pTmCustTxt1,p1);
            pwTmText = GetWSTR((const byte*)pTmText,pwTmText);
            ai.pText = pwTmText;
            ai.pImage = NULL;
            ai.pszResImage = NEWSDDT_RES_FILE;
            ai.pszResText = NEWSDDT_RES_FILE;
            ai.wText = 0;
            ai.wImage = IDB_LABEL;
            ai.wItemID = IDS_CUST_TEXT1;
            ai.dwData = NULL;
            IMENUCTL_AddItemEx(pm, &ai);
            FREEIF(pTmCustTxt1);
            FREEIF(pTmText);
            FREEIF(pwTmText);
        }
    }
    FREEIF(p1);

    p1 = GetPartString((char *)pme->m_pWebBody, '@', 1);
    //列表
    if(NULL!=p1 && STRLEN(p1)>0)
    {
        uint16 nI = 0;
        char *p12 = GetPartString(p1,'|',nI);
        j++;
        while (NULL!=p12 && STRLEN(p12)>0)
        {
            char *p121 = NULL;
            pListData = (ListData*)MALLOC(sizeof(ListData));
            if (!pListData)
            {
                return FALSE;
            }
            pListData->nCurPage = 0;
            pListData->nPageCnt = 0;
            pListData->nNewsID = 0;
            ZEROAT(pListData->szUrl);

            p121 = GetPartString(p12,'$',2);
            if (NULL!=p121 && STRLEN(p121)>0)
            {
                if (STRCHR(p121,'#'))
                {
                    char *p1211 = GetPartString(p121,'#',0);
                    char *p1212 = GetPartString(p121,'#',1);
                    if (p1211 && STRLEN(p1211)>0)
                    {
                        ai.wFont = ATOI(p1211);
                    }
                    if (p1212 && STRLEN(p1212)>0)
                    {
                        if (1 == ATOI(p1212))
                        {
                            ai.wImage = IDB_TEXT;
                        }
                        else if (34 == ATOI(p1212))
                        {
                            ai.wImage = IDB_SLEEPING;
                        }
                        else if (31 == ATOI(p1212))
                        {
                            ai.wImage = IDB_GOOD;
                        }
                        else if (32 == ATOI(p1212))
                        {
                            ai.wImage = IDB_BAD;
                        }
                        else if (33 == ATOI(p1212))
                        {
                            ai.wImage = IDB_FLOWER;
                        }
                        else if (35 == ATOI(p1212))
                        {
                            ai.wImage = IDB_BOMB;
                        }
                        else
                        {
                            ai.wImage = IDB_NET_LIST;
                        }
                    }
                    else
                    {
                        ai.wImage = IDB_NET_LIST;
                    }
                    FREEIF(p1211);
                    FREEIF(p1212);
                }
                else
                {
                    ai.wFont = ATOI(p121);
                    ai.wImage = IDB_NET_LIST;
                }
            }
            FREEIF(p121);

            p121 = GetPartString(p12,'$',4);
            if (NULL!=p121 && STRLEN(p121)>0)
            {
                pListData->nNewsID = ATOI(p121);
            }
            FREEIF(p121);

            p121 = GetPartString(p12,'$',1);
            if (NULL!=p121 && STRLEN(p121)>0)
            {
                char *p1211 = GetPartString(p121,'#',0);
                if (NULL!=p1211 && STRLEN(p1211)>0)
                {
                    STRCPY(pListData->szUrl,p1211);
                    ai.dwData = (uint32)pListData;
                }
                FREEIF(p1211);

                p1211 = GetPartString(p121,'#',1);
                if (NULL!=p1211 && STRLEN(p1211)>0)
                {
                    char *pU8 = (char*)DecodeU8(pme->a.m_pIShell,p1211);
                    GetWSTR((const byte *)pU8, wsz);
                    FREEIF(pU8);
                    ai.pText = wsz;
                }
                FREEIF(p1211);
            }
            FREEIF(p121);
            if (ai.pText)
            {
                ai.wItemID = j;
                ai.pszResImage = NEWSDDT_RES_FILE;
                ai.pImage = NULL;
                ai.pszResText = NULL;
                ai.wFont = 0;

                if(FALSE == IMENUCTL_AddItemEx(pm, &ai))
                    FREEIF(pListData);
                j++;
            }
            else
                FREEIF(pListData);
            FREEIF(p12);
            pListData = NULL;

            nI++;
            p12 = GetPartString(p1,'|',nI);
        }
        FREEIF(p12);
    }
    FREEIF(p1);

    p1 = GetPartString((char *)pme->m_pWebBody, '@', 2);
    //上一页下一页
    if(NULL!=p1 && STRLEN(p1)>0)
    {
        //上一页
        char *p13 = GetPartString(p1,'#',0);
        if(NULL!=p13 && STRLEN(p13)>0 && 0!=STRCMP("none",p13))
        {
            pListData = (ListData*)MALLOC(sizeof(ListData));
            if (!pListData)
            {
                return FALSE;
            }
            pListData->nCurPage = 0;
            pListData->nPageCnt = 0;
            pListData->nNewsID = 0;
            ZEROAT(pListData->szUrl);
            STRCPY(pListData->szUrl,p13);
            ai.dwData = (uint32)pListData;
            ai.wFont = 30;
            ai.wImage = IDB_PRIOR;
            ai.wText = IDS_PREVIOUS;
            ai.pszResImage = NEWSDDT_RES_FILE;
            ai.pszResText = NEWSDDT_RES_FILE;
            ai.pText = NULL;
            ai.pImage = NULL;
            ai.wItemID = j++;
            IMENUCTL_AddItemEx(pm,&ai);
        }
        FREEIF(p13);
        pListData = NULL;

        //下一页
        p13 = GetPartString(p1, '#', 1);

        if(NULL!=p13 && STRLEN(p13)>0 && 0!=STRCMP("none",p13))
        {
            pListData = (ListData*)MALLOC(sizeof(ListData));
            if (!pListData)
            {
                return FALSE;
            }
            pListData->nCurPage = 0;
            pListData->nPageCnt = 0;
            pListData->nNewsID = 0;
            ZEROAT(pListData->szUrl);
            STRCPY(pListData->szUrl,p13);
            ai.dwData = (uint32)pListData;
            ai.wFont = 31;
            ai.wImage = IDB_NEXT;
            ai.wText = IDS_NEXT;
            ai.pszResImage = NEWSDDT_RES_FILE;
            ai.pszResText = NEWSDDT_RES_FILE;
            ai.pText = NULL;
            ai.pImage = NULL;
            ai.wItemID = j++;
            IMENUCTL_AddItemEx(pm,&ai);
        }
        FREEIF(p13);
        pListData = NULL;
    }
    FREEIF(p1);

    //FixedBy(menglingfang)20071219bug No.24380
    if (APP_STATE_HotSearch == pme->m_eAppState && LIST_HotSearch == enLt)
    {
        List_AddItem(pm,IDS_MENU_VANE,IDB_NET_LIST);   //风向标
    }

    //跳转
    p1 = GetPartString((char *)pme->m_pWebBody, '@', 3);

    if(p1 && STRLEN(p1)>0)
    {
        char *p14 = NULL;
        pListData = (ListData*)MALLOC(sizeof(ListData));
        if (!pListData)
        {
            goto OUTME;
        }
        p14 = GetPartString(p1, '$', 0);
        if (p14&&STRLEN(p14)>0)
        {
            pListData->nCurPage = ATOI(p14);
        }
        FREEIF(p14);
        p14 = GetPartString(p1, '$', 1);
        if (p14&&STRLEN(p14)>0)
        {
            pListData->nPageCnt = ATOI(p14);
            if (pListData->nPageCnt<2)
            {
                pListData->nCurPage = 0;
                FREEIF(p14);
                FREEIF(pListData);
                goto OUTME;
            }
        }
        FREEIF(p14);
        pListData->nNewsID = 0;
        ZEROAT(pListData->szUrl);
        p14 = GetPartString(p1, '$', 2);
        if (p14&&STRLEN(p14)>0)
        {
            STRCPY(pListData->szUrl,(char*)p14);
        }
        FREEIF(p14);
        ai.dwData = (uint32)pListData;
        ai.wFont = 32;
        ai.wImage = IDB_JUMP;
        ai.wText = IDS_JUMPPAGE;
        ai.pszResImage = NEWSDDT_RES_FILE;
        ai.pszResText = NEWSDDT_RES_FILE;
        ai.pText = NULL;
        ai.pImage = NULL;
        ai.wItemID = j++;
        IMENUCTL_AddItemEx(pm,&ai);
    }
OUTME:
    pListData = NULL;
    FREEIF(p1);
    //新列表为空,释放
    if(IMENUCTL_GetItemCount(pm) < 1)
    {
        ShowErrMsg(pme, IDS_ERR_RESPNULL,0);
        List_DeleteAll(pme,pme->m_nIdx);
        pme->m_nIdx--;
        return FALSE;
    }

    if(pme->m_enCustState!=CUST_STATE_AddChannel)
    {
        List_AddItem(pme->m_pList[pme->m_nIdx],IDS_BACK,IDB_RETURN);                 //返回
        List_AddItem(pme->m_pList[pme->m_nIdx],IDS_RETTOMAIN,IDB_RETTOMAIN);         //返回主菜单
    }
    if (LIST_SearchRes == enLt &&
        (APP_STATE_SearchNews == pme->m_eAppState||         //新闻搜索
        APP_STATE_HotSearch == pme->m_eAppState))           //热点搜索
    {
        IMENUCTL_SetFocus(pm,IMENUCTL_GetItemID(pm,1));
    }
    return TRUE;
}

void List_Show(Newsddt *pme)
{
    if (!pme)
        return;

	pme->m_bFlashSCreen = FALSE;
	if(pme->m_bWeb)
		Net_Stop(pme);

	if(pme->m_nIdx>0 && pme->m_nIdx<MAX_LIST)
        IMENUCTL_SetActive(pme->m_pList[pme->m_nIdx-1], FALSE);
	IMENUCTL_SetActive(pme->m_pList[pme->m_nIdx], TRUE);
	IMENUCTL_Redraw(pme->m_pList[pme->m_nIdx]);
    
    //设置Softkey
    Newsddt_SetSoftkey(pme);
}

void List_DeleteAll(Newsddt* pme, uint8	nIdx)
{
	int nCnt,i;
    ListData *pListData = NULL;
    uint32 dwData = 0;

	if(pme->m_pList[nIdx] == NULL)
		return;
	nCnt = IMENUCTL_GetItemCount(pme->m_pList[nIdx]);
	for(i=0;i<nCnt;i++)
	{
		IMENUCTL_GetItemData(pme->m_pList[nIdx], IMENUCTL_GetItemID(pme->m_pList[nIdx], i), (uint32 *)&dwData);
        pListData = (ListData*)dwData;
		FREEIF(dwData);
	}
	IMENUCTL_Reset(pme->m_pList[nIdx]);
}


boolean List_AddItem(IMenuCtl * pMenu, uint16 wText, uint16 wImage)
{
	CtlAddItem ai;

	ai.pText = NULL;

⌨️ 快捷键说明

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