📄 viewbase.cpp
字号:
#include "viewbase.h"
#include "sman.h"
#include <sman.rsg>
CViewBase::CViewBase(CConfig *cData)
{
configData = cData;
activateCount = 0;
appPathNoExt.Copy(CEikonEnv::Static()->EikAppUi()->Application()->AppFullName());
appPathNoExt.SetLength(appPathNoExt.Length() - 3);
controlsArray = new (ELeave) CArrayPtrSeg<CCoeControl>(1);
firstTime = ETrue;
}
CViewBase::~CViewBase()
{
controlsArray->ResetAndDestroy();
delete controlsArray;
}
void CViewBase::doViewActivated()
{
if (activateCount <= 0)
{
TPixelsAndRotation sizeAndRotation;
TRect rect;
CEikonEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(sizeAndRotation);
CEikonEnv::Static()->ScreenDevice()->SetScreenSizeAndRotation(sizeAndRotation);
static_cast<CSMan2AppUi*>(iEikonEnv->AppUi())->switchView(viewId);
static_cast<CSMan2AppUi*>(iEikonEnv->AppUi())->viewId = viewId;
MakeVisible(ETrue);
static_cast<CEikAppUi*>(iEikonEnv->AppUi())->AddToStackL(this);
if (iCoeEnv->ScreenDevice()->CurrentScreenMode() == 1)
{
rect.iTl = TPoint(0, 0);
rect.iBr = TPoint((CEikonEnv::Static()->ScreenDevice())->SizeInPixels().iWidth, (CEikonEnv::Static()->ScreenDevice())->SizeInPixels().iHeight);
}
else if (iCoeEnv->ScreenDevice()->CurrentScreenMode() == 0)
{
rect.iTl = static_cast<CEikAppUi*>(iEikonEnv->AppUi())->ClientRect().iTl;
rect.iBr = static_cast<CEikAppUi*>(iEikonEnv->AppUi())->ClientRect().iBr;
}
SetRect(rect);
activateCount++;
drawBJackIcon(static_cast<CSMan2AppUi*>(iEikonEnv->AppUi())->iBJackView->oScanner->IsActive());
}
}
void CViewBase::drawBJackIcon(TBool draw)
{
bjackIconLabel[static_cast<CSMan2AppUi*>(iEikonEnv->AppUi())->bjackIconLabelCurrentImage]->MakeVisible(EFalse);
if (draw)
{
static_cast<CSMan2AppUi*>(iEikonEnv->AppUi())->bjackIconLabelCurrentImage++;
if (static_cast<CSMan2AppUi*>(iEikonEnv->AppUi())->bjackIconLabelCurrentImage >= NUM_BJACK_ICONS)
static_cast<CSMan2AppUi*>(iEikonEnv->AppUi())->bjackIconLabelCurrentImage = 0;
bjackIconLabel[static_cast<CSMan2AppUi*>(iEikonEnv->AppUi())->bjackIconLabelCurrentImage]->MakeVisible(ETrue);
}
else
{
for (int i = 0; i < NUM_BJACK_ICONS; i++)
bjackIconLabel[i]->MakeVisible(EFalse);
}
}
void CViewBase::initBJackIcon()
{
// Bluejack icon.
TFileName bitmapFile;
bitmapFile.Copy(appPathNoExt);
bitmapFile.Append(_L("MBM"));
for (int i = 0; i < NUM_BJACK_ICONS; i++)
{
bjackIconLabel[i] = new (ELeave) CEikImage();
bjackIconLabel[i]->CreatePictureFromFileL(bitmapFile, EMbmMyheaderBjackframe1 + i, EMbmMyheaderBjackframe1 + i);
bjackIconLabel[i]->SetContainerWindowL(*this);
bjackIconLabel[i]->SetExtent(bjackIconPosition, TSize(16, 6));
bjackIconLabel[i]->MakeVisible(EFalse);
controlsArray->AppendL(bjackIconLabel[i]);
}
}
void CViewBase::releaseFont()
{
iEikonEnv->ScreenDevice()->ReleaseFont(font);
}
void CViewBase::generateZoomFont(TInt zoomLevel)
{
TZoomFactor zoomFactor;
zoomFactor.SetZoomFactor(zoomLevel);
const CFont* normalFont = iEikonEnv->NormalFont();
TFontSpec fontSpec = normalFont->FontSpecInTwips();
if(!zoomFactor.GraphicsDeviceMap())
zoomFactor.SetGraphicsDeviceMap(iEikonEnv->ScreenDevice());
User::LeaveIfError(zoomFactor.GetNearestFontInTwips(font, fontSpec));
}
void CViewBase::Draw(const TRect& aRect) const
{
CWindowGc& gc = SystemGc();
gc.Clear(aRect);
}
int CViewBase::CountComponentControls() const
{
return controlsArray->Count();
}
CCoeControl* CViewBase::ComponentControl(int aIndex) const
{
if (aIndex < controlsArray->Count())
return controlsArray->At(aIndex);
else
return NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -