📄 contentlist.cpp
字号:
{
/*if(m_bMenu)
{
if(m_nState==STATE_SHOW_LIST)
Browse(wParam);
}
else
{
if (wParam==BM_LIST_PREV)
{
if(m_nPageNo<=1)
m_nPageNo = 1;
else
m_nPageNo--;
Create();
}
else if(wParam==BM_LIST_NEXT)
{
m_nPageNo++;
Create();
}
else if(wParam==BM_LIST_GOTO)
{
m_nState = STATE_INPUT_TEXT;
Display();
}
}*/
if (wParam==MENUID_PREV)
{
if(m_nPageNo<=1)
m_nPageNo = 1;
else
m_nPageNo--;
Create();
}
else if(wParam==MENUID_NEXT)
{
m_nPageNo++;
Create();
}
else if(wParam==MENUID_GOTO)
{
m_nState = STATE_INPUT_TEXT;
Display();
}
else
{
Browse(wParam);
}
}
status = TRUE;
break;
}
return status;
}
void CContentList::Browse(uint16 nID)
{
XFRAMEINFO xFrame;
CtlAddItem pMenu;
if (m_pMenu == NULL) return;
xFrame.pApplet = m_pApplet;
xFrame.pDevice = m_pDevice;
xFrame.pNetWork = (void *)m_pNetWork;
xFrame.szMobile = m_szMobile;
xFrame.szMobileType = m_szMobileType;
if (!IMENUCTL_GetItem(m_pMenu, nID, &pMenu))
return;
if((pMenu.dwData & 0xffff) == CONTENT_SMS)
{
m_pObject = new CSmsText;
m_pObject->Init((AECHAR *)pMenu.pText, nID, &xFrame);
m_pObject->Create();
}
else if((pMenu.dwData & 0xffff) == CONTENT_PIC||(pMenu.dwData & 0xffff) == CONTENT_SOUND)
{
m_pObject = new CMedia;
m_pObject->Init((AECHAR *)pMenu.pText, nID, &xFrame);
m_pObject->m_nType = pMenu.dwData;
m_pObject->Create();
}
m_nSelect=nID;
ClearScreen();
}
void CContentList::Construct(char * szBuffer, long nBufferLength)
{
long nIndex;
long cstLong;
long nPostType, nValue;
IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);
if ((nBufferLength <= 0) || (szBuffer == NULL))
return;
// read head info
nIndex = 0;
cstLong = 4;
// prifix
nIndex = 4;
// total size
MEMCPY(&nValue, szBuffer + nIndex, 4);
nIndex += 4;
// post type
MEMCPY(&nPostType, szBuffer + nIndex, 4);
nIndex += 4;
// number of Chunks
MEMCPY(&nValue, szBuffer + nIndex, 4);
nIndex += 4;
// chunkID
MEMCPY(&nValue, szBuffer + nIndex, 4);
nIndex += 4;
// chunkSize
MEMCPY(&nValue, szBuffer + nIndex, 4);
nIndex += 4;
// read text from buffer and add menu item
if (nPostType == REQUEST_LIST)
{// 短信文本目录
// read totalrecord
MEMCPY(&m_nTotalRecord, szBuffer + nIndex, cstLong);
nIndex += cstLong;
// currentpage
MEMCPY(&m_nPageNo, szBuffer + nIndex, cstLong);
nIndex += cstLong;
//pagesize
if(m_nPageNo==1)
MEMCPY(&m_nPageSize, szBuffer + nIndex, cstLong);
nIndex += cstLong;
// 保存信息
if (m_szReceiveData) FREEIF(m_szReceiveData);
m_nBufferLength = nBufferLength - nIndex;
m_szReceiveData = (char *) MALLOC(m_nBufferLength);
if (m_szReceiveData == NULL)
{
ClearScreen();
ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &m_rcScreen, m_szName, IDS_CONTENT_NONE);
return;
}
MEMCPY(m_szReceiveData, szBuffer + nIndex, m_nBufferLength);
/* // 获取菜单的数量
m_nPageIndex = 0;
m_nMenuCount = 0;
while (nIndex < nBufferLength)
{
long nType, nCatalog;
AECHAR * szMenu = NULL;
// read message id
szMenu = (AECHAR * )(szBuffer + nIndex);
nIndex += sizeof(AECHAR) * (WSTRLEN(szMenu) + 1);
// read message id
MEMCPY(&nType, szBuffer + nIndex, cstLong);
nIndex += cstLong;
// read message id
MEMCPY(&nCatalog, szBuffer + nIndex, cstLong);
nIndex += cstLong;
m_nMenuCount ++;
}*/
Display();
}
return;
}
void CContentList::Display()
{
if (m_nState == STATE_INPUT_TEXT)
{
AEERect rect;
AECHAR titleString[40];
// 创建文本控件
if(!m_bResum)
{
ClearScreen();
ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_TEXTCTL,
(void **)&m_pIText);
if (m_pIText == NULL) return;
ITEXTCTL_SetMaxSize(m_pIText, MAX_GOTO_PAGE);
}
if(m_pIText&&ITEXTCTL_IsActive(m_pIText))
{
ITEXTCTL_Redraw(m_pIText);
}
else
{
IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);
if(m_nState==STATE_INPUT_TEXT) //输入页码
{
rect.dx = 100;
rect.dy = 20;
rect.x = (m_pDevice->cxScreen-rect.dx)/2;
rect.y = (m_pDevice->cyScreen-rect.dy-MENU_CY)/2;
ISHELL_LoadResString(m_pApplet->m_pIShell, RES_FILE, IDS_SEARCHPAGE, titleString, sizeof(titleString));
ITEXTCTL_SetProperties(m_pIText, TP_FRAME);
ITEXTCTL_SetMaxSize(m_pIText, 10);
if(m_szPageContent)
{// 还原文本
int nLen = sizeof(AECHAR) * (WSTRLEN(m_szPageContent) + 1);
ITEXTCTL_SetText(m_pIText, m_szPageContent, nLen) ;
}
}
// 设置文本控件标题、大小、属性和矩形
ITEXTCTL_SetTitle(m_pIText, NULL, NULL, titleString);
ITEXTCTL_SetRect(m_pIText, &rect);
// 将文本控件设置为激活状态。
ITEXTCTL_SetActive (m_pIText, TRUE);
ITEXTCTL_SetInputMode(m_pIText, AEE_TM_NUMBERS);
}
ShowPageMenu();
return;
}
long nIndex, cstLong, nCount;
if(!m_bResum)
{
ClearScreen();
ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_MENUCTL, (void **) &m_pMenu);
if (m_pMenu == NULL)
{
ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &m_rcScreen, m_szName, IDS_ERR_MEM);
return;
}
}
if(m_pMenu!=NULL&& IMENUCTL_IsActive(m_pMenu))
{
IMENUCTL_Redraw(m_pMenu);
}
else
{
IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);
// 设置正确的页码
if (m_nPageIndex < 1)
m_nPageIndex = 1;
nIndex = 0;
cstLong = 4;
nCount = 0;
if(!m_szReceiveData) return;
while (nIndex < m_nBufferLength)
{
long nType, nCatalog;
AECHAR * szMenu = NULL;
// read message id
szMenu = (AECHAR * )(m_szReceiveData + nIndex);
nIndex += sizeof(AECHAR) * (WSTRLEN(szMenu) + 1);
// read message id
MEMCPY(&nType, m_szReceiveData + nIndex, cstLong);
nIndex += cstLong;
// read message id
MEMCPY(&nCatalog, m_szReceiveData + nIndex, cstLong);
nIndex += cstLong;
if ((nCatalog & 0xffff) == CONTENT_SMS)
AddMenuItem(m_pMenu, 0, szMenu, BM_TEXT_ICON, (uint16)nType, nCatalog);
else if ((nCatalog & 0xffff) == CONTENT_SOUND)
AddMenuItem(m_pMenu, 0, szMenu, BM_AUDIO_ICON, (uint16)nType, nCatalog);
else if ((nCatalog & 0xffff) == CONTENT_PIC)
AddMenuItem(m_pMenu, 0, szMenu, BM_IMAGE_ICON, (uint16)nType, nCatalog);
else
AddMenuItem(m_pMenu, 0, szMenu, BM_FOLDER_ICON, (uint16)nType, nCatalog);
}
// 上一页、下一页、跳转
{
AECHAR szNull[1];
MEMSET(&szNull, 0, sizeof(AECHAR));
AddMenuItem(m_pMenu, NULL, szNull, BM_LIST_PREV, MENUID_PREV, 0);
AddMenuItem(m_pMenu, NULL, szNull, BM_LIST_NEXT, MENUID_NEXT, 0);
AddMenuItem(m_pMenu, NULL, szNull, BM_LIST_GOTO, MENUID_GOTO, 0);
// IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_MENU_PREV,MENUID_PREV,NULL,NULL);
// IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_MENU_NEXT,MENUID_NEXT,NULL,NULL);
// IMENUCTL_AddItem(m_pMenu,RES_FILE,IDS_MENU_GOTO,MENUID_GOTO,NULL,NULL);
}
// implementation of lightening of main menu background color
{
AEEMenuColors colors;
colors.wMask = MC_BACK | MC_SEL_BACK|MC_TITLE_TEXT;
colors.cTitleText = MAKE_RGB(250, 0, 250);
colors.cBack = MAKE_BACK_COLOR;
colors.cSelBack = MAKE_SEL_COLOR;
AEERect rect;
rect.x = 0;
rect.y = LOGO_HEIGHT;
rect.dx = m_pDevice->cxScreen;
rect.dy = m_pDevice->cyScreen - LOGO_HEIGHT - BOTTOM_MARGIN;
IMENUCTL_SetColors(m_pMenu, &colors);
IMENUCTL_SetRect(m_pMenu,&rect);
IMENUCTL_SetSel(m_pMenu,(uint16)m_nSelect);
}
// end of lightening of main menu background color
// set menu title
if(m_nPageSize!=0)
{
AECHAR* szBuf;
AECHAR* szBuf2;
int nTotalPage=(m_nTotalRecord%m_nPageSize==0) ? m_nTotalRecord/m_nPageSize : m_nTotalRecord/m_nPageSize+1;
int nch1=1;
int nch2=1;
int mod=nTotalPage/10;
while(mod)
{
nch1++;
mod=mod/10;
}
mod=m_nPageIndex/10;
while(mod)
{
nch2++;
mod=mod/10;
}
char* buf;
szBuf=(AECHAR * )MALLOC(sizeof(AECHAR) * (nch1+nch2+2));
szBuf2=(AECHAR * )MALLOC(sizeof(AECHAR) * (WSTRLEN(m_szName)+nch1+nch2+2));
buf = (char * )MALLOC(nch1+nch2+2);
MEMSET(szBuf,0,sizeof(AECHAR) * (nch1+nch2+2));
SPRINTF(buf,"%d/%d",m_nPageNo,nTotalPage);
STR_TO_WSTR(buf,szBuf,sizeof(AECHAR) * (nch1+nch2+2));
MEMSET(szBuf2,0,sizeof(AECHAR) * (WSTRLEN(m_szName)+nch1+nch2+2));
MEMCPY(szBuf2,m_szName,sizeof(AECHAR) *WSTRLEN(m_szName));
WSTRCAT(szBuf2,szBuf);
IMENUCTL_SetTitle(m_pMenu, RES_FILE, NULL, szBuf2);
FREEIF(szBuf2);
FREEIF(szBuf);
FREEIF(buf);
}
else
{
IMENUCTL_SetTitle(m_pMenu, RES_FILE, NULL, m_szName);
}
IMENUCTL_EnableCommand(m_pMenu, true);
IMENUCTL_SetActive(m_pMenu, true);
}
// ShowPageMenu();
}
void CContentList::ClearScreen()
{
if (m_pMenu)
{
IMENUCTL_SetActive(m_pMenu, false);
IMENUCTL_Release(m_pMenu);
}
m_pMenu = NULL;
if(m_pMenuPage)
{
IMENUCTL_SetActive(m_pMenuPage, false);
IMENUCTL_Release(m_pMenuPage);
}
m_pMenuPage = NULL;
if (m_pIText)
ITEXTCTL_Release(m_pIText);
m_pIText = NULL;
if(m_pIStatic)
ReleaseObj((void * *)&m_pIStatic);
m_pIStatic = NULL;
}
void CContentList::ShowPageMenu()
{
AEERect rect;
if(!m_bResum)
{
if(m_pMenuPage)
{
IMENUCTL_SetActive(m_pMenuPage, false);
IMENUCTL_Release(m_pMenuPage);
}
m_pMenuPage = NULL;
ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_SOFTKEYCTL, (void **) &m_pMenuPage);
if (m_pMenuPage != NULL && IMENUCTL_IsActive(m_pMenuPage))
{
return;
}
}
else
{
if(m_pMenuPage&&IMENUCTL_IsActive(m_pMenuPage))
{
if(m_nState==STATE_SHOW_LIST)
IMENUCTL_SetActive(m_pMenuPage, false);
else
IMENUCTL_SetActive(m_pMenuPage, true);
IMENUCTL_Redraw(m_pMenuPage);
}
return;
}
// 增加软键菜单
if(m_nState==STATE_INPUT_TEXT)
{
IMENUCTL_AddItem(m_pMenuPage,RES_FILE,IDS_CONFIRM,IDS_CONFIRM,NULL,NULL);
}
else
{
AddMenuItem(m_pMenuPage, 0, NULL, BM_LIST_PREV, BM_LIST_PREV, 0);
AddMenuItem(m_pMenuPage, 0, NULL, BM_LIST_NEXT, BM_LIST_NEXT, 0);
AddMenuItem(m_pMenuPage, 0, NULL, BM_LIST_GOTO, BM_LIST_GOTO, 0);
// IMENUCTL_AddItem(m_pMenuPage,RES_FILE,MENU_PREV,MENU_PREV,NULL,NULL);
// IMENUCTL_AddItem(m_pMenuPage,RES_FILE,MENU_NEXT,MENU_NEXT,NULL,NULL);
// IMENUCTL_AddItem(m_pMenuPage,RES_FILE,MENU_X,MENU_X,NULL,NULL);
}
// 设置菜单属性
rect.x = 0;
rect.y = m_pDevice->cyScreen - MENU_CY;
rect.dx = m_pDevice->cxScreen;
rect.dy = MENU_CY;
IMENUCTL_SetRect(m_pMenuPage,&rect);
IMENUCTL_EnableCommand(m_pMenuPage, true);
if(m_nState==STATE_SHOW_LIST)
IMENUCTL_SetActive(m_pMenuPage, false);
else
IMENUCTL_SetActive(m_pMenuPage, true);
IMENUCTL_Redraw(m_pMenuPage);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -