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 + -
显示快捷键?