📄 csnowjggcontrol.cpp
字号:
#include <gulicon.h>
#include <aknutils.h>
#include <avkon.hrh>
#include "CSnowJGGControl.h"
#include "CJGProject.mbg"
#include "CHsgGriddingView.h"
#include "CJGProject.hrh"
#include "CJGProjectAppUi.h"
CSnowJGGControl::CSnowJGGControl()
{
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// iLargeImage = NULL;
// iSmallImage = NULL;
// iLargeImageMask = NULL;
// iSmallImageMask = NULL;
// iText = NULL;
// iCurItem = 4;
iSnowChoice = 0;
//iSnowGriddingView = CHsgGriddingView::NewL();
}
CSnowJGGControl::~CSnowJGGControl()
{
// if(iLargeImage)
// {
// delete iLargeImage;
// iLargeImage = NULL;
// }
// if(iLargeImageMask)
// {
// delete iLargeImageMask;
// iLargeImageMask = NULL;
// }
// if(iSmallImage)
// {
// delete iSmallImage;
// iSmallImage = NULL;
// }
// if(iSmallImageMask)
// {
// delete iSmallImageMask;
// iSmallImageMask = NULL;
// }
// if(iText)
// {
// delete iText;
// iText = NULL;
// }
// iSnowImageArr.Reset();
// CleanupStack::PopAndDestroy();
iSnowImageArr.ResetAndDestroy();
iSnowLargeImageArr.ResetAndDestroy();
// iSnowImageMaskArr.Reset();
// CleanupStack::PopAndDestroy();
iSnowImageMaskArr.ResetAndDestroy();
iSnowLargeImageMaskArr.ResetAndDestroy();
// iSnowTextArr.Reset();
// CleanupStack::PopAndDestroy();
iSnowTextArr.ResetAndDestroy();
// if (iSnowGriddingView)
// {
// delete iSnowGriddingView;
// iSnowGriddingView =NULL;
// }
}
void CSnowJGGControl::ConstructL(const TRect& aRect)
{
// CleanupClosePushL(iSnowImageArr);
// CleanupClosePushL(iSnowImageMaskArr);
// CleanupClosePushL(iSnowTextArr);
}
TKeyResponse CSnowJGGControl::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
{
// if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDevice3))
// {
// TBuf<16> sBuf(_L("this is "));
// sBuf.AppendNum(iSnowChoice+1);
// iEikonEnv->InfoMsg(sBuf);
// DrawDeferred();
// }
if((aType == EEventKey) && ((aKeyEvent.iCode == EKeyDevice0)||(aKeyEvent.iCode == EKeyDevice3)))
{
//iSnowGriddingView->HandleCommandL(ECJGProjectOpen,iSnowChoice);
//创建一个ui的静态指针,并通过此指针调用ui中对View指针,从而调用View中的函数HandleCommandL
CCJGProjectAppUi* pAppUi = (CCJGProjectAppUi*)CCoeEnv::Static()->AppUi();
pAppUi->NewsGetGriddingView()->HandleCommandL(ECJGProjectOpen,iSnowChoice);
}
else if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDevice1))
{
//iSnowGriddingView->HandleCommandL(ECJGProjectExit,iSnowChoice);
CCJGProjectAppUi* pAppUi = (CCJGProjectAppUi*)CCoeEnv::Static()->AppUi();
pAppUi->NewsGetGriddingView()->HandleCommandL(ECJGProjectExit,iSnowChoice);
}
else if((aType == EEventKey) && (aKeyEvent.iCode == EKeyRightArrow))
{
iSnowChoice = (iSnowChoice + 1) % 9;
DrawDeferred();
}
else if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDownArrow))
{
iSnowChoice = (iSnowChoice + 3) % 9;
DrawDeferred();
}
else if((aType == EEventKey) && (aKeyEvent.iCode == EKeyUpArrow))
{
iSnowChoice = (iSnowChoice + 6) % 9;
DrawDeferred();
}
else if((aType == EEventKey) && (aKeyEvent.iCode == EKeyLeftArrow))
{
iSnowChoice = (iSnowChoice + 8) % 9;
DrawDeferred();
}
return EKeyWasNotConsumed;
}
void CSnowJGGControl::SnowSetGridPicture(CFbsBitmap* aSrc,CFbsBitmap* aMask,CFbsBitmap* aSrcL,CFbsBitmap* aMaskL)
{
// iSmallImage = aSrc;
// iSmallImageMask = aMask;
iSnowImageArr.Append(aSrc);
iSnowImageMaskArr.Append(aMask);
iSnowLargeImageArr.Append(aSrcL);
iSnowLargeImageMaskArr.Append(aMaskL);
}
void CSnowJGGControl::SnowSetGridText(TInt aMapNum, const TDesC& aSrc)
{
if(aSrc.Length() <= 0) return;
// if(iSnowTextArr[aMapNum])
// {
// delete iSnowTextArr[aMapNum];
// iSnowTextArr[aMapNum] = NULL;
// }
HBufC* bufText = HBufC::NewLC(10);
bufText->Des().Copy(aSrc);
iSnowTextArr.Append(bufText);
// iSnowTextArr[aMapNum] = HBufC::NewLC(aSrc.Length());
// iSnowTextArr[aMapNum]->Des().Copy(aSrc);
CleanupStack::Pop();
}
void CSnowJGGControl::Draw( const TRect& aRect ) const
{
CWindowGc& gc = SystemGc();
TInt width = aRect.Width() / 3;
TInt height = aRect.Height() / 4;
//设置字体
const CFont* fontUsed = iEikonEnv->TitleFont();
gc.UseFont(fontUsed);
for (TInt row=0; row<3; row++)
{
for(TInt col=0; col<3; col++)
{//先画一行
TRect rcItem = aRect;
rcItem.iTl.iX += col*width; //矩形的左顶点的x坐标
rcItem.iTl.iY += row*height; //矩形的左顶点的y坐标
rcItem.iBr.iX = rcItem.iTl.iX + width; //矩形的右底点的x坐标
rcItem.iBr.iY = rcItem.iTl.iY + height; //矩形的右底点的y坐标
// TInt index = row*3+col; //行序,从开始计算每个单元格的索引
//绘制每个单元格
TInt nVal = row*3 + col;
if(nVal == iSnowChoice)
{
// gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
// gc.SetBrushColor(TRgb(45,210,190));
// gc.DrawRect(rcItem);
// gc.SetBrushStyle(CGraphicsContext::ENullBrush);
switch (aRect.Width())
{
case 352:
{
gc.BitBltMasked(TPoint((rcItem.iTl.iX + (width-44)/2),(rcItem.iTl.iY + (height*3/4-44)/2)), iSnowLargeImageArr[nVal], TRect(TPoint(0,0), TSize(88, 88)), iSnowLargeImageMaskArr[nVal], ETrue);
}
break;
case 240:
{
gc.BitBltMasked(TPoint((rcItem.iTl.iX + (width-44)/2)-10,(rcItem.iTl.iY + (height*3/4-44)/2)-10), iSnowLargeImageArr[nVal], TRect(TPoint(0,0), TSize(60, 60)), iSnowLargeImageMaskArr[nVal], ETrue);
}
break;
default:
break;
}
}
else
{
gc.BitBltMasked(TPoint((rcItem.iTl.iX + (width-44)/2),(rcItem.iTl.iY + (height*3/4-44)/2)), iSnowImageArr[nVal], TRect(TPoint(0,0), TSize(44, 44)), iSnowImageMaskArr[nVal], ETrue);
}
//gc.DrawText(*iSnowTextArr[nVal], TPoint(rcItem.iTl.iX+30, rcItem.iBr.iY));
}
}
gc.DrawText(*iSnowTextArr[iSnowChoice], TPoint(aRect.Width()/2-aRect.Width()/7,aRect.Height()+100));
//gc.DrawText(*iSnowTextArr[iSnowChoice], TPoint(100,100));
}
void CSnowJGGControl::SetCurrentIndex(TInt& aIndex)
{
if(aIndex > 8 || aIndex < 0) return;
iSnowChoice = aIndex;
DrawDeferred();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -