📄 contentlist.cpp
字号:
// ContentList.cpp: implementation of the CContentList class.
//
//////////////////////////////////////////////////////////////////////
#include "ContentList.h"
#include "wk_BaseFunc.h"
#include "SmsText.h"
#include "media.h"
#include "searchcontent.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CContentList::CContentList()
{
}
CContentList::~CContentList()
{
}
void CContentList::Init(AECHAR * szName, long nID, XFRAMEINFO * pInfo)
{
m_nID = nID;
if (szName)
{
long nLen = sizeof(AECHAR) * (WSTRLEN(szName) + 1);
m_szName = (AECHAR *)MALLOC(nLen);
if (m_szName)
MEMCPY(m_szName, szName, nLen);
}
else
m_szName = NULL;
m_pApplet = pInfo->pApplet;
m_pDevice = pInfo->pDevice;
m_pNetWork = (CNetWork *)pInfo->pNetWork;
m_szMobile = pInfo->szMobile;
m_szMobileType = pInfo->szMobileType;
m_szReceiveData = NULL;
m_szPostData = NULL;
m_nBufferLength = 0;
m_rcScreen.x = 0;
m_rcScreen.y = 0;
m_rcScreen.dx = m_pDevice->cxScreen;
m_rcScreen.dy = m_pDevice->cyScreen;
m_pMenu = NULL;
m_pMenuPage = NULL;
m_pObject = NULL;
m_pIStatic = NULL;
// m_nPageIndex = 0;
// m_nMenuCount = 0;
m_nPageNo = 1;
m_nTotalRecord = 0;
m_nPageSize = 0;
m_nType = TYPE_CONTENTLIST;
m_nState = STATE_SHOW_LIST;
m_bMenu = FALSE;
m_bRelease = TRUE;
m_nSelect = 0;
}
void CContentList::Release()
{
ClearScreen();
if (m_szName) FREEIF(m_szName);
if (m_szReceiveData) FREEIF(m_szReceiveData);
if (m_szPostData) FREEIF(m_szPostData);
if(m_szPageContent) FREEIF(m_szPageContent);
if(m_szUserName) FREEIF(m_szUserName);
if (m_pObject)
{
m_pObject->Release();
delete m_pObject;
m_pObject = NULL;
}
m_bRelease = TRUE;
}
void CContentList::Suspend()
{
if (m_pObject)
{
m_pObject->Suspend();
}
else
{
// ClearScreen();
if(m_pMenu)
IMENUCTL_SetActive (m_pMenu, FALSE);
if(m_pMenuPage)
IMENUCTL_SetActive (m_pMenuPage, FALSE);
if(m_pIText)
ITEXTCTL_SetActive(m_pIText,FALSE);
if(m_pIStatic)
ISTATIC_SetActive(m_pIStatic,FALSE);
}
}
void CContentList::Resume()
{
m_bResum=TRUE;
if (m_pObject)
{
m_pObject->Resume();
}
else
{
if(m_pMenu)
IMENUCTL_SetActive (m_pMenu, TRUE);
if(m_pMenuPage)
IMENUCTL_SetActive (m_pMenuPage, TRUE);
if(m_pIText)
ITEXTCTL_SetActive(m_pIText,TRUE);
if(m_pIStatic)
{
ISTATIC_SetActive(m_pIStatic,TRUE);
ISTATIC_Redraw(m_pIStatic);
}
else
//ClearScreen();
Display();
// ClearScreen();
// Display();
}
m_bResum=FALSE;
}
void CContentList::Create()
{
// 传送目录请求信息
long nLength;
long nIndex;
long nValue;
long nTotal, nChunk1, nChunk2;
char szPrefix[] = {'W', 'X', 'F', 'Z', '\0'};
m_bRelease = FALSE;
// APPID + VERSION + SZMOBILE + SZMOBILETYPE + REQUESTTYPE
// 计算发送请求的总长度
m_nBufferLength = 0;
nLength = STRLEN(szPrefix); // prifix
m_nBufferLength += sizeof(char) * (nLength);
m_nBufferLength += 4; // APPID
m_nBufferLength += 4; // VERSION
m_nBufferLength += 4; // TotalSize
m_nBufferLength += 4; // Number of Chunks
m_nBufferLength += 4; // REQUESTTYPE
m_nBufferLength += 4; // Size
nChunk1 = m_nBufferLength;
nLength = WSTRLEN(m_szMobile) + 1; // SZMOBILE
m_nBufferLength += sizeof(AECHAR) * (nLength);
nLength = WSTRLEN(m_szMobileType) + 1; // SZMOBILETYPE
m_nBufferLength += sizeof(AECHAR) * (nLength);
m_nBufferLength += 4;
nChunk1 = m_nBufferLength - nChunk1;
m_nBufferLength += 4; // REQUESTTYPE
m_nBufferLength += 4; // Size
nChunk2 = m_nBufferLength;
m_nBufferLength += 4; // CategoryID
m_nBufferLength += 4; // PageID
nChunk2 = m_nBufferLength - nChunk2;
nTotal = m_nBufferLength;
if (m_szPostData)
FREEIF(m_szPostData);
m_szPostData = (char *) MALLOC(m_nBufferLength);
if (m_szPostData == NULL)
{
ClearScreen();
// ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &m_rcScreen, m_szName, IDS_CONTENT_NONE);
return;
}
nIndex = 0;
// Prefix
nLength = sizeof(char) * (STRLEN(szPrefix));
MEMCPY(m_szPostData + nIndex, szPrefix, nLength);
// APPID
nIndex += nLength;
nLength = 4;
nValue = APPID;
MEMCPY(m_szPostData + nIndex, &nValue, nLength);
// VERSION
nIndex += nLength;
nLength = 4;
nValue = VERSION;
MEMCPY(m_szPostData + nIndex, &nValue, nLength);
// Total size
nIndex += nLength;
nLength = 4;
nValue = nTotal;
MEMCPY(m_szPostData + nIndex, &nValue, nLength);
// number of chunks
nIndex += nLength;
nLength = 4;
nValue = 2;
MEMCPY(m_szPostData + nIndex, &nValue, nLength);
// Chunk type
nIndex += nLength;
nLength = 4;
nValue = REQUEST_ACCOUNT;
MEMCPY(m_szPostData + nIndex, &nValue, nLength);
// Chunk size
nIndex += nLength;
nLength = 4;
nValue = nChunk1;
MEMCPY(m_szPostData + nIndex, &nValue, nLength);
// MOBILE
nIndex += nLength;
nLength = sizeof(AECHAR) * (WSTRLEN(m_szMobile) + 1);
MEMCPY(m_szPostData + nIndex, m_szMobile, nLength);
// MOBILETYPE
nIndex += nLength;
nLength = sizeof(AECHAR) * (WSTRLEN(m_szMobileType) + 1);
MEMCPY(m_szPostData + nIndex, m_szMobileType, nLength);
//login
nIndex += nLength;
nLength = 4;
if(m_pNetWork->m_bFirst)
nValue = 1;
else
nValue = 0;
MEMCPY(m_szPostData + nIndex, &nValue, nLength);
// Chunk type
nIndex += nLength;
nLength = 4;
nValue = REQUEST_LIST;
MEMCPY(m_szPostData + nIndex, &nValue, nLength);
// Chunk size
nIndex += nLength;
nLength = 4;
nValue = nChunk2;
MEMCPY(m_szPostData + nIndex, &nValue, nLength);
// categoryID
nIndex += nLength;
nLength = 4;
nValue = m_nID;
MEMCPY(m_szPostData + nIndex, &nValue, nLength);
// Page No.
nIndex += nLength;
nLength = 4;
nValue = m_nPageNo;
MEMCPY(m_szPostData + nIndex, &nValue, nLength);
// 发送请求信息
m_pNetWork->PostData(m_szPostData, m_nBufferLength, (CObject *)this);
m_nBufferLength = 0;
}
boolean CContentList::KeyHandle(AEEEvent evt, uint16 wParam, uint32 dwParam)
{
boolean status = FALSE;
if (m_pObject)
{
status = m_pObject->KeyHandle(evt, wParam, dwParam);
if (m_pObject->m_bRelease)
{
delete m_pObject;
m_pObject = NULL;
Display();
}
return status;
}
switch(evt)
{
//Key handler
case EVT_KEY:
if (m_nState == STATE_INPUT_TEXT)
{
if (wParam == AVK_CLR)
{
AECHAR buf[20];
MEMSET(buf, 0, sizeof(buf));
if (m_pIText != NULL)
ITEXTCTL_GetText(m_pIText, buf, sizeof(buf)) ;
if(WSTRLEN(buf) > 0)
{
ITEXTCTL_HandleEvent(m_pIText, evt, wParam, dwParam);
}
else
{
m_nState = STATE_SHOW_LIST;
Release();
// Display();
}
status = TRUE;
}
else if (m_pIText)
{
if (wParam == AVK_SELECT)
{
if (ITEXTCTL_HandleEvent(m_pIText, evt, wParam, dwParam))
status= TRUE;
else
{
if(m_pMenuPage != NULL&&IMENUCTL_IsActive(m_pMenuPage))
{
if (IMENUCTL_HandleEvent(m_pMenuPage, evt, wParam, dwParam))
status = TRUE;
}
}
}
else
{//由文本控件处理的事件
// 检查输入的字符是否超过最大长度
switch(wParam)
{
case AVK_0:
case AVK_1:
case AVK_2:
case AVK_3:
case AVK_4:
case AVK_5:
case AVK_6:
case AVK_7:
case AVK_8:
case AVK_9:
case AVK_STAR:
case AVK_POUND:
{
AECHAR buf[20];
MEMSET(buf, 0, sizeof(buf));
ITEXTCTL_GetText(m_pIText, buf, sizeof(buf)) ;
if(WSTRLEN(buf) >= MAX_GOTO_PAGE) return TRUE;
}
break;
}
if (ITEXTCTL_HandleEvent(m_pIText, evt, wParam, dwParam))
status= TRUE;
}
}
}
else if (m_nState == STATE_SHOW_LIST)
{
if (wParam == AVK_CLR)
{
Release();
status = TRUE;
}
/*else if(wParam==AVK_UP||wParam==AVK_DOWN)
{
if (m_pMenu != NULL && m_pMenuPage!= NULL)
{
IMENUCTL_SetActive(m_pMenu,true);
IMENUCTL_SetActive(m_pMenuPage,false);
if (IMENUCTL_HandleEvent(m_pMenu, evt, wParam, dwParam))
status = TRUE;
}
}
else if(wParam==AVK_LEFT||wParam==AVK_RIGHT)
{
if (m_pMenu != NULL && m_pMenuPage!= NULL)
{
IMENUCTL_SetActive(m_pMenu,false);
IMENUCTL_SetActive(m_pMenuPage,true);
if (IMENUCTL_HandleEvent(m_pMenuPage, evt, wParam, dwParam))
status = TRUE;
}
}
else if(wParam==AVK_SELECT)
{
if (m_pMenu != NULL && IMENUCTL_IsActive(m_pMenu))
{
if (IMENUCTL_HandleEvent(m_pMenu, evt, wParam, dwParam))
{
m_bMenu=TRUE;
status = TRUE;
}
}
else if(m_pMenuPage != NULL && IMENUCTL_IsActive(m_pMenuPage))
{
if (IMENUCTL_HandleEvent(m_pMenuPage, evt, wParam, dwParam))
{
m_bMenu=FALSE;
status = TRUE;
}
}
}*/
else if (m_pMenu)
{
if(wParam==AVK_LEFT)
{
ClearScreen();
if(m_nPageNo<=1)
m_nPageNo = 1;
else
m_nPageNo--;
Create();
status = TRUE;
}
else if(wParam==AVK_RIGHT)
{
ClearScreen();
m_nPageNo++;
Create();
}
else if (IMENUCTL_HandleEvent(m_pMenu, evt, wParam, dwParam))
status = TRUE;
}
}
break;
case EVT_COMMAND:
if(m_nState==STATE_INPUT_TEXT) //输入页
{
if(wParam==IDS_CONFIRM)
{
AECHAR buf[20];
int nTemp;
MEMSET(buf, 0, sizeof(buf));
ITEXTCTL_GetText(m_pIText, buf, sizeof(buf)) ;
if (m_szPageContent) FREEIF(m_szPageContent);
nTemp = (WSTRLEN(buf) + 1) * sizeof(AECHAR);
if(WSTRLEN(buf)<=0) return FALSE;
m_szPageContent = (AECHAR *) MALLOC(nTemp);
MEMCPY(m_szPageContent, buf, nTemp);
ClearScreen();
m_nPageNo=(int)WSTRTOFLOAT(m_szPageContent);
FREEIF(m_szPageContent);
m_nState = STATE_SHOW_LIST;
Create();
}
}
else if (m_nState == STATE_SHOW_LIST)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -