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

📄 contentlist.cpp

📁 联通手机的宝典画面.用brew 平台编辑而成.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -