⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csnowjggcontrol.cpp

📁 Symbian工程 九宫格界面
💻 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 + -