smbmusicapmainplayerfilterprocessremoveitems.cpp

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

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

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

USING_NAMESPACE_DCM
SEMCJ_NAMESPACE_BEGIN

/**
 僐儞僗僩儔僋僞
 * @param[in]	aObserver				僆僽僓乕僶偺億僀儞僞
 * @param[in]	aSyncServerController	摨婜僒乕僶惂屼偺嶲徠
 * @return	側偟
 */
CSmbMusicAPMainPlayerFilterProcessRemoveItems::CSmbMusicAPMainPlayerFilterProcessRemoveItems(
																MSmbMusicAPMainPlayerFilterProcessObserver&			aObserver,
																CSmbMusicAPMainPlayerFilterSyncServerController&	aSyncServerController)
	:CSmbMusicAPMainPlayerFilterProcess(aObserver)
	, iEvent(EFilterProcessRemoveItemsEventStart)
	, iState(EFilterProcessRemoveItemsStateIdle)
	, iSyncServer(aSyncServerController)
	{
	}

/**
 僨僗僩儔僋僞
 * @param	側偟
 * @return	側偟
 */
CSmbMusicAPMainPlayerFilterProcessRemoveItems::~CSmbMusicAPMainPlayerFilterProcessRemoveItems()
	{
	if(EFilterProcessRemoveItemsStateRemove == iState)
		{
		iSyncServer.CancelRequest(iRequestId, EFalse);
		}
	}


/**
 * 僷儔儊乕僞愝掕
 * @param[in]	aAllItem		慡審/巜掕僼儔僌
 * @param[in]	aListHandle		儕僗僩僴儞僪儖
 * @param[in]	aCount			嶍彍悢
 * @param[in]	aIndexArray		僀儞僨僢僋僗攝楍
 */
TBool CSmbMusicAPMainPlayerFilterProcessRemoveItems::SetParam( TBool 				aAllItem, 
																TInt 				aListHandle, 
																const RArray<TInt>*	aIndexArray)
	{
	if( EFilterProcessRemoveItemsStateIdle		== iState ||
		EFilterProcessRemoveItemsStateWaitStart	== iState )
		{
		iAllItem		= aAllItem;
		iListHandle		= aListHandle;
		iIndexArray		= aIndexArray;
		//2006.10.10 嶍彍慜偺傾僀僥儉憤悢偲嶍彍梫媮傾僀僥儉悢傪曐帩偟偰偍偔
		iTotalCount		= iSyncServer.GetItemCount(aListHandle);
		if(EFalse!=aAllItem)
			{
			iRequestedCount = iTotalCount;
			}
		else
			{
			iRequestedCount = aIndexArray->Count();
			}
		
		iState = EFilterProcessRemoveItemsStateWaitStart;
		return ETrue;
		}
	else
		{
		return EFalse;
		}
	}

//2006.10.10 嶍彍慜偺傾僀僥儉憤悢
/**
 * 嶍彍梫媮僇僂儞僩傪庢摼偡傞
 * @return				側偟
 */
TInt CSmbMusicAPMainPlayerFilterProcessRemoveItems::GetRequestedCount()
	{
	return iRequestedCount;
	}

//2006.10.10 嶍彍偟偨傾僀僥儉悢
/**
 * 嶍彍傾僀僥儉悢傪庢摼偡傞
 * @return				側偟
 */
TInt CSmbMusicAPMainPlayerFilterProcessRemoveItems::GetRemovedCount()
	{
	TInt count = iSyncServer.GetItemCount(iListHandle);
	return iTotalCount - count;
	}

/**
 * 梫媮姰椆
 *
 * @param[in]		aKind				梫媮庬暿
 * @param[in]		aResult				張棟寢壥
 * @param[in]		aResponse			墳摎僋儔僗偺嶲徠乮忣曬庢摼梡乯
 */
void CSmbMusicAPMainPlayerFilterProcessRemoveItems::RequestComplete(TSmbMusicAPMainPlayerRequest 							aKind, 
																	 TInt 													aResult, 
																	 MSmbMusicAPMainPlayerFilterSyncServerProcessResponse&	/*aResponse*/)
	{
	if(EEditRequestRemoveSongFromPlaylist == aKind
	|| EEditRequestRemoveSongsFromPlaylist == aKind
	|| EEditRequestRemoveAllSongsFromPlaylist == aKind)
		{
		if(KErrNone == aResult)
			{
			iEvent	= EFilterProcessRemoveItemsEventSyncServerComplete;
			}
		else
			{
			iResult	= aResult;
			iEvent	= EFilterProcessRemoveItemsEventSyncServerErr;
			}
		DoSequence();
		}
	else
		{
		}
	}


/**
 * 梫媮僉儍儞僙儖
 *
 * @param[in]		aKind				梫媮庬暿
 * @param[in]		aResponse			墳摎僋儔僗偺嶲徠乮忣曬庢摼梡乯
 */
void CSmbMusicAPMainPlayerFilterProcessRemoveItems::RequestCancel( TSmbMusicAPMainPlayerRequest 							aKind, 
																	MSmbMusicAPMainPlayerFilterSyncServerProcessResponse&	/*aResponse*/)
	{
	if(EEditRequestRemoveSongFromPlaylist == aKind
	|| EEditRequestRemoveSongsFromPlaylist == aKind
	|| EEditRequestRemoveAllSongsFromPlaylist == aKind)
		{
		iEvent = EFilterProcessRemoveItemsEventSyncServerCancel;
		DoSequence();
		}
	else
		{
		}
	}

/**
 * 嶍彍張棟傪僉儍儞僙儖偡傞乮摨婜乯
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPMainPlayerFilterProcessRemoveItems::CancelRemoveItems()
	{
	if(EFilterProcessRemoveItemsStateRemove == iState)
		{
		iSyncServer.CancelRequest(iRequestId, EFalse);
		}
	iEvent = EFilterProcessRemoveItemsEventSyncServerCancel;
	DoSequence();
	}

/**
 * 僐儅儞僪張棟傪幚峴偡傞
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPMainPlayerFilterProcessRemoveItems::DoSequence()
	{
	switch(iState)
		{
	case EFilterProcessRemoveItemsStateWaitStart:	// 張棟奐巒懸偪
		{
		if(EFilterProcessRemoveItemsEventStart == iEvent)
			{
			TInt result = iSyncServer.RemoveItemsFromPlaylist(iAllItem, iListHandle, iIndexArray, EOwnerType_Filter, iRequestId, *this);
			if(KErrNone == result)
				{
				iState	= EFilterProcessRemoveItemsStateRemove;
				}
			else
				{
				iResult	= result;
				iState	= EFilterProcessRemoveItemsStateErr;
				NextState();
				}
			}
		else if(EFilterProcessRemoveItemsEventSyncServerCancel == iEvent)
			{
			iResult	= KErrCancel;
			iState	= EFilterProcessRemoveItemsStateErr;
			NextState();
			}
		else
			{
			}
		}
		break;

	case EFilterProcessRemoveItemsStateRemove:	// 傾僀僥儉庢摼拞
		{
		
		switch(iEvent)
			{
		
		case EFilterProcessRemoveItemsEventSyncServerComplete:
			{
			iResult	= KErrNone;
			iState	= EFilterProcessRemoveItemsStateEnd;
			NextState();
			}
			break;
			
		case EFilterProcessRemoveItemsEventSyncServerCancel:
			{
			iResult	= KErrCancel;
			iState	= EFilterProcessRemoveItemsStateErr;
			NextState();
			}
			break;

		case EFilterProcessRemoveItemsEventSyncServerErr:
			{
			iState	= EFilterProcessRemoveItemsStateErr;
			NextState();
			}
			break;

		default:
			{
			}
			break;
			}
		}
		break;

	case EFilterProcessRemoveItemsStateIdle:		// 枹張棟
	case EFilterProcessRemoveItemsStateEnd:			// 張棟廔椆
	case EFilterProcessRemoveItemsStateErr:			// 僄儔乕廔椆
	default:
		{
		}
		break;
		}
	}

/**
 * 偡傋偰偺僐儅儞僪幚峴偑廔傢偭偨偐偳偆偐妋擣偡傞
 * @param	側偟
 * @return	廔椆敾掕(ETrue:姰椆嵪 EFalse丗枹姰椆)
 */
TBool CSmbMusicAPMainPlayerFilterProcessRemoveItems::IsSequenceFinished()
	{
	TBool finish = EFalse;

	switch(iState)
		{
	case EFilterProcessRemoveItemsStateEnd:
	case EFilterProcessRemoveItemsStateErr:
		finish = ETrue;
		break;

	default:
		break;
		}
	
	return finish;
	}


SEMCJ_NAMESPACE_END

⌨️ 快捷键说明

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