📄 smbmusicapmainplayerfilterprocessmakethumbnail.cpp
字号:
/* Copyright (C) 2005-2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
// SmbMusicAPMainPlayerFilterProcessMakeThumbnail.cpp
//
// Description:
// 儈儏乕僕僢僋儊僀儞僾儗僀儎
// 僒儉僱僀儖庢摼張棟僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//---------------------------------------------------------------------------
//2006/08/14 |SDNA壀嶳 |怴婯嶌惉
#include <FjAfEnv.h>
#include "SmbMusicAPMainPlayerUtility.h"
#include "SmbMusicAPMainPlayerFilterProcessMakeThumbnail.h"
USING_NAMESPACE_DCM
SEMCJ_NAMESPACE_BEGIN
/**
僐儞僗僩儔僋僞
* @param[in] aObserver 僆僽僓乕僶偺億僀儞僞
* @param[in] aSyncServerController 摨婜僒乕僶惂屼偺嶲徠
* @return 側偟
*/
CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::CSmbMusicAPMainPlayerFilterProcessMakeThumbnail(
MSmbMusicAPMainPlayerFilterProcessObserver& aObserver,
CSmbMusicAPMainPlayerFilterSyncServerController& aSyncServerController)
:CSmbMusicAPMainPlayerFilterProcess(aObserver)
, iEvent(EFilterProcessMakeThumbnailEventStart)
, iState(EFilterProcessMakeThumbnailStateIdle)
, iSyncServer(aSyncServerController)
, iLog(CAfEnv::Static()->Log())
{
#ifdef __DEBUG_LOG_MAINPLAYER__
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 00;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::CSmbMusicAPMainPlayerFilterProcessMakeThumbnail()");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif
}
/**
僨僗僩儔僋僞
* @param 側偟
* @return 側偟
*/
CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::~CSmbMusicAPMainPlayerFilterProcessMakeThumbnail()
{
#ifdef __DEBUG_LOG_MAINPLAYER__
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 10;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::~CSmbMusicAPMainPlayerFilterProcessMakeThumbnail()");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif
Reset();
}
/**
儕僙僢僩
* @param 側偟
* @return 側偟
*/
void CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::Reset()
{
#ifdef __DEBUG_LOG_MAINPLAYER__
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 20;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::Reset()");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif
if(EFilterProcessMakeThumbnailStateResizeBitmap == iState)
{
iSyncServer.CancelRequest(iRequestId, EFalse);
}
iEvent = EFilterProcessMakeThumbnailEventStart;
iState = EFilterProcessMakeThumbnailStateIdle;
iMainBitmap = NULL;
iMaskBitmap = NULL;
delete iMainResizeBitmap;
iMainResizeBitmap = NULL;
delete iMaskResizeBitmap;
iMaskResizeBitmap = NULL;
delete iResultThumbnail;
iResultThumbnail = NULL;
CSmbMusicAPMainPlayerFilterProcess::Reset();
}
/**
僷儔儊乕僞愝掕
* @param[in] aMainBitmap 儊僀儞價僢僩儅僢僾
* @param[in] aMaskBitmap 儅僗僋價僢僩儅僢僾
* @return 愝掕偺惉斲
*/
TBool CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::SetParam(CFbsBitmap* aMainBitmap, CFbsBitmap* aMaskBitmap)
{
#ifdef __DEBUG_LOG_MAINPLAYER__
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 30;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::SetParam()");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif
if( EFilterProcessMakeThumbnailStateIdle == iState ||
EFilterProcessMakeThumbnailStateWaitStart == iState)
{
iMainBitmap = aMainBitmap;
iMaskBitmap = aMaskBitmap;
iState = EFilterProcessMakeThumbnailStateWaitStart;
return ETrue;
}
else
{
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 31;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::SetParam() Cannot Set in This State %d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState);
return EFalse;
}
}
/**
僒儉僱僀儖傾僀僐儞庢摼
* @param[out] aIcon 僒儉僱僀儖傾僀僐儞 奿擺応強偺嶲徠
* @return 庢摼偺惉斲乮張棟偑廔椆偟偰偄傞偐偳偆偐乯
*/
TBool CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::GetThumbnailIcon(CGulIcon*& aIcon)
{
#ifdef __DEBUG_LOG_MAINPLAYER__
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 40;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::GetThumbnailBitmap() iState:%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState);
#endif
if(EFilterProcessMakeThumbnailStateEnd == iState)
{
aIcon = iResultThumbnail;
iResultThumbnail = NULL;
return ETrue;
}
else
{
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 41;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::GetThumbnailBitmap() Process Not Complete %d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState);
return EFalse;
}
}
/**
* 梫媮姰椆
*
* @param[in] aKind 梫媮庬暿
* @param[in] aResult 張棟寢壥
* @param[in] aResponse 墳摎僋儔僗偺嶲徠乮忣曬庢摼梡乯
*/
void CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::RequestComplete(TSmbMusicAPMainPlayerRequest aKind,
TInt aResult,
MSmbMusicAPMainPlayerFilterSyncServerProcessResponse& aResponse)
{
#ifdef __DEBUG_LOG_MAINPLAYER__
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 50;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::RequestComplete() iState:%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState);
#endif
if(EDispRequestResizeImage == aKind)
{
if(KErrNone == aResult)
{
RPointerArray<TSmbMusicAPLibImageBitmap>& array = aResponse.GetResultThumbnailArray();
if(0 < array.Count())
{
iMainResizeBitmap = array[0]->iMainBitmap;
array[0]->iMainBitmap = NULL;
iMaskResizeBitmap = array[0]->iMaskedBitmap;
array[0]->iMaskedBitmap = NULL;
iEvent = EFilterProcessMakeThumbnailEventSyncServerComplete;
}
else
{
iResult = KErrGeneral;
iEvent = EFilterProcessMakeThumbnailEventSyncServerErr;
}
}
else
{
iResult = aResult;
iEvent = EFilterProcessMakeThumbnailEventSyncServerErr;
}
DoSequence();
}
else
{
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 51;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::RequestComplete() Unknown Event :%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, aKind);
}
}
/**
* 梫媮僉儍儞僙儖
*
* @param[in] aKind 梫媮庬暿
* @param[in] aResponse 墳摎僋儔僗偺嶲徠乮忣曬庢摼梡乯
*/
void CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::RequestCancel( TSmbMusicAPMainPlayerRequest aKind,
MSmbMusicAPMainPlayerFilterSyncServerProcessResponse& /*aResponse*/)
{
#ifdef __DEBUG_LOG_MAINPLAYER__
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 60;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::RequestCancel() iState:%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState);
#endif
if(EDispRequestResizeImage == aKind)
{
iEvent = EFilterProcessMakeThumbnailEventSyncServerCancel;
DoSequence();
}
else
{
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 61;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::RequestCancel() Unknown Event :%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, aKind);
}
}
/**
* 僐儅儞僪張棟傪幚峴偡傞
* @param 側偟
* @return 側偟
*/
void CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::DoSequence()
{
#ifdef __DEBUG_LOG_MAINPLAYER__
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 70;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::DoSequence() iState:%d iEvent:%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState, iEvent);
#endif
switch(iState)
{
case EFilterProcessMakeThumbnailStateWaitStart: // 張棟奐巒懸偪
{
if(EFilterProcessMakeThumbnailEventStart == iEvent)
{
iSyncServer.ResizeImage(iMainBitmap, iMaskBitmap, TSize(KThumbnailWidth, KThumbnailHeight), EOwnerType_Filter, iRequestId, *this);
iState = EFilterProcessMakeThumbnailStateResizeBitmap;
}
else
{
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 71;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::DoSequence() Unmatch Event iState:%d iEvent:%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState, iEvent);
}
}
break;
case EFilterProcessMakeThumbnailStateResizeBitmap: // 夋憸儕僒僀僘拞
{
switch(iEvent)
{
case EFilterProcessMakeThumbnailEventSyncServerComplete:
{
if(NULL != iMainResizeBitmap)
{
TRAPD(error, iResultThumbnail = CGulIcon::NewL(iMainResizeBitmap, iMaskResizeBitmap););
if(KErrNone == error)
{
iMainResizeBitmap = NULL;
iMaskResizeBitmap = NULL;
iResult = KErrNone;
iState = EFilterProcessMakeThumbnailStateEnd;
}
else
{
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 72;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::DoSequence() CGulIcon::NewL Leave %d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, error);
iResult = KErrGeneral;
iState = EFilterProcessMakeThumbnailStateErr;
}
}
else
{
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 73;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::DoSequence() iMainBitmap is Null");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt);
iResult = KErrGeneral;
iState = EFilterProcessMakeThumbnailStateErr;
}
NextState();
}
break;
case EFilterProcessMakeThumbnailEventSyncServerCancel:
{
iResult = KErrCancel;
iState = EFilterProcessMakeThumbnailStateErr;
NextState();
}
break;
case EFilterProcessMakeThumbnailEventSyncServerErr:
{
iState = EFilterProcessMakeThumbnailStateErr;
NextState();
}
break;
default:
{
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 74;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::DoSequence() Unmatch Event iState:%d iEvent:%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState, iEvent);
}
break;
}
}
break;
case EFilterProcessMakeThumbnailStateIdle: // 枹張棟
case EFilterProcessMakeThumbnailStateEnd: // 張棟廔椆
case EFilterProcessMakeThumbnailStateErr: // 僄儔乕廔椆
default:
{
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 75;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::DoSequence() Invaild State iState:%d iEvent:%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState, iEvent);
}
break;
}
}
/**
* 偡傋偰偺僐儅儞僪幚峴偑廔傢偭偨偐偳偆偐妋擣偡傞
* @param 側偟
* @return 廔椆敾掕(ETrue:姰椆嵪 EFalse丗枹姰椆)
*/
TBool CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::IsSequenceFinished()
{
#ifdef __DEBUG_LOG_MAINPLAYER__
TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessMakeThumbnail | 80;
_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessMakeThumbnail::IsSequenceFinished() iState:%d");
SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState);
#endif
TBool finish = EFalse;
switch(iState)
{
case EFilterProcessMakeThumbnailStateEnd:
case EFilterProcessMakeThumbnailStateErr:
finish = ETrue;
break;
default:
break;
}
return finish;
}
SEMCJ_NAMESPACE_END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -