📄 searchcontent.cpp
字号:
{
ITEXTCTL_HandleEvent(m_pIText, evt, wParam, dwParam);
}
if(m_pISoftKey&&IMENUCTL_IsActive(m_pISoftKey))
{
//由菜单控件处理的事件
IMENUCTL_HandleEvent(m_pISoftKey, EVT_KEY, wParam, dwParam);
status = TRUE;
}
}
else
{//由文本控件处理的事件
// 如果是中文输入,则屏蔽数字0的按键,否则会有异常
if (wParam == AVK_0)
{
AEETextInputModeInfo info;
AEETextInputMode mode = ITEXTCTL_GetInputMode(m_pIText, &info);
if (mode != AEE_TM_NUMBERS)
return TRUE;
}
ITEXTCTL_HandleEvent(m_pIText, evt, wParam, dwParam);
status= TRUE;
if(m_pISoftKey != NULL &&IMENUCTL_IsActive(m_pISoftKey))
{
IMENUCTL_HandleEvent(m_pISoftKey, EVT_KEY, wParam, dwParam);
//由菜单控件处理的事件
status = TRUE;
}
}
}
}
else if (m_nState == STATE_SHOW_LIST)
{
if (wParam == AVK_CLR)
{
Release();
status = TRUE;
}
else if (m_pMenu)
{
if (IMENUCTL_HandleEvent(m_pMenu, evt, wParam, dwParam))
status = TRUE;
}
}
break;
case EVT_COMMAND:
if (m_nState == STATE_SHOW_LIST)
Browse(wParam);
else
{
if(wParam==IDS_CONFIRM)
{
AECHAR buf[100];
int nTemp;
MEMSET(buf, 0, sizeof(buf));
ITEXTCTL_GetText(m_pIText, buf, sizeof(buf)) ;
if (m_szSearchContent) FREEIF(m_szSearchContent);
if(WSTRLEN(buf)<=0) return false;
nTemp = (WSTRLEN(buf) + 1) * sizeof(AECHAR);
m_szSearchContent = (AECHAR *) MALLOC(nTemp);
if (m_szSearchContent == NULL)
{
ClearScreen();
// ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &m_rcScreen, m_szName, IDS_SEARCH_NONE);
return status;
}
MEMCPY(m_szSearchContent, buf, nTemp);
ClearScreen();
PostRequest();
m_nState = STATE_SHOW_LIST;
status=TRUE;
}
else if(wParam==IDS_RETURN)
{
Release();
status=TRUE;
}
// 处理 EVT_COMMAND 事件 - 输入模式更改
if((m_pIText != NULL) && ITEXTCTL_HandleEvent(m_pIText,
evt, wParam, dwParam))
{
status= TRUE;
}
}
break;
}
return status;
}
void CSearchContent::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();
}
ClearScreen();
}
void CSearchContent::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_SEARCH)
{// 短信文本目录
// 保存信息
m_nBufferLength = nBufferLength - nIndex;
if (m_szReceiveData) FREEIF(m_szReceiveData);
m_szReceiveData = (char *)MALLOC(m_nBufferLength);
if (m_szReceiveData == NULL)
{
ClearScreen();
ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &m_rcScreen, m_szName, IDS_SEARCH_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 CSearchContent::Display()
{
if (m_nState == STATE_INPUT_TEXT)
{
AEERect rect,softKeyRect;
AECHAR titleString[40];
m_bRelease = FALSE;
ClearScreen();
IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);
// 创建文本控件
ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_TEXTCTL,
(void **)&m_pIText);
if (m_pIText == NULL) return;
// 创建软键菜单
ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_SOFTKEYCTL,
(void **)&m_pISoftKey);
if (!m_pISoftKey)
{
ITEXTCTL_Release (m_pIText);
m_pIText = NULL;
return ;
}
rect.dx = m_pDevice->cxScreen;
rect.dy = m_pDevice->cyScreen-MENU_CY-8;
rect.x = 0;
rect.y = 0;
ISHELL_LoadResString(m_pApplet->m_pIShell, RES_FILE, IDS_SEARCH, titleString, sizeof(titleString));
softKeyRect.dx=m_pDevice->cxScreen;
softKeyRect.dy=MENU_CY;
softKeyRect.x=0;
softKeyRect.y=m_pDevice->cyScreen-MENU_CY;
// 设置软键菜单矩形
IMENUCTL_SetRect(m_pISoftKey, &softKeyRect);
// 设置文本控件标题、大小、属性和矩形
ITEXTCTL_SetTitle(m_pIText, NULL, NULL, titleString);
ITEXTCTL_SetMaxSize(m_pIText, 100);
ITEXTCTL_SetProperties(m_pIText, TP_FRAME | TP_MULTILINE | TP_T9_MODE);
ITEXTCTL_SetRect(m_pIText, &rect);
// 初始化文本控件的软键菜单。
ITEXTCTL_SetSoftKeyMenu (m_pIText, m_pISoftKey);
IMENUCTL_AddItem(m_pISoftKey,RES_FILE,IDS_CONFIRM,IDS_CONFIRM,NULL,NULL);
IMENUCTL_AddItem(m_pISoftKey,RES_FILE,IDS_RETURN,IDS_RETURN,NULL,NULL);
// 将软键和文本控件均设置为激活状态。
IMENUCTL_SetActive(m_pISoftKey,false);
ITEXTCTL_SetActive (m_pIText, true);
// ITEXTCTL_SetInputMode(m_pIText, AEE_TM_PINYIN);
if( m_pIText && m_szSearchContent)
{// 还原文本
int nLen = sizeof(AECHAR) * (WSTRLEN(m_szSearchContent) + 1);
ITEXTCTL_SetText(m_pIText, m_szSearchContent, nLen);
}
}
else
{
long nIndex, cstLong, nCount;
if (m_pMenu)
{
IMENUCTL_SetActive(m_pMenu, false);
IMENUCTL_Release(m_pMenu);
}
m_pMenu = NULL;
IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);
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;
}
{
// 设置菜单和图片位置
AEERect rect;
rect.x = 0;
rect.y = LOGO_HEIGHT;
rect.dx = m_pDevice->cxScreen;
rect.dy = m_pDevice->cyScreen - LOGO_HEIGHT - BOTTOM_MARGIN;
IMENUCTL_SetRect(m_pMenu,&rect);
}
// 设置正确的页码
if (m_nPageIndex < 0)
m_nPageIndex = 0;
// set menu title
IMENUCTL_SetTitle(m_pMenu, RES_FILE, NULL, m_szName);
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);
}
}
// implementation of lightening of main menu background color
{
AEEMenuColors colors;
colors.wMask = MC_BACK | MC_SEL_BACK;
colors.cBack = MAKE_BACK_COLOR;
colors.cSelBack = MAKE_SEL_COLOR;
IMENUCTL_SetColors(m_pMenu, &colors);
}
// end of lightening of main menu background color
IMENUCTL_EnableCommand(m_pMenu, true);
IMENUCTL_SetActive(m_pMenu, true);
}
}
void CSearchContent::ClearScreen()
{
if(m_pIStatic)
ReleaseObj((void * *)&m_pIStatic);
m_pIStatic=NULL;
if (m_pMenu)
{
IMENUCTL_SetActive(m_pMenu, false);
IMENUCTL_Release(m_pMenu);
}
m_pMenu = NULL;
if (m_pIText)
ITEXTCTL_Release(m_pIText);
m_pIText = NULL;
if(m_pISoftKey)
{
IMENUCTL_SetActive(m_pISoftKey, false);
IMENUCTL_Release(m_pISoftKey);
}
m_pISoftKey=NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -