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

📄 contentlist.cpp

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