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

📄 mainframe.cpp

📁 联通手机的宝典画面.用brew 平台编辑而成.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MainFrame.cpp: implementation of the CMainFrame class.
//
//////////////////////////////////////////////////////////////////////

#include "MainFrame.h"
#include "wk_BaseFunc.h"
#include "Category.h"
#include "ContentList.h"
#include "SearchContent.h"
#include "mydoc.h"
//#include "forum.h"
// 系统初始化
boolean CMainFrame::Create(AEEApplet *pApplet)
{
	m_pApplet = pApplet;

	m_device.wStructSize = sizeof(AEEDeviceInfo);
    ISHELL_GetDeviceInfo (m_pApplet->m_pIShell, &m_device);

/*
	AEERect	rcScreen;
	rcScreen.x=0;
	rcScreen.y=0;
	rcScreen.dx=m_device.cxScreen;
	rcScreen.dy=m_device.cyScreen;
*/
	//检查内存
	if(GetFreeMem(m_pApplet->m_pIShell)<MIN_NEED_MEM)
	{
/*
		IStatic* pIStatic=NULL;
		ShowResString(m_pApplet->m_pIShell, &pIStatic, &rcScreen, NULL, IDS_ERR_MEM);
		if(pIStatic)
			ReleaseObj((void * *)&pIStatic);
*/
		m_stateBuf = GS_SEACHE;
		return TRUE;
	}

	m_wFrameCount	= 0;
	m_stateBuf		= GS_STARTUP;
	m_wTimerInterval = TIMER_SPEED;

	m_bJingpin	= FALSE;
	m_pText		= NULL;

	m_nHelpCurrent = TEXT_HELPTOP;

	{
		//char szBuf[] = {'W', 'X', 'F', 'Z', '\0'};
		char *szBuf = NULL;
		GetMobileID(m_pApplet->m_pIShell, &szBuf);
		StrToWstr(szBuf, &m_szMobile);
/*
		{// test			
			if (szBuf == NULL)
			{
				m_stateBuf = GS_SEACHE;
				return TRUE;
			}
			else if (m_szMobile == NULL)
			{
				m_stateBuf = GS_SEACHE;
				return TRUE;
			}
		}//test
*/
		GetMobileType(m_pApplet->m_pIShell, &szBuf);
		StrToWstr( szBuf, &m_szMobileType);
		
		FREEIF(szBuf)
	}

	m_pObject	= NULL;
	m_netWork.Init(m_pApplet, &m_device);

	m_frameInfo.pApplet			= m_pApplet;
	m_frameInfo.pDevice			= &m_device;
	m_frameInfo.pNetWork		= (void *)&m_netWork;
	m_frameInfo.szMobile		= m_szMobile;
	m_frameInfo.szMobileType	= m_szMobileType;

	m_html.Create(m_pApplet);
//	IDISPLAY_SetColor(m_pApplet->m_pIDisplay, CLR_USER_BACKGROUND, MAKE_USER_COLOR);
	m_html.SetNotifyFn((PFNHVIEWNOTIFY)HtmlViewerNotify,this);
	m_html.SetProperties(HVP_SCROLLBAR);
	return LoadMenuImage();
}

// 退出时清除系统变量
void CMainFrame::Release()
{
	CancelTimers();

    ReleaseObj((void**)&m_pText);
	ReleaseImage();
	m_html.Release();
    ClearScreen();

    if (m_szMobile) FREEIF(m_szMobile);
    if (m_szMobileType) FREEIF(m_szMobileType);

	m_netWork.Release();

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

void CMainFrame::Start()
{
	ClearTmpFile();

	StartTimers();
}

void CMainFrame::Stop()
{
	ClearTmpFile();

    Release();
	ClearScreen();
}

void CMainFrame::Suspend()
{
	m_netWork.Suspend();
	
	if (m_pObject)
		m_pObject->Suspend();
	else
		ClearScreen();
}

void CMainFrame::Resume()
{
	if (m_pObject)
	{
		m_pObject->Resume();
		m_netWork.Resume();
	}
	else
	{
        ClearScreen();
		if (m_state == GS_ABOUT_TEXT)
            ShowAbout();
		else if (m_state == GS_RULES_TEXT)
            ShowRules();
		else if (m_state == GS_SEACHE)
			ShowSeache();
		else
			ShowMenu();
	}
}

boolean	CMainFrame::KeyHandle(AEEEvent evt, uint16 wParam, uint32 dwParam)
{
    boolean status = FALSE;

	if (m_pText && ISTATIC_HandleEvent(m_pText, evt, wParam, dwParam))
		return TRUE;

	switch(m_state)
	{
	case GS_LOGO1:
         if (evt == EVT_KEY && wParam != AVK_SEND)
         {
             m_wTimeLeft = 0;
         }
         break;
	case GS_LOGO:
		if (evt == EVT_KEY && wParam != AVK_SEND)
		{
			m_wTimeLeft = 0;
		}
		break;
    case GS_QUIT_ASK_SHOW:
         if (evt == EVT_KEY)
         {
             // keep playing
             switch (wParam)
             {
                case AVK_2:
                    m_stateBuf = m_lastState;
                    SetClockTimer();
                    ClearScreen();
                    m_bForceRedraw=true;
                    status = true;
					break;
             // go to menu
                case AVK_1:
                case AVK_CLR:
                    m_stateBuf = GS_MENU_TEXT_EXIT;
                    m_wTimeLeft = 0;
                    SetClockTimer();
                    status = true;
             }
         }
         break;
    case GS_MENU_VISIBLE:
    case GS_BROWSE_WEB:
    case GS_BROWSE_MYDOC:
		if(m_netWork.m_nTimeout>NET_TIMEOUT)
		{
			m_netWork.KeyHandle(evt, wParam, dwParam);
			if((wParam == AVK_CLR))
			{
				if (m_pObject)
				{
					status = m_pObject->KeyHandle(evt, wParam, dwParam);
					
					if (m_pObject->m_bRelease)
					{
						delete m_pObject;
						m_pObject = NULL;
						
						m_wTimeLeft = 0;
						IDISPLAY_SetColor(m_pApplet->m_pIDisplay, CLR_USER_BACKGROUND, MAKE_USER_COLOR);
						m_stateBuf = GS_MENU;
					}
				}
			}
			
		}
		else
		{
			if (m_pObject)
			{	
				m_netWork.KeyHandle(evt, wParam, dwParam);
				status = m_pObject->KeyHandle(evt, wParam, dwParam);

				if (m_pObject->m_bRelease)
				{
					delete m_pObject;
					m_pObject = NULL;

					m_wTimeLeft = 0;
					IDISPLAY_SetColor(m_pApplet->m_pIDisplay, CLR_USER_BACKGROUND, MAKE_USER_COLOR);
					m_stateBuf = GS_MENU;
				}
			}
		}
        break; 
    case GS_ABOUT_TEXT:
        if (evt == EVT_KEY && wParam != AVK_SEND)
        {
			m_html.HandleEvent(evt,wParam,dwParam);
			
			switch(wParam){
			case AVK_SOFT1:
			case AVK_CLR:
				switch(m_nHelpCurrent)
				{
				case TEXT_HELPTOP:
					m_html.SetRect(NULL);
					m_stateBuf = GS_MENU_TEXT_EXIT;
					break;
				case TEXT_HELPBASIC:				
				case TEXT_HELPABOUT:				
				case TEXT_HELPPLAY:				
				case TEXT_HELPQUESTION:
					m_html.LoadResStringAndParseBuffer(RES_FILE,TEXT_HELPTOP);	
					m_nHelpCurrent = TEXT_HELPTOP;
					break;
				}
				break;				
				case AVK_SELECT:
					break;
					
				default:
					return false;
			}
           status = true;
        }
        break;
    case GS_RULES_TEXT:
        if (evt == EVT_KEY && wParam != AVK_SEND)
        {
            if (wParam == AVK_CLR)
            {
                m_stateBuf = GS_MENU_TEXT_EXIT;
            }		
            status = true;
        }
        break;   
	case GS_MENU:
		if (evt == EVT_KEY)
		{		
			switch (wParam)
			{
			case AVK_CLR:
				Stop();
				ISHELL_CloseApplet(m_pApplet->m_pIShell, FALSE);
				break;
			case AVK_RIGHT:
			case AVK_DOWN:
				if(m_nMenuSelected >= MENU_COUNT-1)
					m_nMenuSelected = 0;
				else
					m_nMenuSelected++;

				break;
			case AVK_LEFT:
			case AVK_UP:
				if(m_nMenuSelected <= 0)
					m_nMenuSelected = MENU_COUNT - 1;
				else
					m_nMenuSelected--;

				break;
			case AVK_SELECT:
				m_wTimeLeft = 0;
				m_stateBuf = GS_MENU_VISIBLE;            
			
				break;
			}
			status = true;
		}
		break;
	}

	return status;
}

void CMainFrame::DoGame()
{
	boolean update = false;
    m_state = m_stateBuf;

	switch(m_state)
	{
        case GS_STARTUP:
            m_bKeyPressed = false;
            ClearScreen();
            m_state		= GS_LOGO1;
            m_wTimeLeft	= 3;
            m_wOldTime	= 0;
            update = true;		
            break;
        case GS_LOGO1:
            if (m_wTimeLeft != 0)
            {
				ClearScreen();
				IDISPLAY_SetColor(m_pApplet->m_pIDisplay, CLR_USER_BACKGROUND, MAKE_LOGO_COLOR);
				DrawPicRect(m_imgLogo1, 0, 0, m_device.cxScreen, m_device.cyScreen);
                update=true;
            }
            else
            {
				m_wTimeLeft	= 3;
                m_state = GS_LOGO;
				IDISPLAY_SetColor(m_pApplet->m_pIDisplay, CLR_USER_BACKGROUND, MAKE_USER_COLOR);
            }
            break;
        case GS_LOGO:
            if (m_wTimeLeft != 0)
            {
				ClearScreen();
				DrawPicRect(m_imgLogo, 0, 0, m_device.cxScreen, m_device.cyScreen);
                update=true;
            }
            else
            {
				ReleaseLogo();
                m_state = GS_MENU;
            }
            break;
        case GS_MENU:
            if (m_wTimeLeft == 0)
            {
				ClearScreen();
                ShowMenu();
                update=true;
            }
            break;
        case GS_MENU_VISIBLE:
            switch(m_nMenuSelected)
            {
				case 0:	// 最新推荐
					{

⌨️ 快捷键说明

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