smbmusicapmainplayerfilterprocess.cpp

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

CPP
332
字号
/* Copyright (C) 2006-2007 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPMainPlayerFilterProcess.cpp
//
// Description:
//	儈儏乕僕僢僋儊僀儞僾儗僀儎
//	僼傿儖僞夋柺價儏乕 僔乕働儞僗張棟拪徾僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅				|曄峏幰			|撪梕
//---------------------------------------------------------------------------
//2006/08/??		|SEMCJ嶳壀		|怴婯嶌惉
//2006/08/11		|SDNA壀嶳		|張棟傪娙棯壔
//2006/09/08		|SDNA壀嶳		|楢懕偱AO傪Complete偟偰偟傑偆晄嬶崌傪廋惓(TRK7988懳墳)

#include <FjAfEnv.h>

#include "SmbMusicAPMainPlayerUtility.h"
#include "SmbMusicAPMainPlayerFilterProcess.h"


USING_NAMESPACE_DCM
SEMCJ_NAMESPACE_BEGIN


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

	//傾僋僥傿僽僗働僕儏乕儔偵搊榐偡傞
	CActiveScheduler::Add(this);
	}

/**
 * 僨僗僩儔僋僞
 * @param	側偟
 * @return	側偟
 */
CSmbMusicAPMainPlayerFilterProcess::~CSmbMusicAPMainPlayerFilterProcess()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 10;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::~CSmbMusicAPMainPlayerFilterProcess()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif
	//傾僋僥傿僽僆僽僕僃僋僩傪僉儍儞僙儖偡傞
	Cancel();
	
	if(NULL!=iClientStatus)
		{
		//僋儔僀傾儞僩偺傾僋僥傿僽僆僽僕僃僋僩偵姰椆傪捠抦偡傞
		User::RequestComplete(iClientStatus, KErrCancel);
		iClientStatus = NULL;
		}
	}

/**
 * 傾僋僥傿僽僆僽僕僃僋僩偺RunL娭悢傪幚憰偡傞
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPMainPlayerFilterProcess::RunL()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 20;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::RunL()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif
	switch(iState)
		{
		// 梫媮拞忬懺
		case EStateRequesting:
			{
			// 師偺僐儅儞僪偑側偗傟偽姰椆忬懺偵慗堏偡傞
			if(EFalse!=IsSequenceFinished())
				{
				iState = EStateCompleted;

				// 幚峴姰椆張棟傪偡傞
				if(NULL!=iClientStatus)
					{
					TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 21;
					_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::RunL() - User::RequestComplete");
					SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);

					User::RequestComplete(iClientStatus,iResult);
					iClientStatus = NULL;
					}

				//偡傋偰偺僐儅儞僪幚峴傪姰椆偡傞
				FinishSequence();
				}
			// 師偺僐儅儞僪偑偁傟偽幚峴梫媮偡傞
			else
				{
				// 師偺僐儅儞僪傪幚峴偡傞
				DoSequence();
				}
			}
			break;

		// 傾僀僪儕儞僌忬懺
		case EStateIdling:
		// 姰椆忬懺
		case EStateCompleted:
		// 晄柧側忬懺
		default:
			{
			TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 22;
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::RunL() Unknown State %d");
			SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt,iState);
			break;
			}
		}
	}

/**
 * 傾僋僥傿僽僆僽僕僃僋僩偺僉儍儞僙儖張棟傪峴偆
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPMainPlayerFilterProcess::DoCancel()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 30;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::DoCancel()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	// 壗傕偟側偄両両 
	// 偙偙偱張棟傪峴偆偲丄攈惗僋儔僗偺僔乕働儞僗張棟偑攋抅偡傞壜擻惈偑偁傝傑偡丅
	}

/**
* 斈梡僐儅儞僪幚峴
* @return	側偟
*/
void CSmbMusicAPMainPlayerFilterProcess::StartProcess()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 40;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::StartProcess()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	if(EStateIdling == iState)
		{
		iState = EStateRequesting;

		//僐儅儞僪幚峴拞偱偁傟偽僉儍儞僙儖偡傞
		Cancel();
		//張棟奐巒
		CompleteSelf();
		}
	else
		{
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 41;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::StartProcess() Invalid State %d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState);
		}
	}

/**
 * 斈梡僐儅儞僪幚峴
 * @param [in,out]	aStatus	旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗	
 * @return	側偟
 */
void CSmbMusicAPMainPlayerFilterProcess::StartProcess(TRequestStatus* aStatus)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 50;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::StartProcess()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	if(EStateIdling == iState)
		{
		iState = EStateRequesting;

		//僐儅儞僪幚峴拞偱偁傟偽僉儍儞僙儖偡傞
		Cancel();
		//張棟奐巒
		CompleteSelf();

		//梫媮尦傾僋僥傿僽僆僽僕僃僋僩偺梫媮傪Pending偡傞
		iClientStatus = aStatus;
		if(NULL!=iClientStatus)
			{
			*iClientStatus = KRequestPending;
			}
		}
	else
		{
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 51;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::StartProcess() Invalid State %d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState);
		}
	}

/**
* 僾儘僙僗偺僉儍儞僙儖
* @return	僉儍儞僙儖偺惉斲(ETrue:僉儍儞僙儖張棟幚巤 EFalse:僉儍儞僙儖枹懳墳)
*/
TBool CSmbMusicAPMainPlayerFilterProcess::CancelProcess()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 60;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::CancelProcess()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif
	
	return CancelSequence();
	}

/**
* 僾儘僙僗幚峴拞偐偳偆偐偺庢摼
* @param	側偟
* @return	幚峴忬懺乮ETrue:幚峴拞丄EFalse:枹幚峴乯
*/
TBool CSmbMusicAPMainPlayerFilterProcess::InService()
	{
	if(EStateIdling == iState || EStateCompleted == iState)
		{
		return EFalse;
		}
	else
		{
		return ETrue;
		}
	}

/**
 * 撪晹忬懺傪儕僙僢僩偡傞
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPMainPlayerFilterProcess::Reset()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 70;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::Reset()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	Cancel();
	
	iState	= EStateIdling;
	iResult	= KErrNone;
	}

/**
 * 傾僋僥傿僽僆僽僕僃僋僩偺忬懺慗堏傪峴偆
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPMainPlayerFilterProcess::NextState()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 80;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::NextState()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	//傾僋僥傿僽僆僽僕僃僋僩傪嵞搙傾僋僥傿僽偵偡傞
	if(EFalse==IsActive())	// 偡偱偵Active側応崌偵SetActive傪偡傞偲PANIC
		{
		// 師偺忬懺偵慗堏偡傞
		CompleteSelf();
		}
	}

/**
 * 傾僋僥傿僽僆僽僕僃僋僩帺恎傪姰椆偟偰嵞搙傾僋僥傿僽偵偡傞
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPMainPlayerFilterProcess::CompleteSelf()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess | 90;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::CompleteSelf()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	//傾僋僥傿僽僆僽僕僃僋僩傪傾僋僥傿僽偵偡傞
	SetActive();

	//傾僋僥傿僽僆僽僕僃僋僩帺恎偺梫媮傪姰椆偡傞
	TRequestStatus* status = &iStatus;
	User::RequestComplete(status, KErrNone);
	}

/**
 * 偡傋偰偺僐儅儞僪幚峴傪姰椆偡傞
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPMainPlayerFilterProcess::FinishSequence()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcess |100;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcess::FinishSequence()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif
	
	// 僆僽僓乕僶偵幚峴姰椆傪捠抦偡傞
	iObserver.ProcessComplete(iResult, *this);
	}



SEMCJ_NAMESPACE_END

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

⌨️ 快捷键说明

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