📄 mainframe.cpp
字号:
// 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 + -