smbmusicapmainplayerfilterprocessgetthumbnail.cpp

来自「symbian」· C++ 代码 · 共 427 行

CPP
427
字号
/* Copyright (C) 2005-2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPMainPlayerFilterProcessGetThumbnail.cpp
//
// Description:
//	儈儏乕僕僢僋儊僀儞僾儗僀儎
//	僒儉僱僀儖庢摼張棟僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅				|曄峏幰			|撪梕
//---------------------------------------------------------------------------
//2006/08/14		|SDNA壀嶳		|怴婯嶌惉

#include <FjAfEnv.h>
#include "SmbMusicAPMainPlayerUtility.h"
#include "SmbMusicAPMainPlayerFilterProcessGetThumbnail.h"


USING_NAMESPACE_DCM
SEMCJ_NAMESPACE_BEGIN

/**
 僐儞僗僩儔僋僞
 * @param[in]	aObserver				僆僽僓乕僶偺億僀儞僞
 * @param[in]	aSyncServerController	摨婜僒乕僶惂屼偺嶲徠
 * @return								側偟
 */
CSmbMusicAPMainPlayerFilterProcessGetThumbnail::CSmbMusicAPMainPlayerFilterProcessGetThumbnail( 
													MSmbMusicAPMainPlayerFilterProcessObserver&			aObserver,
													CSmbMusicAPMainPlayerFilterSyncServerController&	aSyncServerController)
	:CSmbMusicAPMainPlayerFilterProcess(aObserver)
	, iEvent(EFilterProcessGetThumbnailEventStart)
	, iState(EFilterProcessGetThumbnailStateIdle)
	, iSyncServer(aSyncServerController)
	, iLog(CAfEnv::Static()->Log())
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 00;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::CSmbMusicAPMainPlayerFilterProcessGetThumbnail()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	}

/**
 僨僗僩儔僋僞
 * @param	側偟
 * @return	側偟
 */
CSmbMusicAPMainPlayerFilterProcessGetThumbnail::~CSmbMusicAPMainPlayerFilterProcessGetThumbnail()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 10;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::~CSmbMusicAPMainPlayerFilterProcessGetThumbnail()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	Reset();
	}

/**
 儕僙僢僩
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPMainPlayerFilterProcessGetThumbnail::Reset()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 20;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::Reset()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	if(EFilterProcessGetThumbnailStateMakeThumbnail == iState)
		{
		iSyncServer.CancelRequest(iRequestId, EFalse);
		}
	
	iEvent = EFilterProcessGetThumbnailEventStart;
	iState = EFilterProcessGetThumbnailStateIdle;
	iListHandle	= NULL;
	iIndex		= NULL;

	delete iMainBitmap;
	iMainBitmap	= NULL;

	delete iMaskBitmap;
	iMaskBitmap	= NULL;

	delete iResultThumbnail;
	iResultThumbnail = NULL;
	
	CSmbMusicAPMainPlayerFilterProcess::Reset();
	}

/**
 僷儔儊乕僞愝掕
 * @param[in]	aListHandle		儕僗僩僴儞僪儖
 * @param[in]	aIndex			僀儞僨僢僋僗
 * @return						愝掕偺惉斲
 */
TBool CSmbMusicAPMainPlayerFilterProcessGetThumbnail::SetParam(TInt aListHandle, TInt aIndex)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 30;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::SetParam()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	if( EFilterProcessGetThumbnailStateIdle			== iState ||
		EFilterProcessGetThumbnailStateWaitStart	== iState)
		{
		iListHandle	= aListHandle;
		iIndex		= aIndex;
		iState	= EFilterProcessGetThumbnailStateWaitStart;
		return ETrue;
		}
	else
		{
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 31;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::SetParam() Cannot Set in This State %d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState);
		return EFalse;
		}
	}

/**
 儕僗僩僴儞僪儖庢摼
 * @param	側偟
 * @return	儕僗僩僴儞僪儖
 */
TInt CSmbMusicAPMainPlayerFilterProcessGetThumbnail::GetParamListHandle()
	{
	return iListHandle;
	}

/**
 愭摢僀儞僨僢僋僗庢摼
 * @param	側偟
 * @return	僀儞僨僢僋僗
 */
TInt CSmbMusicAPMainPlayerFilterProcessGetThumbnail::GetParamIndex()
	{
	return iIndex;
	}

/**
 僒儉僱僀儖傾僀僐儞庢摼
 * @param[out]	aIcon			僒儉僱僀儖傾僀僐儞 奿擺応強偺嶲徠
 * @return						庢摼偺惉斲乮張棟偑廔椆偟偰偄傞偐偳偆偐乯
 */
TBool CSmbMusicAPMainPlayerFilterProcessGetThumbnail::GetThumbnailIcon(CGulIcon*& aIcon)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 40;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::GetThumbnailBitmap() iState:%d");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState);
#endif

	if(EFilterProcessGetThumbnailStateEnd == iState)
		{
		aIcon			 = iResultThumbnail;
		iResultThumbnail = NULL;

		return ETrue;
		}
	else
		{
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 41;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::GetThumbnailBitmap() Process Not Complete %d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState);

		return EFalse;
		}
	}

/**
 * 梫媮姰椆
 *
 * @param[in]		aKind				梫媮庬暿
 * @param[in]		aResult				張棟寢壥
 * @param[in]		aResponse			墳摎僋儔僗偺嶲徠乮忣曬庢摼梡乯
 */
void CSmbMusicAPMainPlayerFilterProcessGetThumbnail::RequestComplete(TSmbMusicAPMainPlayerRequest 							aKind, 
																	 TInt 													aResult, 
																	 MSmbMusicAPMainPlayerFilterSyncServerProcessResponse&	aResponse)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 50;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::RequestComplete() iState:%d");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState);
#endif

	if(EDispRequestGetPlayThumbnailImage == aKind)
		{
		if(KErrNone == aResult)
			{
			RPointerArray<TSmbMusicAPLibImageBitmap>& array = aResponse.GetResultThumbnailArray();
			
			if(0 < array.Count())
				{
				iMainBitmap	= array[0]->iMainBitmap;
				array[0]->iMainBitmap		= NULL;

				iMaskBitmap	= array[0]->iMaskedBitmap;
				array[0]->iMaskedBitmap		= NULL;

				iEvent	= EFilterProcessGetThumbnailEventSyncServerComplete;
				}
			else
				{
				iResult	= KErrGeneral;
				iEvent	= EFilterProcessGetThumbnailEventSyncServerErr;
				}
			}
		else
			{
			iResult	= aResult;
			iEvent	= EFilterProcessGetThumbnailEventSyncServerErr;
			}

		DoSequence();
		}
	else
		{
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 51;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::RequestComplete() Unknown Event :%d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, aKind);
		}
	}


/**
 * 梫媮僉儍儞僙儖
 *
 * @param[in]		aKind				梫媮庬暿
 * @param[in]		aResponse			墳摎僋儔僗偺嶲徠乮忣曬庢摼梡乯
 */
void CSmbMusicAPMainPlayerFilterProcessGetThumbnail::RequestCancel( TSmbMusicAPMainPlayerRequest 							aKind, 
																	MSmbMusicAPMainPlayerFilterSyncServerProcessResponse&	/*aResponse*/)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 60;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::RequestCancel() iState:%d");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState);
#endif

	if(EDispRequestGetPlayThumbnailImage == aKind)
		{
		iEvent = EFilterProcessGetThumbnailEventSyncServerCancel;
		DoSequence();
		}
	else
		{
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 61;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::RequestCancel() Unknown Event :%d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, aKind);
		}
	}



/**
 * 僐儅儞僪張棟傪幚峴偡傞
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPMainPlayerFilterProcessGetThumbnail::DoSequence()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 70;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::DoSequence() iState:%d iEvent:%d");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState, iEvent);
#endif

	switch(iState)
		{
	case EFilterProcessGetThumbnailStateWaitStart:	// 張棟奐巒懸偪
		{
		if(EFilterProcessGetThumbnailEventStart == iEvent)
			{
			TInt result = iSyncServer.GetThumbnail(iListHandle,iIndex, EOwnerType_Filter, iRequestId, *this);

			if(KErrNone == result)
				{
				iState	= EFilterProcessGetThumbnailStateMakeThumbnail;
				}
			else
				{
				TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 71;
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::DoSequence() GetThumbnail() Error :%d");
				SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, result);

				iResult	= result;
				iState	= EFilterProcessGetThumbnailStateErr;
				NextState();
				}
			}
		else
			{
			TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 72;
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::DoSequence() Unmatch Event iState:%d iEvent:%d");
			SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState, iEvent);
			}
		}
		break;

	case EFilterProcessGetThumbnailStateMakeThumbnail:	// 夋憸庢摼拞
		{
		
		switch(iEvent)
			{
		
		case EFilterProcessGetThumbnailEventSyncServerComplete:
			{
			if(NULL != iMainBitmap)
				{
				TRAPD(error, iResultThumbnail = CGulIcon::NewL(iMainBitmap, iMaskBitmap););
				if(KErrNone == error)
					{
					iMainBitmap	= NULL;
					iMaskBitmap	= NULL;
					
					iResult	= KErrNone;
					iState	= EFilterProcessGetThumbnailStateEnd;
					}
				else
					{
					TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 73;
					_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::DoSequence() CGulIcon::NewL Leave %d");
					SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, error);

					iResult	= KErrGeneral;
					iState	= EFilterProcessGetThumbnailStateErr;
					}
				}
			else
				{
				TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 74;
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::DoSequence() iMainBitmap is Null");
				SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt);

				iResult	= KErrGeneral;
				iState	= EFilterProcessGetThumbnailStateErr;
				}
				
			NextState();
			}
			break;
			
		case EFilterProcessGetThumbnailEventSyncServerCancel:
			{
			// 僉儍儞僙儖偝傟偨応崌偼丄嵞庢摼傪峴偆
			iEvent = EFilterProcessGetThumbnailEventStart;
			iState = EFilterProcessGetThumbnailStateWaitStart;
			NextState();
			}
			break;

		case EFilterProcessGetThumbnailEventSyncServerErr:
			{
			iState	= EFilterProcessGetThumbnailStateErr;
			NextState();
			}
			break;

		default:
			{
			TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 75;
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::DoSequence() Unmatch Event iState:%d iEvent:%d");
			SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState, iEvent);
			}
			break;
			}
		}
		break;

	case EFilterProcessGetThumbnailStateIdle:		// 枹張棟
	case EFilterProcessGetThumbnailStateEnd:		// 張棟廔椆
	case EFilterProcessGetThumbnailStateErr:		// 僄儔乕廔椆
	default:
		{
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 76;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::DoSequence() Invaild State iState:%d iEvent:%d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState, iEvent);
		}
		break;
		}
	}

/**
 * 偡傋偰偺僐儅儞僪幚峴偑廔傢偭偨偐偳偆偐妋擣偡傞
 * @param	側偟
 * @return	廔椆敾掕(ETrue:姰椆嵪 EFalse丗枹姰椆)
 */
TBool CSmbMusicAPMainPlayerFilterProcessGetThumbnail::IsSequenceFinished()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetThumbnail | 80;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetThumbnail::IsSequenceFinished() iState:%d");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState);
#endif

	TBool finish = EFalse;

	switch(iState)
		{
	case EFilterProcessGetThumbnailStateEnd:
	case EFilterProcessGetThumbnailStateErr:
		finish = ETrue;
		break;

	default:
		break;
		}
	
	return finish;
	}


SEMCJ_NAMESPACE_END




⌨️ 快捷键说明

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