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

📄 newsddt.c

📁 这一款新闻类业务的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
                    return TRUE;
                case IDS_MENU_HELP:                 //帮助
                    pme->m_enCustState = CUST_STATE_ViewHelp;
                    pme->m_enMenuType = MENU_Null;
                    List_DeleteAll(pme,pme->m_nIdx);
                    pme->m_nIdx--;
                    ShowErrMsg(pme,IDS_HELP_CONTENT,0);
                    return TRUE;
                default:
                    break;
                }
            }
        }
    	break;
    default:
        break;
    }
    return FALSE;
}

//function:检查定制内容是否存在
boolean Customise_IsExist(Newsddt *pme,AECHAR *pName)
{
    uint32              dwRdCnt = 0;
    AECHAR *            pDbName = NULL;
    uint16              nCustType = NULL;
    IDatabase *         pDb = pme->m_pCustomiseDBFile;
    IDBRecord *         pDbRd = NULL;
    char *              pUrl = NULL;

    if (!pDb || !pName)
        return FALSE;

    dwRdCnt = IDATABASE_GetRecordCount(pDb);
    if (dwRdCnt == 0)
    {
        return FALSE;
    }
    IDATABASE_Reset(pDb);
    while(NULL != (pDbRd = IDATABASE_GetNextRecord(pDb)))
    {
        Record_GetField(pDbRd,&nCustType,&pDbName,&pUrl,FALSE);
        if (pDbName && WSTRLEN(pDbName)>0 && !WSTRCMP(pName,pDbName))
        {
            BREW_FREE(pDbRd);
            return TRUE;
        }
        BREW_FREE(pDbRd);
    }
    return FALSE;
}
uint8 Customise_AddRecord(Newsddt *pme,uint16 nCustType, AECHAR *pText, char* pUrl)
{
    IDBRecord*	pDBRecord = NULL;

    if (!pText||(pText&&WSTRLEN(pText)==0))
        return ADDDBRD_Failed;

    //判断是否存在
    if(Customise_IsExist(pme,pText/*,nCustType*/))
        return ADDDBRD_Exist;

    CustRecord_Init(pme);                                   //初始化本地存储的定制记录信息
    pme->m_nCustType = nCustType;                           //定制种类
    WSTRCPY(pme->m_wszCustName,pText);                      //定制内容名字
    if (nCustType == CUSTOMISE_CHANNEL)
    {
        if(!pUrl||(pUrl&&STRLEN(pUrl)==0))
            return ADDDBRD_Failed;
        STRCAT(pme->m_szUrl, pUrl);
    }
    else
    {
        STRCAT(pme->m_szUrl,"none");
    }
    {                                                       //判断剩余空间是否足够
        uint32 dwSize = IFILEMGR_GetFreeSpace(pme->m_pFileMgr,NULL);
        if(pme->m_pFileMgr &&FREESPACE_MINISIZE > dwSize)
            return ADDDBRD_NoSpace;
    }

    //在数据库中添加数据
    IDATABASE_Reset(pme->m_pCustomiseDBFile);
    pDBRecord = IDATABASE_CreateRecord(pme->m_pCustomiseDBFile , pme->m_tagCustRecord , 3);
    if (!pDBRecord)
        return ADDDBRD_Failed;
    BREW_FREE(pDBRecord);
    return ADDDBRD_Success;
}

//////////////////////////////////////////////////////////////////////////
//退出应用
void ShowExitMsg(Newsddt * pme)
{
    pme->m_bExitApp = TRUE;
    if(pme->m_nIdx>=0) IMENUCTL_SetActive(pme->m_pList[pme->m_nIdx], FALSE);

    //设置Softkey
    Newsddt_SetSoftkey(pme);

    if(PROMPTBOX_SetResText(pme->m_ppbMsg, IDS_EXIT_TITLE,IDS_EXIT_TEXT))
        PROMPTBOX_SetActive(pme->m_ppbMsg, TRUE);
}

//////////////////////////////////////////////////////////////////////////
//帮助关于
void HelpAbout_ShowList(Newsddt *pme)
{
    IMENUCTL_SetProperties(pme->m_pList[1], MP_UNDERLINE_TITLE);
    IMENUCTL_SetTitle(pme->m_pList[1], NEWSDDT_RES_FILE, IDS_HELPABOUT, NULL);
    List_AddItem(pme->m_pList[1],IDS_HELP_TITLE,IDB_NET_LIST);
    List_AddItem(pme->m_pList[1],IDS_ABOUT_TITLE,IDB_NET_LIST);
    List_AddItem(pme->m_pList[1],IDS_RETTOMAIN,IDB_RETTOMAIN);                    //返回主菜单
    pme->m_nIdx = 1;
}

boolean HelpAbout_HandleEvent(Newsddt *pme, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
    if (APP_STATE_HelpAbout != pme->m_eAppState)
        return FALSE;
    switch(eCode)
    {
    case EVT_COMMAND:
        switch(wParam)
        {
        case IDS_HELP_TITLE:     //在线帮助
            MakeURL(pme, (char*)"?cmd=50");
            SendRequest(pme);
            if (pme->m_pList[pme->m_nIdx])
            {
                IMENUCTL_SetActive(pme->m_pList[pme->m_nIdx],FALSE);
            }
        	return TRUE;
        case IDS_ABOUT_TITLE:    //关于我们
            HelpAbout_ShowAbout(pme);
            return TRUE;
        default:
            break;
        }
    	break;
    default:
        break;
    }
    return FALSE;
}

void HelpAbout_ShowAbout(Newsddt * pme)
{
	AECHAR szTitle[8];		//标题
	AECHAR szVer[16];		//版本及点数
	AECHAR szTmp[128];
	AECHAR szText[128];		//内容

	//标题
	ISHELL_LoadResString(pme->a.m_pIShell, NEWSDDT_RES_FILE, IDS_ABOUT_TITLE, szTitle, sizeof(szTitle));
	
	//内容
	ISHELL_LoadResString(pme->a.m_pIShell, NEWSDDT_RES_FILE, IDS_ABOUT_TEXT, szTmp, sizeof(szTmp));
	ISHELL_GetAppVersion(pme->a.m_pIShell, szVer, sizeof(szVer));
	WSPRINTF(szText, sizeof(szText), szTmp, szVer);
	PROMPTBOX_SetText(pme->m_ppbMsg, szTitle, szText);
	PROMPTBOX_SetActive(pme->m_ppbMsg, TRUE);
    //设置Softkey
    Newsddt_SetSoftkey(pme);
	PROMPTBOX_Redraw(pme->m_ppbMsg);
}

void ShowText(Newsddt * pme,char *pText,uint16 nTitle)
{
    AECHAR wszTitle[10];
    AECHAR *pHelpTxt = NULL;

    if(pme->m_nIdx>=0)
        IMENUCTL_SetActive(pme->m_pList[pme->m_nIdx], FALSE);

    pHelpTxt = GetWSTR((const byte *)pText,pHelpTxt);
    ISHELL_LoadResString(pme->a.m_pIShell,NEWSDDT_RES_FILE,nTitle,wszTitle,sizeof(wszTitle));

    if(pHelpTxt && PROMPTBOX_SetText(pme->m_ppbMsg, wszTitle,pHelpTxt))
        PROMPTBOX_SetActive(pme->m_ppbMsg, TRUE);

    //设置Softkey
    Newsddt_SetSoftkey(pme);
    FREEIF(pHelpTxt);
}

/*-------------------------------------------------------------------
//阅读界面,在线阅读和本地阅读
-------------------------------------------------------------------*/
boolean ReadText_Init(Newsddt* pme)
{
    //设置Softkey
    if(pme->m_pSoftkey)
    { 
        //设置Softkey
        Newsddt_SetSoftkey(pme);
    }
    if(pme->m_pReadBox)
    {
        CReadBox_SetAutoRead(pme->m_pReadBox ,(pme->m_bAutoRead)?TRUE:FALSE);
    }
    return TRUE;
}

boolean ReadText_RetToRead(Newsddt* pme)
{
    //如果是阅读图书时的菜单,要返回图书显示界面
    if (MENU_Read == pme->m_enMenuType)
    {
        List_DeleteAll(pme, pme->m_nIdx);
        pme->m_nIdx--;
        pme->m_enMenuType = MENU_Null;
        if (pme->m_bFullScr)
        {
            pme->m_ReadRect.dy = pme->m_nDevHeight;
            pme->m_pReadBox->m_ncyPageLn = (uint16)(pme->m_nDevHeight - BAR_BOTTOM);
        }
        else
        {
            pme->m_ReadRect.dy = pme->m_nDevHeight-BAR_BOTTOM;
            pme->m_pReadBox->m_ncyPageLn = (uint16)(pme->m_nDevHeight - 2*BAR_BOTTOM);
        }
        if(pme->m_pReadBox)
        {
            CReadBox_SetAutoRead(pme->m_pReadBox ,(pme->m_bAutoRead)?TRUE:FALSE);
        }
        CReadBox_SetTextFB(pme->m_pReadBox,SPACE_BETWEEN_LINE);
        CReadBox_SetActive(pme->m_pReadBox,TRUE);
        CReadBox_Draw(pme->m_pReadBox);
        return TRUE;
    }
    return FALSE;
}

boolean ReadText_SetReadFile(Newsddt* pme,char *pFilepath,uint16 nLabel)
{
    if (!pme->m_pReadBox)
    {
        return FALSE;
    }
    //设置阅读文件前要先清除前面打开的文件
    CReadBox_ClsReadFile(pme->m_pReadBox);

    //设置阅读文件
    if(FALSE == CReadBox_SetReadFile(pme->m_pReadBox , pFilepath , nLabel , NULL))
    {
        //显示错误信息
        ShowErrMsg(pme,IDS_ERR_OPENBK,0);//show message
        return FALSE;
    }
    return TRUE;
}

void ReadText_Notify(Newsddt* pMe , byte nFlag , uint32  nMaxLine , uint32 nIndexLine)
{
    pMe->m_nMaxIndex = nMaxLine;
    pMe->m_nNowIndex = nIndexLine;
    switch(nFlag) 
    {
    case READRC_ERRAL_AERR:          //错误
        {
            ActionStop(pMe);
            switch(nMaxLine) 
            {
            case READRC_CREAT_IDER:  //创建索引失败
            case READRC_FIMAP_IERR:
            case READRC_PAGEG_IERR:
                CReadBox_SetActive(pMe->m_pReadBox,FALSE);
                ShowErrMsg(pMe,IDS_ERR_CRIDX,0);
                break;
            }
        }
        break;
    case READRC_STATE_OPEN:
        {
            CReadBox_SetActive(pMe->m_pReadBox , TRUE);
            StartAction(pMe);
        }
        break;
    case READRC_CREAT_INDX:	        //建立索引过程
        {
            pMe->m_nOpenIndex = (byte)nMaxLine;
        }
        break;
    case READRC_CREAT_IDXB:	        //退出索引建立
        {
            ActionStop(pMe);
            List_Show(pMe);
        }
        break;
    case READRC_STATE_STOK:			//正常回调
        {
            ActionStop(pMe);
            CReadBox_SetActive(pMe->m_pReadBox,TRUE);   //设置激活状态
            ReadText_Init(pMe);
            break;
        }
        break;
    }
}
boolean	ReadText_HandleEvent(Newsddt* pMe , AEEEvent eCode , uint16 wParam , uint32 dwParam)
{
    if (!pMe->m_pReadBox ||(pMe->m_pReadBox && !CReadBox_IsActive(pMe->m_pReadBox)))
    {
        return FALSE;
    }
    if (wParam>AVK_0 && wParam<AVK_POUND)
    {
        return FALSE;
    }
    if(pMe->m_pReadBox && CReadBox_HandleEvent(pMe->m_pReadBox , eCode , wParam , dwParam))
        return TRUE;
    switch(eCode) 
    {
    case EVT_KEY:
        switch(wParam) 
        {
        case AVK_SOFT2:
        case AVK_CLR:
            CReadBox_SetActive(pMe->m_pReadBox,FALSE);
            CReadBox_ClsReadFile(pMe->m_pReadBox);
            FREEIF(pMe->m_pWebBody);
            List_Show(pMe);
            return TRUE;
            break;
        case AVK_SOFT1:
        case AVK_SELECT:
            CReadBox_SetActive(pMe->m_pReadBox , FALSE);
            if(Newsddt_ShowMenu(pMe,MENU_Read))    //显示阅读菜单
                return TRUE;
            else
                break;
        }
    }
    return FALSE;
}

//////////////////////////////////////////////////////////////////////////
//系统处理动画公用滚动条
void StartAction(Newsddt* pMe)
{
    pMe->m_bIsPlay = TRUE;
    pMe->m_nOpenIndex = 0;
    ActionDraw(pMe);
}
void ActionDraw(Newsddt* pMe)
{
    if(FALSE == pMe->m_bIsPlay)
        return;
    switch(pMe->m_pReadBox->m_eState) 
    {
    case READBOX_STATE_CRIN:
        {
            AEERect	tagRect;
     

⌨️ 快捷键说明

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