📄 brewlogincanvas2.cpp
字号:
// BrewLoginCanvas2.cpp: implementation of the CBrewLoginCanvas2 class.
//
//////////////////////////////////////////////////////////////////////
#include "BrewLoginCanvas2.h"
#include "BrewLoginCanvas3.h"
#include "BrewLoginCanvas42.h"
#include "BrewHallCanvas2.h"
#include "brewlogin.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CBrewLoginCanvas2::CBrewLoginCanvas2()
{
//m_pISoftKey = NULL;
m_nTotalLine = 6;
m_nControls = 4;
m_aCtls = new IControl*[m_nControls];
m_nFontSpace += 2;
m_nVScrollBarWidth = 5;
m_bSave = true;
}
CBrewLoginCanvas2::~CBrewLoginCanvas2()
{
RELEASEIF(m_pUser,ITEXTCTL);
RELEASEIF(m_pPasswd,ITEXTCTL);
RELEASEIF(m_pSep,ISTATIC);
RELEASEIF(m_pIsSave,ISTATIC);
//RELEASEIF(m_pISoftKey,IMENUCTL);
if(m_aCtls != NULL)
delete[] m_aCtls;
}
void CBrewLoginCanvas2::setFrame(void *f)
{
frame = (CBrewLogin*)f;
m_pShell = frame->frame->getCurrentShell();
m_offsetX = frame->frame->getScreenOffsetX();
m_offsetY = frame->frame->getScreenOffsetY();
m_pdi = frame->frame->getDeviceInfo();
UINT32 n32 = frame->frame->getLoginParam();
m_bSave = ((n32 & PERSIST_NOTSAVELOGINFO) == 0);
if(m_pUser == NULL)
{
ISHELL_CreateInstance(((CBrewLogin*)f)->m_pIShell, AEECLSID_TEXTCTL, (void **)&m_pUser);
if(m_pUser != NULL)
{
ITEXTCTL_SetProperties(m_pUser,TP_FRAME);
ITEXTCTL_SetInputMode( m_pUser, AEE_TM_LETTERS );
if(m_bSave)
ITEXTCTL_SetText(m_pUser,frame->m_nUserName,-1);
// ISHELL_CreateInstance(m_pShell, AEECLSID_SOFTKEYCTL, (void **)&m_pISoftKey);
// if (!m_pISoftKey) {
// ITEXTCTL_Release (m_pUser);
// m_pUser = NULL;
// return;
// }
m_aCtls[0] = (IControl*)m_pUser;
// ITEXTCTL_SetSoftKeyMenu (m_pUser, m_pISoftKey);
}
else
return;
}
if(m_pPasswd == NULL)
{
ISHELL_CreateInstance(((CBrewLogin*)f)->m_pIShell, AEECLSID_TEXTCTL, (void **)&m_pPasswd);
ITEXTCTL_SetProperties(m_pPasswd,TP_FRAME | TP_PASSWORD);
ITEXTCTL_SetInputMode( m_pPasswd, AEE_TM_LETTERS );
if(m_bSave)
ITEXTCTL_SetText(m_pPasswd,frame->m_nUserPass,-1);
m_aCtls[1] = (IControl*)m_pPasswd;
}
if(m_pIsSave == NULL)
{
ISHELL_CreateInstance(((CBrewLogin*)f)->m_pIShell,AEECLSID_STATIC,(void**)&m_pIsSave);
ISTATIC_SetProperties(m_pIsSave,ST_NOSCROLL | ST_ENABLE_HLGHT);
m_aCtls[2] = (IControl*)m_pIsSave;
}
if(m_pSep == NULL)
{
ISHELL_CreateInstance(((CBrewLogin*)f)->m_pIShell,AEECLSID_STATIC,(void**)&m_pSep);
ISTATIC_SetProperties(m_pSep,ST_CENTERTITLE | ST_NOSCROLL | ST_ENABLE_HLGHT);
m_aCtls[3] = (IControl*)m_pSep;
}
}
void CBrewLoginCanvas2::paint(IDisplay *d, IGraphics *g)
{
//return;
CBrewLoginCanvasBase::paint(d,g);
AEERect rt;
int n = GetLineRect(0,rt);
if(n != -1)
DisplayControl(d,GetDispText(IDS_LOGIN_USERNAME),(IControl*)m_pUser,rt,g);
if(m_nCurrent != 0)
{
AEELine ln;
ln.sx = rt.x - m_offsetX;
ln.sy = rt.y + rt.dy - m_offsetY;
ln.ex = ln.sx + rt.dx;
ln.ey = ln.sy;
IGRAPHICS_DrawLine(m_pIGraphics,&ln);
}
//else
// {
// rtsoft = rt;
// SETAEERECT(&rtsoft,0,rt.dy,100,60);
// IMENUCTL_SetRect(m_pISoftKey, &rtsoft);
//}
n = GetLineRect(1,rt);
if(n != -1)
DisplayControl(d,GetDispText(IDS_LOGIN_PASSWORD),(IControl*)m_pPasswd,rt,g);
if(m_nCurrent != 1)
{
AEELine ln;
ln.sx = rt.x - m_offsetX;
ln.sy = rt.y + rt.dy - m_offsetY;
ln.ex = ln.sx + rt.dx;
ln.ey = ln.sy;
IGRAPHICS_DrawLine(m_pIGraphics,&ln);
}
n = GetLineRect(2,rt);
if(n != -1)
DisplayControl(d,NULL,(IControl*)m_pIsSave,rt,g);
n = GetLineRect(3,rt);
if(n != -1)
DisplayControl(d,NULL,(IControl*)m_pSep,rt,g);
n = GetLineRect(4,rt);
if(n != -1)
DisplayControl(d,GetDispText(IDS_LOGIN_NEW),NULL,rt,g);
n = GetLineRect(5,rt);
if(n != -1)
DisplayControl(d,GetDispText(IDS_LOGIN_MODIFY),NULL,rt,g);
SetActiveCtrl(0);
if(m_nCurrent >= 0)
{
AEERect rt;
if(m_nCurrent < m_nControls)
{
ICONTROL_GetRect(m_aCtls[m_nCurrent],&rt);
rt.dy = m_nNowSize + m_nFontSpace;
}
else
GetLineRect(m_nCurrent,rt);
IDISPLAY_DrawRect(m_pIDisplay,&rt,
RGB_BLACK,RGB_BLACK,IDF_RECT_FRAME);
}
IDISPLAY_Update(d);
}
boolean CBrewLoginCanvas2::keyPressed(UINT16 code, UINT32 param)
{
return false;
}
boolean CBrewLoginCanvas2::keyReleased(UINT16 code, UINT32 param)
{
return false;
}
boolean CBrewLoginCanvas2::keyRepeated(UINT16 code, UINT32 param)
{
return false;
}
boolean CBrewLoginCanvas2::key(UINT16 code, UINT32 param)
{
//ITEXTCTL_HandleEvent(m_pUser,EVT_KEY,code,param);
//return true;
if(CBrewLoginCanvasBase::key(code,param))
{
int8 n = 0;
if(code == AVK_UP)
n = -1;
else if(code == AVK_DOWN)
n = 1;
if(m_nCurrent == 3)
m_nCurrent += n;
//if(ICONTROL_IsActive((IControl*)m_pUser))
// if(m_pISoftKey != NULL && IMENUCTL_HandleEvent(m_pISoftKey, EVT_KEY, code, param)) {
// //事件由菜单控件处理
// return TRUE;
// }
return true;
}
switch(code )
{
case AVK_SELECT:
if(m_nCurrent < m_nControls &&
m_aCtls[m_nCurrent] == (IControl*)m_pIsSave)
{
m_bSave = !m_bSave;
UINT32 n32 = frame->frame->getLoginParam();
if(m_bSave)
n32 &= ~PERSIST_NOTSAVELOGINFO;
else
n32 |= PERSIST_NOTSAVELOGINFO;
frame->frame->setLoginParam(n32);
Invalidate();
return true;
}
else if(m_nCurrent == m_nControls)
{
//((CBrewLogin*)frame)->SetCanvas(CreateLoginCanvas3);
frame->m_nLoginState = LOGIN_READY_REGISTER;
return true;
}
else if(m_nCurrent == m_nControls + 1)
{
frame->m_nLoginState = LOGIN_READY_MODIFY;
//((CBrewLogin*)frame)->SetCanvas(CreateLoginCanvas42);
return true;
}
// break; 如果不是就登录
case AVK_SOFT2:
{
//((CBrewLogin*)frame)->SetCanvas(CreateHallCanvas2);
MEMSET(frame->m_nUserName, '\0', sizeof(frame->m_nUserName));
MEMSET(frame->m_nUserPass, '\0', sizeof(frame->m_nUserPass));
//AECHAR buf[64];
//ITEXTCTL_GetText(m_pUser,buf,sizeof(buf)/sizeof(buf[0]));
//ITEXTCTL_SetText(frame->m_pIText1,buf,-1);
//ITEXTCTL_GetText(m_pPasswd,buf,sizeof(buf)/sizeof(buf[0]));
//ITEXTCTL_SetText(frame->m_pIText2,buf,-1);
ITEXTCTL_GetText(m_pUser, &frame->m_nUserName[0], sizeof(frame->m_nUserName));
if(WSTRLEN(frame->m_nUserName) > (sizeof(frame->m_nUserName)) / 2 - 1)
frame->m_nUserName[(sizeof(frame->m_nUserName))/2 - 1] = 0;
ITEXTCTL_GetText(m_pPasswd, &frame->m_nUserPass[0], sizeof(frame->m_nUserName));
if(WSTRLEN(frame->m_nUserPass) > (sizeof(frame->m_nUserPass)) / 2 - 1)
frame->m_nUserPass[(sizeof(frame->m_nUserPass))/2 - 1] = 0;
frame->m_nLoginState = LOGIN_TEST_LOGIN;
return true;
}
break;
case AVK_CLR:
case AVK_SOFT1:
{
CBrewLogin* f = (CBrewLogin*)frame;
f->SetCanvas(CBrewLogin::Canvas1);
f->m_nLoginState = LOGIN_READY_ROOM;
f->m_bUserMng = true;
return true;
break;
}
}
return false;
}
IBrewCanvas *CreateLoginCanvas2(){
return (IBrewCanvas *)new CBrewLoginCanvas2();
}
void CBrewLoginCanvas2::DisplayControl( IDisplay* pIDisplay, AECHAR* psTextBuf, IControl* pCtl,
AEERect& rRect ,IGraphics* g)
{
if(pCtl == NULL)
{
AEERect rt;
rRect.x += 5;
rRect.dx -= 10;
rRect.dy -= 2;
MEMCPY(&rt,&rRect,sizeof(rt));
DrawButton(&rt);
IDISPLAY_DrawText( pIDisplay, m_nNowFont,
psTextBuf, -1, rRect.x, rRect.y, &rRect, IDF_ALIGN_MIDDLE| IDF_ALIGN_CENTER| IDF_TEXT_TRANSPARENT);
return;
}
if(pCtl != NULL && psTextBuf )
{
//ISHELL_LoadResString( pApp->a.m_pIShell, EXPENSETRACKER_RES_FILE, nTitleID, psTextBuf, MAX_RES_STRING_BUF_SIZE * sizeof( AECHAR ) );
// Set the position of the label's daring rectangle
//SETAEERECT( &rRect, 2, rRect.y, IDISPLAY_MeasureText( pIDisplay, AEE_FONT_BOLD, psTextBuf ), m_nNowSize );
//IDISPLAY_DrawText( pIDisplay, AEE_FONT_BOLD, psTextBuf, -1, 0, rRect.y, &rRect, IDF_ALIGN_BOTTOM | IDF_ALIGN_LEFT );
SETAEERECT( &rRect, rRect.x+2, rRect.y, IDISPLAY_MeasureText( pIDisplay, m_nNowFont, psTextBuf ), m_nNowSize );
IDISPLAY_DrawText( pIDisplay, m_nNowFont,
psTextBuf, -1, rRect.x, rRect.y, &rRect, IDF_ALIGN_MIDDLE| IDF_ALIGN_LEFT | IDF_TEXT_TRANSPARENT);
rRect.x = rRect.dx;
rRect.dx = m_rtInfo.dx - rRect.x;
}
//if( !pCtl )
// return;
if(pCtl == (IControl*)m_pSep)
{
int n = IDISPLAY_MeasureText( pIDisplay, m_nNowFont, GetDispText(IDS_LOGIN_POINT) );
int n2 = m_rtInfo.dx / n - 3;
AECHAR* pbuf = (AECHAR*)MALLOC(sizeof(AECHAR) * (n2 + 1));
if(!pbuf)
return;
int i;
for(i = 0; i < n2; i++)
pbuf[i] = L'.';
pbuf[i] = 0;
ISTATIC_SetText(m_pSep,pbuf,NULL,m_nNowFont,m_nNowFont);
FREEIF(pbuf);
}
if(pCtl == (IControl*)m_pIsSave)
{
//AEERect rtbtn = rRect;
int n = m_nLChSize;
AEERect rt;
rt.y = rRect.y + 1;
rt.dy = n - 2;
rt.x = rRect.x + 1;
rt.dx = n - 2;
rRect.x += n+2;
rRect.dx -= n+2;
rt.y -= m_offsetY; //graphics画的都是相对坐标?
rt.x -= m_offsetX;
IGRAPHICS_DrawRect(g,&rt);
AECHAR* ptext;
ptext = GetDispText(IDS_LOGIN_SAVE);
if(m_bSave)
{
AEEPoint apt[3];
apt[0].x = rt.x;
apt[0].y = rt.y+rt.dy/2;
apt[1].x = rt.x+rt.dx/2;
apt[1].y = rt.y+rt.dy - 1;
apt[2].x = rt.x+rt.dx;
apt[2].y = rt.y;
AEEPolyline apl;
apl.len = 3;
apl.points = apt;
uint8 a,b,c,d;
IGRAPHICS_GetColor(g,&a,&b,&c,&d);
IGRAPHICS_SetColor(g,255,0,0,0);
IGRAPHICS_DrawPolyline(g,&apl);
IGRAPHICS_SetColor(g,a,b,c,d);
}
ISTATIC_SetText((IStatic*)pCtl,ptext,NULL,m_nNowFont,m_nNowFont);
}
if(!m_bRedraw)
{
if(pCtl != NULL)
ICONTROL_Redraw(pCtl);
return;
}
else if(pCtl != NULL)
{
AEERect rt;
ICONTROL_GetRect(pCtl,&rt);
//rRect.dy -= 4;
if(rRect.y != rt.y)
{
if(pCtl == (IControl*)m_pUser || pCtl == (IControl*)m_pPasswd)
{
AECHAR p[50];
ITEXTCTL_GetText((ITextCtl*) pCtl,p,sizeof(p));
ITEXTCTL_SetText((ITextCtl*) pCtl,p,sizeof(p));
}
ICONTROL_SetRect( pCtl, &rRect );
}
ICONTROL_Redraw( pCtl );
}
}
void CBrewLoginCanvas2::SetActiveCtrl(int8 pos)
{
/*
AECHAR pbuf[MAX_RES_STRING_BUF_SIZE];
ITEXTCTL_GetText(m_pUser,pbuf,MAX_RES_STRING_BUF_SIZE);
ITEXTCTL_SetActive(m_pUser,false);
ITEXTCTL_SetText(m_pUser,pbuf,MAX_RES_STRING_BUF_SIZE);
ITEXTCTL_GetText(m_pPasswd,pbuf,MAX_RES_STRING_BUF_SIZE);
ITEXTCTL_SetActive(m_pPasswd,false);
ITEXTCTL_SetText(m_pPasswd,pbuf,MAX_RES_STRING_BUF_SIZE);
*/
CBrewLoginCanvasBase::SetActiveCtrl(pos);
if(ICONTROL_IsActive((IControl*)m_pSep))
ICONTROL_SetActive((IControl*)m_pSep,false);
// if(ICONTROL_IsActive((IControl*)m_pUser))
// if(!ICONTROL_IsActive((IControl*)m_pSep))
// {
// IMENUCTL_SetActive(m_pISoftKey,true);
// IMENUCTL_Redraw(m_pISoftKey);
// }
// else
// if(ICONTROL_IsActive((IControl*)m_pSep))
// IMENUCTL_SetActive(m_pISoftKey,false);
//
//
// AEETextInputMode am;
// AEETextInputModeInfo ai;
// ITEXTCTL_EnumModeInit(m_pUser);
// am = ITEXTCTL_EnumNextMode(m_pUser,&ai);
// while(am != AEE_TM_NONE)
// {
// am = ITEXTCTL_EnumNextMode(m_pUser,&ai);
// }
//ITEXTCTL_SetInputMode(m_pUser,AEE_TM_SYMBOLS);
//ITEXTCTL_SetActive(m_pUser,true);
}
void CBrewLoginCanvas2::OnResume()
{
//if(m_nCurrent < m_nControls)
//ICONTROL_SetActive(m_aCtls[m_nCurrent],true);
}
void CBrewLoginCanvas2::onSuspend()
{
int i;
for(i = 0; i < m_nControls; i++)
ICONTROL_SetActive(m_aCtls[i],false);
ISTATIC_Reset(m_pSep);
ISTATIC_Reset(m_pIsSave);
}
//boolean CBrewLoginCanvas2::onEvent(AEEEvent eCode, UINT16 wParam, UINT32 dwParam)
//{
// if(eCode == EVT_COMMAND)
// {
// // 处理 EVT_COMMAND 事件 - 输入模式更改
// if((m_pUser != NULL) && ITEXTCTL_HandleEvent(m_pUser,
// eCode, wParam, dwParam)) {
// return TRUE;
// }
// }
// return false;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -