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

📄 mydoc.cpp

📁 联通手机的宝典画面.用brew 平台编辑而成.
💻 CPP
字号:
// MyDoc.cpp: implementation of the CMyDoc class.
//
//////////////////////////////////////////////////////////////////////

#include "MyDoc.h"
#include "wk_BaseFunc.h"
#include "SmsText.h"
#include "media.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMyDoc::CMyDoc()
{

}

CMyDoc::~CMyDoc()
{

}

void CMyDoc::Init(AECHAR * szName, long nID, XFRAMEINFO * pInfo)
{
	m_nID = nID;
	if (szName)
	{
		long nLen = sizeof(AECHAR) * (WSTRLEN(szName) + 1);
		m_szName = (AECHAR *)MALLOC(nLen);
		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_rcScreen.x	= 0;
	m_rcScreen.y	= 0; 
    m_rcScreen.dx	= m_pDevice->cxScreen;
    m_rcScreen.dy	= m_pDevice->cyScreen; 
	
	m_szReceiveData = NULL;
	m_szPostData	= NULL;
	m_nBufferLength	= 0;
	m_pFileMgr		= NULL;
    m_pMenu			= NULL;
	m_pObject		= NULL;
    m_pIStatic		= NULL;

	m_nPageIndex	= 0;
	m_nMenuCount	= 0;

	m_nType	= TYPE_CONTENTLIST;

	m_bRelease	= TRUE;
}

void CMyDoc::Release()
{
	ClearScreen();

    if (m_szName) FREEIF(m_szName);
    if (m_szReceiveData) FREEIF(m_szReceiveData);
    if (m_szPostData) FREEIF(m_szPostData);

	if (m_pObject)
	{
		m_pObject->Release();
		delete m_pObject;
		m_pObject = NULL;
	}

	m_bRelease	= TRUE;
}

void CMyDoc::Suspend()
{
	if (m_pObject)
	{
		m_pObject->Suspend();
	}
	else
	{
		ClearScreen();
	}
}

void CMyDoc::Resume()
{
	if (m_pObject)
	{
		m_pObject->Resume();
	}
	else
	{
		ClearScreen();
		Display();
	}
}

void CMyDoc::Create()
{
	m_bRelease = FALSE;
	Construct(NULL,0);
}

boolean	CMyDoc::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:
		//case EVT_KEY_PRESS:	
			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:
			Browse(wParam);
			status = TRUE;		
			break;
	}

	return status;
}

void CMyDoc::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))
	{
/*
		AEERect rcScreen;
		char szBuf[512];
        AECHAR * szText = NULL;
		
		SPRINTF(szBuf, "ID = %d", nID);
		StrToWstr( szBuf, &szText);
		
		rcScreen.x=0;
		rcScreen.y=0;
		rcScreen.dx=m_pDevice->cxScreen;
		rcScreen.dy=m_pDevice->cyScreen;
		
		ClearScreen();
		IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);
		
		if (m_pIStatic == NULL)
		{
			ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_STATIC, (void * *)&m_pIStatic);
		}
		ISTATIC_SetRect(m_pIStatic, &rcScreen);
		PrintString2(m_pIStatic, m_szName, szText, TRUE);
		if (szText) FREEIF(szText);
*/
		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);
		ClearScreen();
		m_pObject->m_nType = pMenu.dwData;
		m_pObject->m_bMyDoc = TRUE;
		m_pObject->Create();
	}
	
}

void CMyDoc::Construct(char * szBuffer, long nBufferLength)
{
	Display();
    return;
}

void CMyDoc::Display()
{
	IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);
	IFile *f;
	

	
	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);
	}

	// set menu title
	IMENUCTL_SetTitle(m_pMenu, RES_FILE, NULL, m_szName);
	// 打开文件
    ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_FILEMGR, (void **)&m_pFileMgr);
	if (m_pFileMgr == NULL)
	{
		ShowResString(m_pApplet->m_pIShell, &m_pIStatic, &m_rcScreen, m_szName, IDS_ERR_MEM);
		return;
	}
	
    f = IFILEMGR_OpenFile(m_pFileMgr, FAVORITE_FILE, _OFM_READ);
	if (f == NULL)
	{
		// 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);
		}
		IMENUCTL_EnableCommand(m_pMenu, true);
		IMENUCTL_SetActive(m_pMenu, true); 
		IFILEMGR_Release(m_pFileMgr);
		m_pFileMgr = NULL;
		return;
	}
	// 查找文件名称
	if (f)
	{
		// 读取文件的所有信息
		char * szBuffer;
		long nLen, nIndex = 1, nPos = 0;
		
		FileInfo pInfo;
		IFILE_GetInfo(f, &pInfo);
		
		nLen = pInfo.dwSize;
		szBuffer = (char*)MALLOC(nLen);
		
		IFILE_Read(f, szBuffer, nLen);
        IFILE_Release(f);
		
		// 列举所有文件
		while (nPos < nLen)
		{
			AECHAR  * szAechar;
			char	* szChar;
			long	nChunkSize, nType, nNextPos;
			
			MEMCPY(&nChunkSize, szBuffer + nPos, 4);	// chunk size
			nPos += 4;	
			nNextPos = nPos + nChunkSize;
			szAechar = (AECHAR *)(szBuffer + nPos);		// name
			nPos += sizeof(AECHAR) * (WSTRLEN(szAechar) + 1);
			MEMCPY(&nType, szBuffer + nPos, 4);			// type
			nPos += 4;	
			szChar = szBuffer + nPos;					// file name
			nPos += sizeof(char) * (STRLEN(szChar) + 1);
			
			if ((nType & 0xffff) == CONTENT_SMS)
				AddMenuItem(m_pMenu, 0, szAechar, BM_TEXT_ICON, (uint16)nIndex, nType);
			else if ((nType & 0xffff) == CONTENT_SOUND)
				AddMenuItem(m_pMenu, 0, szAechar, BM_AUDIO_ICON, (uint16)nIndex, nType);
			else if ((nType & 0xffff) == CONTENT_PIC)
				AddMenuItem(m_pMenu, 0, szAechar, BM_IMAGE_ICON, (uint16)nIndex, nType);
			else
				AddMenuItem(m_pMenu, 0, szAechar, BM_FOLDER_ICON, (uint16)nIndex, nType);

			nPos = nNextPos;
			nIndex++;

			// 删去以前的信息
			if (nPos < nLen)
			{
				char * szTemp = NULL;
				szTemp = (char*)MALLOC(nLen - nPos);
				MEMCPY(szTemp, szBuffer + nPos, nLen - nPos);
				nLen -= nPos;
				nPos = 0;
				FREEIF(szBuffer);
				szBuffer = szTemp;
			}
		}	
		
/*
		{//test
			AEERect rcScreen;
			char szBuf[512];
			char szText[5120];
			szText[0] = 0x00;
			
			
			rcScreen.x=0;
			rcScreen.y=0;
			rcScreen.dx=m_pDevice->cxScreen;
			rcScreen.dy=m_pDevice->cyScreen;
			
			IDISPLAY_ClearScreen(m_pApplet->m_pIDisplay);
			
			if (m_pIStatic == NULL)
			{
				ISHELL_CreateInstance(m_pApplet->m_pIShell, AEECLSID_STATIC, (void * *)&m_pIStatic);
			}
			ISTATIC_SetRect(m_pIStatic, &rcScreen);
			// 列举所有文件
			{
				SPRINTF(szBuf, "Length = %d;", nLen);
				STRCAT(szText, szBuf);
			}
			while (nPos < nLen)
			{
				AECHAR  * szAechar;
				char	* szChar;
				long	nChunkSize, nType;
				
				MEMCPY(&nChunkSize, szBuffer + nPos, 4);	// chunk size
				nPos += 4;	
				szAechar = (AECHAR *)(szBuffer + nPos);		// name
				nPos += sizeof(AECHAR) * (WSTRLEN(szAechar) + 1);
				{
					SPRINTF(szBuf, "Pos = %d Len = %d;", nPos, WSTRLEN(szAechar));
					STRCAT(szText, szBuf);
				}
				MEMCPY(&nType, szBuffer + nPos, 4);			// type
				nPos += 4;	
				szChar = szBuffer + nPos;					// file name
				nPos += STRLEN(szChar) + 1;
				
			
				nIndex++;
			}	
			AECHAR * szInfo = NULL;
			StrToWstr( szText, &szInfo);
			PrintString2(m_pIStatic, m_szName, szInfo, TRUE);
			if (szInfo) FREEIF(szInfo);
			IFILEMGR_Release(m_pFileMgr);
			m_pFileMgr = NULL;
			return;
		}//test
*/
	
		FREEIF(szBuffer);
	}
	// 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);
	}
	IMENUCTL_EnableCommand(m_pMenu, true);
	IMENUCTL_SetActive(m_pMenu, true); 
    IFILEMGR_Release(m_pFileMgr);
    m_pFileMgr = NULL;
	
}

void CMyDoc::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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -