smbmusicapmainplayerplayinfoproc.cpp

来自「symbian」· C++ 代码 · 共 722 行 · 第 1/2 页

CPP
722
字号
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::CancelAction iRequestKind=%d");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220005, ELogLevelNormal, KLogFmt, iRequestKind);

	// 張棟庬暿敾掕
	switch (iRequestKind)
		{
		case ESmbMusicAPMainPlayerReqGetPlaySongInfo:
			// 嵞惗嬋忣曬庢摼梫媮
		case ESmbMusicAPMainPlayerReqGetImage:
			// 僕儍働僢僩夋憸庢摼梫媮
		case ESmbMusicAPMainPlayerReqGetBitmap:
			// 價僢僩儅僢僾夋憸庢摼梫媮
		case ESmbMusicAPMainPlayerReqResizeBitmap1:
			//價僢僩儅僢僾僒僀僘曄峏梫媮
		case ESmbMusicAPMainPlayerReqGetImageNum:
			// 夋憸忣曬庢摼梫媮
			Cancel();
			iRequestKind = ESmbMusicAPMainPlayerReqNone;
		default:
			break;
		}
	iWaitQueue->Reset();
	}

/**
 * 摨婜僄儞僕儞傊偺張棟梫媮庬暿傪曉憲偡傞丅
 * @return 張棟梫媮庬暿
 */
TSmbMusicAPMainPlayerPlayRequest CSmbMusicAPMainPlayerPlayInfoProc::RequestKind()
	{
 	return iRequestKind;
	}

/**
 * 旕摨婜姰椆張棟乮摨婜僄儞僕儞丄MusicAPLib丄MusicMWLib乯
 */
void CSmbMusicAPMainPlayerPlayInfoProc::RunL()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::RunL iStatus=%d iRequestKind=%d");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220016, ELogLevelNormal, KLogFmt, iStatus.Int(), iRequestKind);
	
	TSmbMusicAPMainPlayerPlayRequest kind = iRequestKind;
	iRequestKind = ESmbMusicAPMainPlayerReqNone;
	TInt status = iStatus.Int();

	// Add 2006.10.20
	if (KErrServerTerminated == status)
		{
		iObserver->RespServerTerminatedL();
		return;
		}
	// Add End 2006.10.20

// Add 2007.09.11
	if (KErrPermissionDenied == status)
		{
		// 僒乕僶傾僋僙僗巊梡尃側偟
		if (ESmbMusicAPMainPlayerReqGetBitmap)
			{
			// 價僢僩儅僢僾夋憸庢摼梫媮偺応崌
			iPrmBitmap.ResetAndDestroy();
			if (NULL != iPrmSize)
				{
				iPrmSize->Close();
				delete iPrmSize;
				iPrmSize = NULL;
				}
			}
		iObserver->RespPermissionDenied(static_cast<TInt>(kind));
		return;
		}
// Add End 2007.09.11

	if (ESmbMusicAPMainPlayerReqGetImage != kind)
		{
		CheckWaitQueueL();
		}
	
	// 張棟庬暿敾掕
	switch (kind)
		{
		case ESmbMusicAPMainPlayerReqGetPlaySongInfo:
			// 嵞惗嬋忣曬庢摼梫媮
			{
			TBool ret = (KErrNone == status) ? ETrue : EFalse;
			iObserver->RespGetPlayInfoL(iArtistTitle, iAlbumTitle, iSongTitle, iSongDetail.iTotalPlayTime, ret);
			break;
			}
			
		case ESmbMusicAPMainPlayerReqGetImage:
			// 僕儍働僢僩夋憸庢摼梫媮
			CompleteGetImageL((KErrNone == status) ? ETrue : EFalse);
			break;
		
		case ESmbMusicAPMainPlayerReqResizeBitmap1:
			// 價僢僩儅僢僾僒僀僘曄峏梫媮
			if (KErrNone != status)
				{
				iObserver->RespResizeImageL(NULL, NULL, EFalse);
				}
			else 
				{
				iObserver->RespResizeImageL(iConvBitmap1.iMainBitmap, iConvBitmap1.iMaskedBitmap,
				                            ((KErrNone == status) ? ETrue : EFalse));
				}
			break;

		case ESmbMusicAPMainPlayerReqGetBitmap:
			// 價僢僩儅僢僾夋憸庢摼梫媮
			{
			if (KErrNone == status)
				{
				// 惓忢廔椆偺応崌
				if (iPrmBitmap.Count() != 2)
					{
					// 惓忢廔椆偺応崌偼僇僂儞僩偼俀偺偼偢
					_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::RunL ESmbMusicAPMainPlayerReqGetBitmap Count Fail %d iStatus=%d");
					SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220017, ELogLevelNormal, KLogFmt, iPrmBitmap.Count(), status);
					iObserver->RespGetImageL(NULL, NULL, NULL, NULL, ETrue);
					}
				else
					{
					iObserver->RespGetImageL(iPrmBitmap[0]->iMainBitmap, iPrmBitmap[0]->iMaskedBitmap,
					              iPrmBitmap[1]->iMainBitmap, iPrmBitmap[1]->iMaskedBitmap, ETrue);
					// 價僢僩儅僢僾偺強桳尃傪堷偒搉偡丅
					iPrmBitmap[0]->iMainBitmap = NULL;
					iPrmBitmap[0]->iMaskedBitmap = NULL;
					iPrmBitmap[1]->iMainBitmap = NULL;
					iPrmBitmap[1]->iMaskedBitmap = NULL;
					}
				}
			else
				{
				// 堎忢廔椆偺応崌
				iObserver->RespGetImageL(NULL, NULL, NULL, NULL, EFalse);
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::RunL ESmbMusicAPMainPlayerReqGetBitmap Fail");
				SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220018, ELogLevelNormal, KLogFmt);
				}
			iPrmBitmap.ResetAndDestroy();
			if (NULL != iPrmSize)
				{
				iPrmSize->Close();
				delete iPrmSize;
				iPrmSize = NULL;
				}
			break;
			}
		case ESmbMusicAPMainPlayerReqGetImageNum:
			// 夋憸枃悢庢摼梫媮
			{
			TBool ret(ETrue);
			if (KErrPermissionDenied == status ||
			    KErrServerTerminated == status ||
			    KErrServerBusy       == status
			   )
				{
				ret = EFalse;
				}
			CompleteGetImageInfo(ret);
			break;
			}
			
		default:
			break;
		}
	}

/**
 * 旕摨婜僉儍儞僙儖張棟
 */
void CSmbMusicAPMainPlayerPlayInfoProc::DoCancel()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::DoCancel iRequestKind=%d");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220005, ELogLevelNormal, KLogFmt, iRequestKind);

	// 張棟庬暿敾掕
	switch (iRequestKind)
		{
		case ESmbMusicAPMainPlayerReqGetPlaySongInfo:
			// 嵞惗嬋忣曬庢摼梫媮
			iSyncEngine.CancelGetPlaySongInfo(&iStatus);
			break;
		case ESmbMusicAPMainPlayerReqGetImage:
			// 僕儍働僢僩夋憸庢摼梫媮
			iSyncEngine.CancelGetPlaySongImage(&iStatus);
			break;
		
		case ESmbMusicAPMainPlayerReqGetBitmap:
			// 價僢僩儅僢僾夋憸庢摼梫媮
			iImageFunc->CancelConvertImage();
			iPrmBitmap.ResetAndDestroy();
			if (NULL != iPrmSize)
				{
				iPrmSize->Close();
				delete iPrmSize;
				iPrmSize = NULL;
				}
			break;
		
		case ESmbMusicAPMainPlayerReqResizeBitmap1:
			//價僢僩儅僢僾僒僀僘曄峏梫媮
			iImageFunc->CancelResizeBitmap();
			break;
			
		case ESmbMusicAPMainPlayerReqGetImageNum:
			// 夋憸忣曬庢摼梫媮
			iSyncEngine.CancelGetImageCount(&iStatus);
			break;
			
		default:
			break;
		}
	iRequestKind = ESmbMusicAPMainPlayerReqNone;
	}

/**
 * 旕摨婜張棟梫媮傪愝掕偡傞丅
 * @param[in] aKind 摨婜僄儞僕儞傊偺張棟梫媮庬暿
 */
void CSmbMusicAPMainPlayerPlayInfoProc::SetActiveRequest(TSmbMusicAPMainPlayerPlayRequest aKind)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::SetActiveRequest iRequestKind=%d");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220017, ELogLevelNormal, KLogFmt, aKind);
	iRequestKind = aKind;
	SetActive();
	}


/**
 * 旕摨婜張棟梫媮傪旕摨婜懸偪僉儏乕傊搊榐偡傞丅
 * @param[in] aKind 摨婜僄儞僕儞傊偺張棟梫媮庬暿
 */
void CSmbMusicAPMainPlayerPlayInfoProc::SetWaitQueue(TSmbMusicAPMainPlayerPlayRequest aKind)
	{
	TRAPD(err, SetWaitQueueL(aKind));
	if (KErrNone != err)
		{
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::SetWaitQueue Failed");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220018, ELogLevelHigh, KLogFmt);
		PANIC(9220018);
		}
	}

/**
 * 旕摨婜張棟梫媮傪旕摨婜懸偪僉儏乕傊搊榐偡傞丅乮幚懱乯
 * @param[in] aKind 摨婜僄儞僕儞傊偺張棟梫媮庬暿
 */
void CSmbMusicAPMainPlayerPlayInfoProc::SetWaitQueueL(TSmbMusicAPMainPlayerPlayRequest aKind)
	{
	iWaitQueue->AppendL(aKind);
	}

TSmbMusicAPMainPlayerPlayRequest CSmbMusicAPMainPlayerPlayInfoProc::WaitQueue()
	{
	if (!iWaitQueue->Count())
		{
		return ESmbMusicAPMainPlayerReqNone;
		}
	TSmbMusicAPMainPlayerPlayRequest kind;
	kind = static_cast<TSmbMusicAPMainPlayerPlayRequest>(iWaitQueue->At(0));
	iWaitQueue->Delete(0);
	return kind;
	}

void CSmbMusicAPMainPlayerPlayInfoProc::CheckWaitQueueL()
	{
	TSmbMusicAPMainPlayerPlayRequest kind = WaitQueue();

	// 張棟庬暿敾掕
	switch (kind)
		{		
		case ESmbMusicAPMainPlayerReqGetPlaySongInfo:
			// 嵞惗嬋忣曬庢摼梫媮
			{
			iSyncEngine.GetPlaySongInfo(reinterpret_cast<const TSmbMusicAPSyncEngineItemIndex&>(iSaveSongInfo),
			                       iSongDetail, iArtistTitle, iAlbumTitle, iSongTitle, iStatus);
			SetActiveRequest(ESmbMusicAPMainPlayerReqGetPlaySongInfo);
			break;
			}
			
		case ESmbMusicAPMainPlayerReqGetImage:
			// 僕儍働僢僩夋憸庢摼梫媮
// PTX824
//			iJacketSize = iSaveSize;
//			iIconSize   = iSaveSizeIcon;
			iJacketSize.iSize   = iSaveSize;
			iJacketSize.iSpread = ETrue;
			iIconSize.iSize     = iSaveSizeIcon;
			iIconSize.iSpread   = EFalse;
			TSmbMusicAPSyncEngineGetImageInfo info;
			info.iSongItem = iSaveSongInfo;
			info.iImageType = ESmbMusicAPSyncEngineImageTypeJacket;
			info.iIndex = 0;
			iSyncEngine.GetPlaySongImage(info, iSongImage, iStatus);
			SetActiveRequest(ESmbMusicAPMainPlayerReqGetImage);
			break;
		
		case ESmbMusicAPMainPlayerReqResizeBitmap1:
			// 價僢僩儅僢僾僒僀僘曄峏梫媮
			{
			iConvSize = iSaveSizeIcon;
			iJacketBitmap.iMainBitmap = iSaveBitMap;
			iJacketBitmap.iMaskedBitmap = iSaveBitMapMask;
// PTX824
// Change 2007.05.08
//			iImageFunc->ResizeBitmap(iJacketBitmap, iSaveSize, iConvBitmap1, iStatus, ETrue);
//			SetActiveRequest(ESmbMusicAPMainPlayerReqResizeBitmap1);
			TInt ret = iImageFunc->ResizeBitmap(iJacketBitmap, iSaveSize, iConvBitmap1, iStatus, ETrue);
			if (ret != KErrNone)
				{
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::CheckWaitQueueL ResizeImage Fail %d");
				SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220104, ELogLevelNormal, KLogFmt, ret);
				iObserver->RespResizeImageL(NULL, NULL, EFalse);
				}
			else
				{
				SetActiveRequest(ESmbMusicAPMainPlayerReqResizeBitmap1);
				}
// Change End 2007.05.08
			break;
			}
			
		case ESmbMusicAPMainPlayerReqGetImageNum:
			// 夋憸枃悢庢摼梫媮
			iSyncEngine.GetImageCount(iSaveSongInfo, iImageCount, iStatus);
			SetActiveRequest(ESmbMusicAPMainPlayerReqGetImageNum);
			break;

		case ESmbMusicAPMainPlayerReqGetBitmap:
			{
			// 	僕儍働僢僩夋憸價僢僩儅僢僾曄姺
// PTX824
			iPrmSize = new (ELeave) RArray<TSmbMusicAPLibImageSizeInfo>(2);
			iPrmSize->AppendL(iJacketSize);
			iPrmSize->AppendL(iIconSize);
			TInt ret = iImageFunc->ConvertImage (iSongImage, *iPrmSize, iPrmBitmap, iStatus);
			if (KErrNone != ret)
				{
				iObserver->RespGetImageL(NULL, NULL, NULL, NULL, EFalse);
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::CheckWaitQueueL ConvertImage Fail %d");
				SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220119, ELogLevelNormal, KLogFmt, ret);
				}
			else
				{
				SetActiveRequest(ESmbMusicAPMainPlayerReqGetBitmap);
				}
			break;
			}
			
		default:
			break;
		}
	}
	
	
SEMCJ_NAMESPACE_END

// end of SmbMusicAPMainPlayerInfoProc.cpp
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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