📄 appstatenewhighscore.cpp
字号:
#include "AppStateNewHighScore.h"
#include "ExampleApplication.h"
CAppStateNewHighScore::CAppStateNewHighScore(CExampleApplication& aApp)
: CAppState(aApp),
iNextState(EAppUpdateStateContinue)
{
}
CAppStateNewHighScore::~CAppStateNewHighScore()
{
if (iTextInput)
{
iTextInput->Stop();
}
// write new high score to table
App().HighScores()->Add(iHighScoreItem, ETrue);
if (iSymbolMatrixDrawer)
{
delete iSymbolMatrixDrawer;
iSymbolMatrixDrawer = NULL;
}
// release all text input objects
if (iSymbolMatrix)
{
iSymbolMatrix->Release();
iSymbolMatrix = NULL;
}
if( iPredictive )
{
iPredictive->Release();
iPredictive = NULL;
}
if( iInputControl )
{
iInputControl->Release();
iInputControl = NULL;
}
if( iTextInput )
{
iTextInput->Release();
iTextInput = NULL;
}
}
TInt CAppStateNewHighScore::Init()
{
iHighScoreItem.iScore = App().LastGameScore();
iHighScoreItem.iName = _L("");
ReturnCode ret;
ret = CRuntime::CreateInstance( iTextInput );
if ( ret == OK )
{
iTextInput->Attach( App().Keyboard() );
iTextInput->SetObserver( this );
}
else
{
return App().RGAErrorToSymbianError(ret);
}
iTextInput->GetTextInputControl( iInputControl );
if( !iInputControl )
{
return KErrNotFound;
}
iInputControl->GetPredictive( iPredictive );
if( iPredictive )
{
iPredictive->SetObserver( this );
}
else
{
return KErrNotFound;
}
iInputControl->GetSymbolMatrix( iSymbolMatrix );
if( !iSymbolMatrix )
{
return KErrNotFound;
}
iSymbolMatrix->SetHistory( FEATURE_ON );
iTextInput->Start();
iTextInputMode = iInputControl->InputMode();
iTextInputCase = iInputControl->InputCase();
const char16* tmp;
iInputControl->SetMaximumTextLength(App().HighScores()->MaxNameLength(), tmp);
return KErrNone;
}
EAppUpdateState CAppStateNewHighScore::Update(const TReal64& /*aFrametime*/)
{
return iNextState;
}
void CAppStateNewHighScore::Draw(IGraphicsContext& aContext)
{
aContext.Clear(0);
TSize bbsize = App().BackBufferSize();
TRect screen = TRect(0, 0, bbsize.iWidth, bbsize.iHeight);
CGraphicsContext* context = App().SystemGc( App().BackBuffer() );
context->UseFont(App().BigFont());
context->SetPenColor(KRgbRed);
context->DrawText( KTextHighScoreCongrat,
screen,
40,
CGraphicsContext::ECenter);
context->DrawText( KTextHighScoreNewScore,
screen,
80,
CGraphicsContext::ECenter);
context->DiscardFont();
context->UseFont(App().NormalFont());
context->SetPenColor(KRgbWhite);
context->DrawText( KTextHighScoreEnterName,
screen,
(bbsize.iHeight >> 1),
CGraphicsContext::ECenter);
context->DiscardFont();
context->UseFont(App().SmallFont());
context->SetPenColor(KRgbGreen);
context->DrawText( iHighScoreItem.iName,
screen,
(bbsize.iHeight >> 1) + 20,
CGraphicsContext::ECenter);
// draw current text input mode indicator
TPoint pos(bbsize.iWidth - 30, 16);
TBuf<32> msg;
if (iTextInputMode == TEXT_INPUT_MODE_NUMERIC)
{
msg = _L("123");
}
else
{
switch (iTextInputCase)
{
case TEXT_INPUT_CASE_LOWER:
msg = _L("abc");
break;
case TEXT_INPUT_CASE_UPPER:
msg = _L("ABC");
break;
case TEXT_INPUT_CASE_LOWER_NEXT_UPPER:
msg = _L("Abc");
break;
}
}
context->DrawText(msg, pos);
if (iTextInputMode == TEXT_INPUT_MODE_PREDICTIVE)
{
// underline
pos.iY += 2;
context->DrawLine(pos, TPoint(pos.iX + 20, pos.iY));
}
/*
switch (iTextInputMode)
{
case TEXT_INPUT_MODE_MULTITAPPING:
context->DrawText( _L("Multitapping"), pos);
break;
case TEXT_INPUT_MODE_PREDICTIVE:
context->DrawText( _L("Predictive"), pos);
break;
case TEXT_INPUT_MODE_NUMERIC:
context->DrawText( _L("Numeric"), pos);
break;
case TEXT_INPUT_MODE_PINYIN:
context->DrawText( _L("Pinyin"), pos);
break;
case TEXT_INPUT_MODE_STROKE:
context->DrawText( _L("Stroke"), pos);
break;
case TEXT_INPUT_MODE_ZHUYIN:
context->DrawText( _L("Zhuyin"), pos);
break;
}
pos.iX = 100;*/
context->DiscardFont();
App().ApplySystemGc();
if (iSymbolMatrixDrawer)
{
TPoint position;
position.iX = (bbsize.iWidth >> 1) -
((iSymbolMatrixDrawer->GridSize().iWidth * iSymbolMatrix->ColumnCount()) >> 1);
position.iY = bbsize.iHeight -
((iSymbolMatrixDrawer->GridSize().iHeight * (iSymbolMatrix->RowCount() + 1)));
iSymbolMatrixDrawer->Draw( aContext,
App().SmallFont(),
position );
}
}
void CAppStateNewHighScore::KeyDown(TUint32 /*aKeyCode*/)
{
}
/**
* functions from ITextInputObserver
*/
void CAppStateNewHighScore::TextChanged( uint32 /*aCursorPosition*/,
ReturnCode /*aError*/ ) NO_THROW
{
iHighScoreItem.iName = (TUint16*)(iTextInput->TextBuffer());
}
void CAppStateNewHighScore::CursorPositionChanged( uint32 /*aCursorPosition*/ ) NO_THROW
{
}
void CAppStateNewHighScore::TextInputFinished() NO_THROW
{
// done, exit state
iNextState = EAppUpdateStateInitMenuHighScores;
}
void CAppStateNewHighScore::SymbolMatrixOpened() NO_THROW
{
iSymbolMatrixDrawer = CSymbolMatrixDrawer::NewL(iSymbolMatrix, &App());
}
void CAppStateNewHighScore::SymbolMatrixEntrySelected( uint32 /*aEntryIndex*/,
uint32 /*aRow*/,
uint32 /*aColumn*/,
const char16* /*aEntry*/ ) NO_THROW
{
}
void CAppStateNewHighScore::SymbolMatrixClosed() NO_THROW
{
if (iSymbolMatrixDrawer)
{
delete iSymbolMatrixDrawer;
iSymbolMatrixDrawer = NULL;
}
}
void CAppStateNewHighScore::TextInputModeChanged( TextInputMode aMode ) NO_THROW
{
iTextInputMode = aMode;
}
void CAppStateNewHighScore::TextInputCaseChanged( TextInputCase aCase ) NO_THROW
{
iTextInputCase = aCase;
}
/**
* functions from IPredictiveObserver
*/
void CAppStateNewHighScore::UnknownWordTypedIn() NO_THROW
{
}
void CAppStateNewHighScore::SpellKeyStatus( KeyStatus /*aStatus*/ ) NO_THROW
{
}
void CAppStateNewHighScore::PreviousKeyStatus( KeyStatus /*aStatus*/ ) NO_THROW
{
}
void CAppStateNewHighScore::SpellCalled() NO_THROW
{
}
void CAppStateNewHighScore::SpellClosed() NO_THROW
{
}
void CAppStateNewHighScore::WordUnderlined( WordUnderlineStatus /*aStatus*/,
uint32 /*aStartPosition*/,
uint32 /*aEndPosition*/ ) NO_THROW
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -