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

📄 searchcontent.cpp

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