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

📄 newsddt.c

📁 这一款新闻类业务的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
                SendRequest(pme);
                break;
            case MAINMENU_SEARCHNEWS:        //新闻搜索
                pme->m_eAppState = APP_STATE_SearchNews;
                NewsSearch_Init(pme);
                break;
            case MAINMENU_HOTSEARCH:         //热点搜索
                pme->m_eAppState = APP_STATE_HotSearch;
                MakeURL(pme,"?cmd=6");
                SendRequest(pme);
                break;
            case MAINMENU_MYFAV:             //我的收藏
                pme->m_eAppState = APP_STATE_MyFav;
                MyFav_ShowList(pme);
                break;
            case MAINMENU_SETTING:           //功能设置
                pme->m_eAppState = APP_STATE_Setting;
                UserSetting_ShowList(pme);
                break;
            case MAINMENU_RECOMAND:          //精彩推荐
                pme->m_eAppState = APP_STATE_Recomand;
                MakeURL(pme,WEB_HOST_RECOMMEND2);
                SendRequest(pme);
                break;
            case MAINMENU_HELPABOUT:         //帮助关于
                pme->m_eAppState = APP_STATE_HelpAbout;
                HelpAbout_ShowList(pme);
                List_Show(pme);
                break;
            case MAINMENU_EXITAPP:           //退出应用:
                pme->m_eAppState = APP_STATE_ExitApp;
                ShowExitMsg(pme);
            	break;
            }
            return TRUE;
        default:
            break;
        }
    	break;
    default:
        break;
    }
    return FALSE;
}

//////////////////////////////////////////////////////////////////////////
//热点头条
void BigNews_Init(Newsddt* pme)
{
    AECHAR wszBigNews[5];
    char *pBigNews = NULL;
    char *pUrl = NULL;

    ISHELL_LoadResString(pme->a.m_pIShell,NEWSDDT_RES_FILE,IDS_BIGNEWS,wszBigNews,sizeof(wszBigNews)); //头条新闻
    if (WSTRLEN(wszBigNews) == 0)
        return;
    pBigNews = WStrEncode(pme->a.m_pIShell,wszBigNews);
    AddString(&pUrl,"%s%s","?cmd=2&category=1&title=",pBigNews);
    MakeURL(pme,pUrl);
    SendRequest(pme);
    FREEIF(pBigNews);
    FREEIF(pUrl);
}
//////////////////////////////////////////////////////////////////////////
//用户定制
void Customise_ShowList(Newsddt *pme)
{
    int8    nIdx = 0;

    for(nIdx = pme->m_nIdx;nIdx>0;nIdx--)
    {
        List_DeleteAll(pme, nIdx);
    }
    pme->m_nIdx = 1;
    if (!pme->m_pCustomiseDBFile)
        return;

    IMENUCTL_SetProperties(pme->m_pList[pme->m_nIdx], MP_UNDERLINE_TITLE);
    IMENUCTL_SetTitle(pme->m_pList[pme->m_nIdx], NEWSDDT_RES_FILE, IDS_USERCUSTOMISE_TITLE, NULL);
    if (IDATABASE_GetRecordCount(pme->m_pCustomiseDBFile) == 0)        //用户定制数据库为空
    {
        pme->m_enCustState = CUST_STATE_AddNewCust;
        //List_AddItem(pme->m_pList[pme->m_nIdx],IDS_CUSTOMISE_NEWS,IDB_LABEL);           //定制新闻   //去掉输入功能
        List_AddItem(pme->m_pList[pme->m_nIdx],IDS_CUSTOMISE_NEWSTYPE,IDB_NET_LIST);    //定制栏目
        List_AddItem(pme->m_pList[pme->m_nIdx],IDS_RETTOMAIN,IDB_RETTOMAIN);            //返回主菜单
    }
    else
    {
        AECHAR*    pName = NULL;
        uint16     nCusType = 0;
        IDBRecord* pDbRd = NULL;
        CtlAddItem ItemInfo = {0};

        pme->m_enCustState = CUST_STATE_CustList;
        IDATABASE_Reset(pme->m_pCustomiseDBFile);
        while(NULL != (pDbRd = IDATABASE_GetNextRecord(pme->m_pCustomiseDBFile)))
        {
            AECHAR *pwszTmName = NULL;
            char *pszTmName = NULL;
            char *pszCustTxt = NULL;
            char *pszName = NULL;

            Record_GetField(pDbRd,&nCusType,&pName,NULL,FALSE);      //取每个字段下的数据
            if (!pName||(pName&&WSTRLEN(pName)==0)||nCusType == 0)
            {
                BREW_FREE(pDbRd);
                continue;
            }
            if (nCusType == CUSTOMISE_NEWS)             //定制新闻
            {
                ItemInfo.wImage = IDB_LABEL;
            }
            else if (nCusType == CUSTOMISE_CHANNEL)     //定制栏目
            {
                ItemInfo.wImage = IDB_NET_LIST;
            }
            else
            {
                BREW_FREE(pDbRd);
                continue;
            }
            if (nCusType == CUSTOMISE_NEWS)
            {
                pszCustTxt = AECHARTOCHAR(pme->m_wszCustTxt);
                pszName = AECHARTOCHAR(pName);
                AddString(&pszTmName,pszCustTxt,pszName);
                FREEIF(pszCustTxt);
                FREEIF(pszName);
                pwszTmName = GetWSTR((const byte*)pszTmName,pwszTmName);
                ItemInfo.pText = pwszTmName;
            }
            else if (nCusType == CUSTOMISE_CHANNEL)             //定制栏目
            {
                ItemInfo.pText = pName;
            }
            else
            {
                BREW_FREE(pDbRd);
                continue;
            }
            ItemInfo.dwData = (uint32)WSTRDUP(pName);           //添加列表项
            ItemInfo.pImage = NULL;
            ItemInfo.pszResImage = NEWSDDT_RES_FILE;
            ItemInfo.pszResText = NULL;
            ItemInfo.wItemID = IDBRECORD_GetID(pDbRd);          //获取数据在数据库中的ID为ItemID
            ItemInfo.wText = 0;
            if(!IMENUCTL_AddItemEx(pme->m_pList[pme->m_nIdx],&ItemInfo))
            {
                BREW_FREE(pDbRd);
                FREEIF(pwszTmName);
                FREEIF(pszTmName);
                FREEIF(ItemInfo.dwData);
                return;
            }
            FREEIF(pszTmName);
            FREEIF(pwszTmName);
            BREW_FREE(pDbRd);
        }
    }
    List_Show(pme);
}
boolean Customise_HandleEvent(Newsddt* pme,AEEEvent eCode,uint16 wParam,uint32 dwParam)
{
    if (APP_STATE_Customise != pme->m_eAppState)
        return FALSE;

    switch(eCode)
    {
    case EVT_KEY:
        switch(wParam)
        {
        case AVK_SELECT:
        case AVK_SOFT1:
            if (pme->m_enMenuType == MENU_Null && pme->m_enCustState == CUST_STATE_CustList)
            {
                pme->m_enCustState = CUST_STATE_CustMenu;
                if(Newsddt_ShowMenu(pme,MENU_Cust))      //定制新闻菜单
                    return TRUE;
            }
            break;
        case AVK_CLR:
        case AVK_SOFT2:
            switch(pme->m_enCustState)
            {
            case CUST_STATE_AddNewCust:      //添加新的定制内容
                if (pme->m_nIdx >= 2)
                {
                    pme->m_enCustState = CUST_STATE_CustList;
                    Customise_ShowList(pme);
                }
                else
                {
                    pme->m_enCustState = CUST_STATE_Null;
                    Newsddt_BackToMain(pme);
                }
                return TRUE;
            case CUST_STATE_CustList:        //已经定制的内容列表
                pme->m_enCustState = CUST_STATE_Null;
                Newsddt_BackToMain(pme);
                return TRUE;
            case CUST_STATE_AddChannel:      //定制栏目
                pme->m_enCustState = CUST_STATE_CustList;
                Customise_ShowList(pme);
                return TRUE;
            case CUST_STATE_CustMenu:        //用户定制的菜单(包含查看,添加定制,删除定制,帮助等功能)
                pme->m_enCustState = CUST_STATE_CustList;
                pme->m_enMenuType = MENU_Null;
                Customise_ShowList(pme);
                return TRUE;
            case CUST_STATE_AddNews:         //定制新闻
            case CUST_STATE_ViewHelp:        //查看帮助
            case CUST_STATE_Null:            //没有处于定制状态
            default:
                break;
            }
            break;
        }
        break;
    case EVT_COMMAND:
        {
            CtlAddItem  ai = {0};
            IMENUCTL_GetItem(pme->m_pList[pme->m_nIdx],IMENUCTL_GetSel(pme->m_pList[pme->m_nIdx]),&ai);
            if ((AECHAR*)ai.dwData)
            {
                ListData *pLD = (ListData*)ai.dwData;
                if(pme->m_enCustState==CUST_STATE_AddChannel)
                {
                    enAddDBrdErr enFavErr = Customise_AddRecord(pme,CUSTOMISE_CHANNEL,(AECHAR*)ai.pText,pLD->szUrl);
                    pme->m_enCustState=CUST_STATE_CustList;
                    if (pme->m_nIdx>=1)
                    {
                        List_DeleteAll(pme,pme->m_nIdx);
                        pme->m_nIdx--;
                    }
                    switch(enFavErr)
                    {
                    case ADDDBRD_Success:             //成功
                        ShowErrMsg(pme,IDS_ERR_CUSTOK,0);
                        break;
                    case ADDDBRD_Exist:               //已经存在
                        ShowErrMsg(pme,IDS_ERR_CUSTEXIST,0);
                        break;
                    case ADDDBRD_Failed:              //失败
                    case ADDDBRD_NoSpace:             //空间不足
                    default:
                        ShowErrMsg(pme,IDS_ERR_CUSTFAILED,0);
                        break;
                    }
                    return TRUE;
                }
            }
            else
            {
                switch(wParam)
                {
                case IDS_CUSTOMISE_NEWS:            //定制新闻
                    {
                        AEERect rc;
                        uint8 nCnt = 0;
                        for (nCnt = 1;nCnt<=pme->m_nIdx;nCnt++)
                        {
                            IMENUCTL_SetActive(pme->m_pList[nCnt], FALSE);
                        }
                        pme->m_enCustState = CUST_STATE_AddNews;
                        IDISPLAY_ClearScreen(pme->a.m_pIDisplay);
                        pme->m_eInpType = INPUTTEXT_CUSTOMISE;
                        InputText_Init(pme);
                        pme->m_nTitleID = IDS_CUSTOMISE_CONTENT;
                        //SETAEERECT(&rc,0,3*BAR_BOTTOM,pme->m_nDevWidth,BAR_BOTTOM);
                        //InputText_SetRect(pme,&rc);
                        InputText_SetInpBox(pme,AEE_TM_LETTERS,INPUTTEXT_MAXINPUT);
                        InputText_Redraw(pme);
                        InputText_ShowInpMode(pme);
                        InputText_SetActive(pme,TRUE);
                    }
                    return TRUE;
                case IDS_CUSTOMISE_NEWSTYPE:        //定制栏目
                    //pme->m_enCustState = CUST_STATE_AddChannel;//这种类似的问题都要在获取了后台提供的列表后再改变状态
                    MakeURL(pme,"?cmd=11");
                    SendRequest(pme);
                    if (pme->m_pList[pme->m_nIdx])
                    {
                        IMENUCTL_SetActive(pme->m_pList[pme->m_nIdx],FALSE);
                    }
                    return TRUE;
                case IDS_SOFTKEY_VIEW:              //查看
                    {
                        uint8 nIdx = 0;

                        pme->m_enCustState = CUST_STATE_ViewCust;
                        nIdx = pme->m_nIdx-1;
                        pme->m_enMenuType = MENU_Null;
                        if (pme->m_pList[nIdx])
                        {
                            uint16 nID = 0;
                            IMENUCTL_SetActive(pme->m_pList[nIdx],TRUE);
                            nID = IMENUCTL_GetSel(pme->m_pList[nIdx]);
                            IMENUCTL_SetActive(pme->m_pList[nIdx],FALSE);
                            if (Record_GetData(pme,nID,FALSE) && pme->m_nCustType!=CUSTOMISE_NULL && WSTRLEN(pme->m_wszCustName)>0)
                            {
                                char * pszSearchURL = NULL;
                                char * pTmName = WStrEncode(pme->a.m_pIShell,pme->m_wszCustName);

                                if (CUSTOMISE_NEWS == pme->m_nCustType)             //定制新闻
                                {
                                    AddString(&pszSearchURL,"?cmd=8&keyword=%s",pTmName);
                                }
                                else if (CUSTOMISE_CHANNEL == pme->m_nCustType)     //定制栏目
                                {
                                    AddString(&pszSearchURL,"%s",pme->m_szUrl);
                                }
                                MakeURL(pme,pszSearchURL);
                                SendRequest(pme);
                                FREEIF(pszSearchURL);
                                FREEIF(pTmName);
                                for(nIdx = pme->m_nIdx;nIdx>0;nIdx--)
                                {
                                    List_DeleteAll(pme, nIdx);
                                }
                                pme->m_nIdx = 0;
                                //pme->m_eAppState = APP_STATE_SearchNews;
                            }
                            else
                            {
                                List_DeleteAll(pme,pme->m_nIdx);
                                pme->m_nIdx--;
                                //数据库读取数据出错
                                ShowErrMsg(pme,IDS_ERR_READDB,0);
                            }
                            return TRUE;
                        }

                    }
                    return TRUE;
                case IDS_MENU_ADDCUST:              //新增定制
                    {
                        //uint8 nIdx = 0;
                        pme->m_enMenuType = MENU_Null;
                        pme->m_enCustState = CUST_STATE_AddNewCust;
                        //pme->m_bAddCust = TRUE;
                        //List_DeleteAll(pme,pme->m_nIdx);
                        //for(nIdx = pme->m_nIdx;nIdx>0;nIdx--)
                        //{
                        //    List_DeleteAll(pme, nIdx);
                        //}
                        //pme->m_nIdx = 1;
                        pme->m_nIdx++;
                        IMENUCTL_SetProperties(pme->m_pList[pme->m_nIdx], MP_UNDERLINE_TITLE);
                        IMENUCTL_SetTitle(pme->m_pList[pme->m_nIdx], NEWSDDT_RES_FILE, IDS_USERCUSTOMISE_TITLE, NULL);
                        //List_AddItem(pme->m_pList[pme->m_nIdx],IDS_CUSTOMISE_NEWS,IDB_LABEL);           //定制新闻    //去掉输入功能
                        List_AddItem(pme->m_pList[pme->m_nIdx],IDS_CUSTOMISE_NEWSTYPE,IDB_NET_LIST);    //定制栏目
                        List_AddItem(pme->m_pList[pme->m_nIdx],IDS_RETTOMAIN,IDB_RETTOMAIN);            //返回主菜单
                        List_Show(pme);
                    }
                    return TRUE;
                case IDS_MENU_DELCUST:              //删除定制
                    pme->m_bDelCust = TRUE;
                    pme->m_enCustState = CUST_STATE_Null;
                    ShowErrMsg(pme,IDS_ERR_DELCONFIRM,0);

⌨️ 快捷键说明

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