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