⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbmusicapmainplayerfilterprocessgetlistitems.cpp

📁 symbian
💻 CPP
字号:
/* Copyright (C) 2005-2007 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPMainPlayerFilterProcessGetListItems.cpp
//
// Description:
//	儈儏乕僕僢僋儊僀儞僾儗僀儎
//	傾僀僥儉忣曬庢摼張棟僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅				|曄峏幰			|撪梕
//---------------------------------------------------------------------------
//2006/08/14		|SDNA壀嶳		|怴婯嶌惉
//2006/08/17		|SDNA嶳壀		|GetListItems偺RequestComplete帪偺aResult偼傾僀僥儉悢

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

USING_NAMESPACE_DCM
SEMCJ_NAMESPACE_BEGIN

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

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

	if(EFilterProcessGetListItemsStateGetItems == iState)
		{
		iSyncServer.CancelRequest(iRequestId, EFalse);
		}

	iItems.Close();
	}


/**
 僷儔儊乕僞愝掕
 * @param[in]	aListHandle		儕僗僩僴儞僪儖
 * @param[in]	aTopIndex		愭摢偺僀儞僨僢僋僗
 * @param[in]	aCount			庢摼傾僀僥儉悢
 * @return						愝掕偺惉斲
 */
TBool CSmbMusicAPMainPlayerFilterProcessGetListItems::SetParam(TInt aListHandle, TInt aTopIndex, TInt aCount)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetListItems | 20;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetListItems::SetParam(aListHandle:0x%08x,aTopIndex:%d,aCount:%d )");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, aListHandle, aTopIndex, aCount);
#endif
	
	if( EFilterProcessGetListItemsStateIdle			== iState ||
		EFilterProcessGetListItemsStateWaitStart	== iState )
		{
		iListHandle	= aListHandle;
		iTopIndex	= aTopIndex;
		iCount		= aCount;
		
		iState = EFilterProcessGetListItemsStateWaitStart;

		return ETrue;
		}
	else
		{
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetListItems | 21;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetListItems::SetParam() Cannot Set in This State %d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState);
		return EFalse;
		}
	}

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

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

/**
 傾僀僥儉悢傪庢摼
 * @param	側偟
 * @return	傾僀僥儉悢
 */
TInt CSmbMusicAPMainPlayerFilterProcessGetListItems::GetParamCount()
	{
	return iCount;
	}

/**
 傾僀僥儉忣曬庢摼
 * @param[out]	aItems			傾僀僥儉忣曬 奿擺応強偺嶲徠
 * @return						庢摼偺惉斲乮張棟偑廔椆偟偰偄傞偐偳偆偐乯
 */
TBool CSmbMusicAPMainPlayerFilterProcessGetListItems::GetItems(RArray<TSmbMusicAPSyncEngineListItemInfo>& aItems)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetListItems | 30;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetListItems::GetItems() iState:%d");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, iState);
#endif
	
	if(EFilterProcessGetListItemsStateEnd == iState)
		{
		aItems.Reset();

		TInt count = iItems.Count();
		for(TInt i=0; i<count; i++)
			{
			TInt error = aItems.Append(iItems[i]);
			if(KErrNone != error)
				{
				TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetListItems | 31;
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetListItems::GetItems() Append Err %d");
				SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHighest, KLogFmt, error);
				PANIC(9100007);
				}
			}
		
		return ETrue;
		}
	else
		{
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetListItems | 32;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetListItems::GetItems() Process Not Complete %d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState);

		return EFalse;
		}
	}


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

	if(ESearchRequestGetListItems == aKind)
		{
//-->2006.08.17 嶳壀 GetListItems偺aResult偼傾僀僥儉悢偲偄偆巇條
//		if(KErrNone == aResult)
		if(0<aResult)
//<--
			{
			iItems.Reset();

			CArrayFixFlat<TSmbMusicAPSyncEngineListItemInfo>& items = aResponse.GetResultItemInfoArray();
			
//-->2006.08.17 嶳壀 GetListItems偺aResult偼傾僀僥儉悢偲偄偆巇條
//			TInt count = items.Count();
			TInt count = aResult;
//<--
			for(TInt i=0; i<count; i++ )
				{
				TInt error = iItems.Append(items[i]);
				if(KErrNone != error)
					{
					TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetListItems | 41;
					_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetListItems::RequestComplete() Append Err %d");
					SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHighest, KLogFmt, error);
					PANIC(9100008);
					}
				}
			
			iEvent	= EFilterProcessGetListItemsEventSyncServerComplete;
			}
		else
			{
			iResult	= aResult;
			iEvent	= EFilterProcessGetListItemsEventSyncServerErr;
			}

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


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

	if(ESearchRequestGetListItems == aKind)
		{
		iEvent = EFilterProcessGetListItemsEventSyncServerCancel;
		DoSequence();
		}
	else
		{
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetListItems | 51;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetListItems::RequestCancel() Unknown Event :%d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, aKind);
		}
	}



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

	switch(iState)
		{
	case EFilterProcessGetListItemsStateWaitStart:	// 張棟奐巒懸偪
		{
		if(EFilterProcessGetListItemsEventStart == iEvent)
			{
			TInt result = iSyncServer.GetListItemsFromList(iListHandle,iTopIndex,iCount, EOwnerType_Filter, iRequestId, *this);

			if(KErrNone == result)
				{
				iState	= EFilterProcessGetListItemsStateGetItems;
				}
			else
				{
				TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetListItems | 61;
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetListItems::DoSequence() GetListItemsFromList() Error :%d");
				SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, result);

				iResult	= result;
				iState	= EFilterProcessGetListItemsStateErr;
				NextState();
				}
			}
		else
			{
			TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetListItems | 62;
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetListItems::DoSequence() Unmatch Event iState:%d iEvent:%d");
			SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState, iEvent);
			}
		}
		break;

	case EFilterProcessGetListItemsStateGetItems:	// 傾僀僥儉庢摼拞
		{
		
		switch(iEvent)
			{
		
		case EFilterProcessGetListItemsEventSyncServerComplete:
			{
			iResult	= KErrNone;
			iState	= EFilterProcessGetListItemsStateEnd;
			NextState();
			}
			break;
			
		case EFilterProcessGetListItemsEventSyncServerCancel:
			{
			iResult	= KErrCancel;
			iState	= EFilterProcessGetListItemsStateErr;
			NextState();
			}
			break;

		case EFilterProcessGetListItemsEventSyncServerErr:
			{
			iState	= EFilterProcessGetListItemsStateErr;
			NextState();
			}
			break;

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

	case EFilterProcessGetListItemsStateIdle:		// 枹張棟
	case EFilterProcessGetListItemsStateEnd:		// 張棟廔椆
	case EFilterProcessGetListItemsStateErr:		// 僄儔乕廔椆
	default:
		{
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterProcessGetListItems | 64;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterProcessGetListItems::DoSequence() Invaild State iState:%d iEvent:%d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelHigh, KLogFmt, iState, iEvent);
		}
		break;
		}
	}

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

	TBool finish = EFalse;

	switch(iState)
		{
	case EFilterProcessGetListItemsStateEnd:
	case EFilterProcessGetListItemsStateErr:
		finish = ETrue;
		break;

	default:
		break;
		}
	
	return finish;
	}


SEMCJ_NAMESPACE_END

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

⌨️ 快捷键说明

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