smbmusicapmainplayerimageview.cpp

来自「symbian」· C++ 代码 · 共 1,793 行 · 第 1/5 页

CPP
1,793
字号
			}
		else	// 夋憸側偟
			{
			imageLabel->CreatePictureFromFileL(KSkonMusicMbmNoImageFileName, EMbmMusicMc_no_image);	// 夋憸側偟戙懼夋憸
			}
			
		// 僀儊乕僕儔儀儖偺椞堟傪愝掕偡傞
		imageLabel->SetRect(TRect(TPoint(KSmbLayout_UI_MPM_A_1_2_X, KSmbLayout_UI_MPM_A_1_2_Y - KSmbLayout_PICT_H),
		                          TSize(KSmbLayout_UI_MPM_A_1_2_W, KSmbLayout_UI_MPM_A_1_2_H)));
		imageLabel->SetResizeMode(CSkonImageLabel::EResizeNone);
		imageLabel->SetAlignment(EHCenterVCenter);
		imageLabel->SetBackgroundMode(CSkonImageLabel::ETasteDraw, TRgb(0, 0, 0));
		CleanupStack::Pop(imageLabel);
		// 價儏乕偵僀儊乕僕儔儀儖傪捛壛偡傞
		AddControlL(imageLabel);
		iImageLabel = imageLabel;
		iImageLabel->ActivateL();
//ADD-E TRK7502 2006/09/26 kobayashi
		}
	
	// 僉乕僈僀僟儞僗偺乽曐懚乿僉乕偺昞帵桳柍愝掕
	SetArrowState(aTotalCount, aIndex);
	CSkonKeyGuidance* keyGuidance = static_cast<CSkonKeyGuidance*>(KeyGuidance());
//	CSkonKeyGuidance* keyGuidance = STATIC_CAST(CSkonKeyGuidance*, KeyGuidance());
	if(NULL!=keyGuidance)
		{
		keyGuidance->MakeVisibleKey(ESkonKeyGuidanceSoftKeyRight, aSave);
		if(EFalse!=IsFocused())
			{
			keyGuidance->DrawNow();
			}
		}

	// 乽尰嵼昞帵偟偰偄傞夋憸偺枃悢/憤夋憸枃悢乿偺昞帵
	iIndex = aIndex;
	iTotalCount = aTotalCount;
	DrawNow();	
	}

/**
 * 夋憸僨乕僞偺弶婜壔
 *
 * @return								側偟
 */
void CSmbMusicAPMainPlayerImageView::ClearImage(TBool allClear)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |100;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::ClearImage()");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt);
#endif

	// ADD-S [iKeeper(TRK):100213] 懳墳嶔
	TInt result = iSyncModel->CancelRequest(iRequestId, EFalse);
	if (result != KErrNone)
		{
		// ADD-S [iKeeper(TRK):100213] 懳墳嶔 儘僌弌椡
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |100;
		_LIT(KLogFmt0001, "CSmbMusicAPMainPlayerImageView::ClearImage() TRK 100213 result:%d iRequestId:%d");
		SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt0001, result, iRequestId);
		}
		
	if(EFalse!=allClear)
		{
// Change-S PTX-824懳墳(UIQ-1287) 暯壀
		// 夋憸忣曬傪徚嫀偡傞
//		if (iHasImageInfo)
//			{
//			iHasImageInfo = EFalse;
//			}
		iHasJacketImageInfo = EFalse;
		iHasLyricImageInfo = EFalse;
// Change-E PTX-824懳墳(UIQ-1287) 暯壀
		iTotalCount = 0;
		iIndex = 0;
		iStoreFlag = EFalse;
		}
	
	iImageErr = KErrNone;
	// 夋憸僼傽僀儖傪徚嫀偡傞
	if(NULL!=iFileName)
		{
		DeleteImageFile();
		}
	delete iFileName;
	iFileName = NULL;
	
	// 僀儊乕僕儔儀儖傪徚嫀偡傞
	if(NULL!=iImageLabel)
		{
		DeleteControl(iImageLabel);
		}
	iImageLabel = NULL;

	//2006.10.20 TRK#11918
	// 僉乕僈僀僟儞僗偺乽曐懚乿僉乕傪昞帵偝偣側偄(僨僼僅儖僩)
	CSkonKeyGuidance* keyGuidance = static_cast<CSkonKeyGuidance*>(KeyGuidance());
//	CSkonKeyGuidance* keyGuidance = STATIC_CAST(CSkonKeyGuidance*, KeyGuidance());
	if(NULL!=keyGuidance)
		{
		keyGuidance->MakeVisibleKey(ESkonKeyGuidanceSoftKeyRight, EFalse);
		if(EFalse!=IsFocused())
			{
			keyGuidance->DrawNow();
			}
		}
	}

/**
 * 夋憸昞帵
 *
 * @param[in]		aRect				昞帵椞堟
 * @return								側偟
 */
void CSmbMusicAPMainPlayerImageView::Draw(const TRect& aRect) const
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |110;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::Draw(%d, %d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, aRect.Width(), aRect.Height());
#endif

    	CAfView::Draw(aRect);

    	CWindowGc& gc = SystemGc();
    
//2006.10.06 TRK#10405 夋憸僄儔乕偺応崌偱傕枃悢偼昞帵偡傞
//	if(KErrNone==iImageErr && 0<iTotalCount)
	if(0<iTotalCount)
		{
		//const TPoint KDenominatorImagePos( 200,		0);	/**< FrameImage偺昞帵埵抲 */
		//const TPoint KSlashImagePos( 200 + 8 ,	0);		/**< FrameImage偺昞帵埵抲 */
		//const TPoint KDominatorImagePos( 200 + 16,	0);	/**< FrameImage偺昞帵埵抲 */

		const TPoint KDenominatorImagePos(KSmbLayout_UI_MPM_A_1_1_X, KSmbLayout_UI_MPM_A_1_1_Y - KSmbLayout_PICT_H);
		const TPoint KSlashImagePos(KSmbLayout_UI_MPM_A_1_1_X + KSmbLayout_UI_MPM_A_1_1_W, KSmbLayout_UI_MPM_A_1_1_Y - KSmbLayout_PICT_H);
		const TPoint KDominatorImagePos(KSmbLayout_UI_MPM_A_1_1_X + KSmbLayout_UI_MPM_A_1_1_W * 2, KSmbLayout_UI_MPM_A_1_1_Y - KSmbLayout_PICT_H);

		// 尰嵼昞帵拞偺夋憸枃悢帤偺昤夋
		TInt iconBodyId = EMbmPhotoParts_commo_1 + (iIndex * 2);
		TInt iconMaskId = iconBodyId + 1;
		const CGulIcon* icon = iIconCache->Icon(iconBodyId, iconMaskId);
	    __ASSERT_DEBUG(icon != NULL, PANIC(9300002));
		gc.BitBltMasked(KDenominatorImagePos, icon->Bitmap(), TRect(TPoint(0, 0), icon->Bitmap()->SizeInPixels()), icon->Mask(), EFalse);
//
		TDisplayMode dispmode = icon->Mask()->DisplayMode();
//
		// 僗儔僢僔儏('/')暥帤偺昤夋
		icon = iIconCache->Icon(EMbmPhotoParts_commo_slash, EMbmPhotoParts_commo_slashm);
	    __ASSERT_DEBUG(icon != NULL, PANIC(9300003));
		gc.BitBltMasked(KSlashImagePos, icon->Bitmap(), TRect(TPoint(0, 0), icon->Bitmap()->SizeInPixels()), icon->Mask(), EFalse);

		dispmode = icon->Mask()->DisplayMode();
	
		// 慡夋憸枃悢帤偺昤夋
		iconBodyId = EMbmPhotoParts_commo_0 + (iTotalCount * 2);
		iconMaskId = iconBodyId + 1;
		icon = iIconCache->Icon(iconBodyId, iconMaskId);
	    __ASSERT_DEBUG(icon != NULL, PANIC(9300004));
		gc.BitBltMasked(KDominatorImagePos, icon->Bitmap(), TRect(TPoint(0, 0), icon->Bitmap()->SizeInPixels()), icon->Mask(), EFalse);

		dispmode = icon->Mask()->DisplayMode();
		}


	// 夋憸側偟偺応崌
	if(KErrNone!=iImageErr)
		{
		const CGulIcon* icon = iNoImageIcon;
	    __ASSERT_DEBUG(icon != NULL, PANIC(9300005));
		TPoint viewCenter = Rect().Center();
		TSize imageSize = icon->Bitmap()->SizeInPixels();
		TPoint imagePoint = TPoint(viewCenter.iX - imageSize.iWidth/2,
								   viewCenter.iY - imageSize.iHeight/2);
		gc.BitBlt(imagePoint, icon->Bitmap(), TRect(TPoint(0, 0), imageSize));
		}
	}

/**
 * 夋憸忣曬庢摼
 *
 * @param[in]		aDialogTimerResetart	僟僀傾儘僌偺僞僀儅乕嵞愝掕
 */
void CSmbMusicAPMainPlayerImageView::HandleGetImageFile(TBool aDialogTimerResetart)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |120;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::HandleGetImageFile() aCommandID iStartParam.kind:[%d]");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, iStartParam.kind);
#endif

// Change-S PTX-824(UIQ-1287) 暯壀
	// ImageInfo偑枹庢摼偱偁傞応崌
//	if (!iHasImageInfo)
	if (((ESmbMusicAPMainPlayerImageKindJacket == iStartParam.kind) && (EFalse == iHasJacketImageInfo))
	 ||	((ESmbMusicAPMainPlayerImageKindSongWords == iStartParam.kind) && (EFalse == iHasLyricImageInfo)))
		{
//		// 夋憸忣曬傪庢摼偡傞
//		iSyncModel->GetSongImageInfo(iStartParam.iListHandle, 
//									iStartParam.iIndex, 
//									EOwnerType_Image,
//									iRequestId,
//									*this);

		if (ESmbMusicAPMainPlayerImageKindJacket == iStartParam.kind)
			{
			iSyncModel->GetSongImageInfo(iStartParam.iListHandle, 
										iStartParam.iIndex, 
										ESmbMusicAPSyncEngineImageTypeJacket,
										EOwnerType_Image,
										iRequestId,
										*this);
			}
		else
			{
			iSyncModel->GetSongImageInfo(iStartParam.iListHandle, 
										iStartParam.iIndex, 
										ESmbMusicAPSyncEngineImageTypeLyric,
										EOwnerType_Image,
										iRequestId,
										*this);
			}
// Change-E PTX-824(UIQ-1287) 暯壀
		}
	// ImageInfo偑庢摼嵪傒偱偁傞応崌
	else
		{
		iImageErr = KErrNotFound;
		TSmbMusicAPSyncEngineImageType imageType;
		if(ESmbMusicAPMainPlayerImageKindJacket==iStartParam.kind)
			{
			imageType = ESmbMusicAPSyncEngineImageTypeJacket;
			iTotalCount = iArrayJacket.Count();
			if(iIndex < iTotalCount)
				{
				iImageInfo = iArrayJacket[iIndex];
				iImageErr = KErrNone;
				}
			}
		else
			{
			imageType = ESmbMusicAPSyncEngineImageTypeLyric;
			iTotalCount = iArrayLyric.Count();
			if(iIndex < iTotalCount)
				{
				iImageInfo = iArrayLyric[iIndex];
				iImageErr = KErrNone;
				}
			}

		if(KErrNone != iImageErr)
			{
			//MOD-S TRK7502 2006/09/25 kobayashi
			//_LIT(KEmptyName, "" );
			//ShowImageL(KEmptyName, 0, 0, 0, 0, EFalse);
			ShowImageL(NULL, NULL, iTotalCount, iIndex, EFalse);
			//MOD-E TRK7502 2006/09/25 kobayashi
			return;
			}

		// 庢摼偟偨夋憸忣曬傪愝掕偡傞
		iStoreFlag = iImageInfo.iStoreFlag;

		// 夋憸偺曐懚愭偲側傞僼傽僀儖柤(僼儖僷僗巜掕)傪嶌惉偡傞
		// 儕僜乕僗偐傜暥帤楍傪撉傒崬傓	
	    	HBufC*	imageFilePath = CEikonEnv::Static()->AllocReadResourceL(R_MUSIC_MAINPLAYER_IMAGE_FILE_PATH);
	    	CleanupStack::PushL(imageFilePath);

		// 僼傽僀儖柤(僼儖僷僗巜掕)
		TFileName fileName(imageFilePath->Des());
	    
		//2006.10.06 TRK#10019,10021
		/*
		if(0<iImageInfo.iFileName.Length())
			{
			// ImageInfo偐傜夋憸偺僼傽僀儖柤傪庢摼偟丆偦傟偵僷僗傪捛壛偡傞
			fileName.Append(iImageInfo.iFileName);
			}
		// 僼傽僀儖柤偑側偄応崌
		else
			{
			_LIT(KTempName, "temp_image_" );
			fileName.Append(KTempName);
			fileName.AppendNumFixedWidth(iIndex, EDecimal, 2);
			}
		*/
		//嶌惉偡傞夋憸僼傽僀儖柤偼屌掕僼傽僀儖柤偵偡傞
		_LIT(KTempName, "musicplayerimage" );
		fileName.Append(KTempName);
		
		// 庢摼嵪傒夋憸僼傽僀儖偑偁傟偽嶍彍偡傞
		DeleteImageFile();
		delete iFileName;
		iFileName = NULL;	// 2007.04捛壛
		iFileName = HBufC::NewL(fileName.Length());
		iFileName->Des().Copy(fileName);
		
		CleanupStack::Pop();
		delete imageFilePath;

		// 偙傟偐傜庢摼偡傞夋憸僼傽僀儖柤偲摨偠僼傽僀儖偑偁傟偽嶍彍偡傞
		DeleteImageFile();

		iSyncModel->GetImage(iStartParam.iListHandle, 
							iStartParam.iIndex, 
							imageType,
							iIndex,
							*iFileName,
							EOwnerType_Image,
							iRequestId,
							*this);
							
		}
		

	if(EFalse != aDialogTimerResetart)
		{
		//2006.10.16 TRK#11474
		StartLoadingTimer();
		}
	}

//ADD-S TRK7502 2006/09/26 kobayashi
/**
 * 夋憸忣曬庢摼
 * 僼傽僀儖偐傜巜掕僒僀僘偺價僢僩儅僢僾傪庢摼偡傞
 *
 * @param[in]		aWidth		庢摼夋憸暆
 * @param[in]		aHeight		庢摼夋憸崅
 * @param[in]		aSpread		奼戝儕僒僀僘僼儔僌
 */
void CSmbMusicAPMainPlayerImageView::HandleBitmapDataL(TInt aWidth, TInt aHeight, TBool aSpread)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |125;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::HandleBitmapDataL(%d, %d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, aWidth, aHeight);
#endif

// Change-S PTX-824懳墳(UIQ-1535)丂暯壀
//	RArray<TSize>* sizeArray = new (ELeave) RArray<TSize>(1);
//	TSize aSize;
//	aSize.iWidth = aWidth;
//	aSize.iHeight = aHeight;
//	sizeArray->AppendL(aSize);
	RArray<TSmbMusicAPLibImageSizeInfo>* sizeArray = new (ELeave) RArray<TSmbMusicAPLibImageSizeInfo>(1);
	TSmbMusicAPLibImageSizeInfo sizeInfo;
	sizeInfo.iSize.iWidth = aWidth;
	sizeInfo.iSize.iHeight = aHeight;
	sizeInfo.iSpread = aSpread;
	sizeArray->AppendL(sizeInfo);
// Change-E PTX-824懳墳(UIQ-1535)丂暯壀
	iSyncModel->ConvertImage(*iFileName, 
							*sizeArray, 
							EOwnerType_Image,
							iRequestId,
							*this);
	sizeArray->Close();
	delete sizeArray;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?