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

📄 smbmusicapsyncservercontentsservicegetitemfromlist.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPSyncServerContentsServiceGetItemFromList.cpp
//
// Description:
//	PTX810 Music傾僾儕 摨婜僒乕僶 僐儞僥儞僣僋儔僗
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅			|曄峏幰			|撪梕
//--------------+---------------+--------------------------------------
//2006/06/15	|SDNA 壀嶳		| 怴婯嶌惉
//2006/08/03	|SDNA 壀嶳		| 墳摎梡偺傾僀僥儉忣曬偺庢摼張棟傪曄峏
//2006/09/22	|K3悪杮			| 儘僌捛壛
//2006/10/13	|K3悪杮			| [iKeeper(TRK):9001]  SS偵傛傞枹擖椡崁栚懳墳
//----PTX824----+---------------+--------------------------------------
//2007/03/30	|K3悪杮			| PTX824懳墳(嵞惗惂尷忣曬晅壛)
//2007/04/24	|K3悪杮			| WMA(MTP)僾儗僀儕僗僩懳墳
//2007/06/29	|K3悪杮			| 婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
//2007/07/06	|K3悪杮			| 尃棙忣曬偺側偄嬋偺僌儗乕傾僂僩懳墳


#ifndef __SMBMUSICAPSYNCSERVERCONTENTSSERVICEGETITEMFROMLIST_H__
#include "SmbMusicAPSyncServerContentsServiceGetItemFromList.h"
#endif

#ifndef __SMBMUSICAPSYNCSERVERUTIL_H__
#include "SmbMusicAPSyncServerUtil.h"
#endif

#ifndef __SMBMUSICAPSYNCSERVERCONTENTSFUNC_H__
#include "SmbMusicAPSyncServerContentsFunc.h"
#endif	//  __SMBMUSICAPSYNCSERVERCONTENTSFUNC_H__

#ifndef __SMBMUSICAPSYNCSERVERCONTENTSLIST_H__
#include "SmbMusicAPSyncServerContentsList.h"
#endif

#ifndef __SMBMUSICAPSYNCSERVERCONTENTSITEM_H__
#include "SmbMusicAPSyncServerContentsItem.h"
#endif

//  ADD-S PTX824 k3-sugimoto
#ifndef	__SMBMUSICAPSYNCSERVERCONVERTER_H__
#include "SmbMusicAPSyncServerConverter.h"
#endif	//  __SMBMUSICAPSYNCSERVERCONVERTER_H__
//  ADD-E PTX824 k3-sugimoto


USING_NAMESPACE_SEMCJ

/**
 *  僐儞僗僩儔僋僞
 *  @param [in]		aRlog				RLog偺嶲徠
 *  @param [in]		aModel				儌僨儖僋儔僗偺嶲徠
 *  @param [in]		aObserver			僒乕價僗姰椆捠抦愭僋儔僗偺嶲徠
 *  @param [in]		aFunc				僐儞僥儞僣僼傽儞僋儔僗偺嶲徠
 *  @param [in]		aManagerInterface	奺儅僱乕僕儍傪娗棟偡傞僋儔僗偺嶲徠
 *  @param [in]		aScreenData			夋柺慗堏僨乕僞娗棟僋儔僗偺嶲徠
 *  @param [in,out]	aRMessage			RMessage偺億僀儞僞
 **/
CSmbMusicAPSyncServerContentsServiceGetItemFromList::CSmbMusicAPSyncServerContentsServiceGetItemFromList(
		DCM_NAMESPACE::RLog& 								aRlog,
		CSmbMusicAPSyncServerModel&							aModel,
		MSmbMusicAPSyncServerContentsAsyncObserver& 		aObserver,
		CSmbMusicAPSyncServerContentsFunc&					aFunc,
		MSmbMusicAPSyncServerContentsManagerInterface&		aManagerInterface,
		CSmbMusicAPSyncServerContentsScreenTraceManager&	aScreenData,
		const RMessage2&									aRMessage
		)
	:CSmbMusicAPSyncServerContentsServiceBase(aRlog, aModel, aObserver, aFunc, aManagerInterface, aScreenData, aRMessage),
	 iServiceState(ESmbMusicAPSyncServerContentsServiceGetItemFromListState_Init)
	{
	}


/**
 *  僨僗僩儔僋僞
 **/
CSmbMusicAPSyncServerContentsServiceGetItemFromList::~CSmbMusicAPSyncServerContentsServiceGetItemFromList()
	{
	if (IsActive() != EFalse)
		{
		CancelService();
		}
	// 擮偺偨傔丄僉儍儞僙儖偵偰Complete偡傞
	CompleteErr(KErrCancel);

	ClearLimitationArray();
	iLimitationArray.Close();

	delete iTempItemArray;
	delete iTempItem;
	}


/**
 *  僒乕價僗傪奐巒偡傞
 *  @return	僒乕價僗張棟忬懺
 **/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetItemFromList::StartServiceL()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber00;
	_LIT(KContentsServiceGetItemFromList00, "SyncServerContentsServiceGetItemFromList::StartServiceL() ");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLowest, KContentsServiceGetItemFromList00);
#endif

	if (ESmbMusicAPSyncServerContentsServiceGetItemFromListState_Init == iServiceState)
		{
		// 僷儔儊乕僞傪撉傒崬傓
		if(EFalse != LoadParam())
			{
			iList = iScreenData.GetList(iParamListHandle);
			if (iList != NULL)
				{
				return CreateItemsL();
				}
			else
				{
				TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber01;
				_LIT(KContentsServiceGetItemFromList01, "SyncServerContentsServiceGetItemFromList::StartServiceL() List Not Found  Handle:0x%08x");
				SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList01, iParamListHandle);

				// 僷儔儊乕僞僄儔乕偵偰姰椆偡傞
				CompleteErr(KErrArgument);
				return ESmbMusicAPSyncServerContetnsServiceStateErr;
				}
			}
		else
			{
			// 僷儔儊乕僞僄儔乕偵偰姰椆偡傞
			CompleteErr(KErrArgument);
			return ESmbMusicAPSyncServerContetnsServiceStateErr;
			}
		}
	else
		{
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber02;
		_LIT(KContentsServiceGetItemFromList02, "SyncServerContentsServiceGetItemFromList::StartServiceL() Invalid State %d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList02, iServiceState);

		// 僒乕價僗幐攕偵偰姰椆偡傞
		CompleteErr();
		return ESmbMusicAPSyncServerContetnsServiceStateErr;
		}
	}


/**
 *  僷儔儊乕僞傪撉傒崬傓
 *  @return	僷儔儊乕僞偺惓忢惈
 **/
TBool CSmbMusicAPSyncServerContentsServiceGetItemFromList::LoadParam()
	{
	// 僷儔儊乕僞僷僢働乕僕傪撉傒崬傓
	TSmbMusicAPSyncServerContentsReqPkg			reqPkg;
	TPckg<TSmbMusicAPSyncServerContentsReqPkg>	pkg(reqPkg);

	TInt err = iRMessage.Read(0,pkg);
	if (KErrNone == err)
		{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber03;
		_LIT(KContentsServiceGetItemFromList03, "SyncServerContentsServiceGetItemFromList::LoadParam() ListHandle:0x%08x Index:%d Count:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLowest, KContentsServiceGetItemFromList03,
								reqPkg.iData.iGetItem.iSearchList.iListHandle,
								reqPkg.iData.iGetItem.iSearchList.iIndex,
								reqPkg.iData.iGetItem.iSearchList.iCount);
#endif
		// 儕僗僩僴儞僪儖偺僷儔儊乕僞僠僃僢僋偼偟側偄
		iParamListHandle = reqPkg.iData.iGetItem.iSearchList.iListHandle;		// 儕僗僩僴儞僪儖(RMessage傛傝庢摼)
		iParamIndex		 = reqPkg.iData.iGetItem.iSearchList.iIndex;			// 僀儞僨僢僋僗(RMessage傛傝庢摼)
		if(0 <= iParamIndex)
			{
			iParamIndex+=1;				// 乮MWLib偱偼Index偑1乣偺偨傔丄0乣偐傜1乣偵曄姺偡傞乯
			}
		else
			{
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber04;
			_LIT(KContentsServiceGetItemFromList04, "SyncServerContentsServiceGetItemFromList::LoadParam() Invalid Index %d");
			SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList04, iParamIndex);

			return EFalse;
			}

		iParamCount = reqPkg.iData.iGetItem.iSearchList.iCount;			// 庢摼傾僀僥儉悢(RMessage傛傝庢摼)
		// 僷儔儊乕僞僠僃僢僋
		if( 0 < iParamCount && iParamCount <= KMaxItemCountByOneTime)
			{
			return ETrue;
			}
		else
			{
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber05;
			_LIT(KContentsServiceGetItemFromList05, "SyncServerContentsServiceGetItemFromList::LoadParam() Invalid Param  Count:%d");
			SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList05, iParamCount);

			return EFalse;
			}
		}
	else
		{
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber06;
		_LIT(KContentsServiceGetItemFromList06, "SyncServerContentsServiceGetItemFromList::LoadParam() Read() Err %d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList06, err);

		return EFalse;
		}
	}


/**
 *  旕摨婜墳摎偐傜僒乕價僗傪宲懕偡傞
 *  @return	僒乕價僗張棟忬懺
 **/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetItemFromList::ContinueServiceL()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber07;
	_LIT(KContentsServiceGetItemFromList07, "SyncServerContentsServiceGetItemFromList::ContinueServiceL() state:%d");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLowest, KContentsServiceGetItemFromList07, iServiceState);
#endif

	TSmbMusicAPSyncServerContentsServiceState result(ESmbMusicAPSyncServerContetnsServiceStateErr);

	switch(iServiceState)
		{
		case ESmbMusicAPSyncServerContentsServiceGetItemFromListState_WaitItem:			// 傾僀僥儉庢摼懸偪忬懺
			{
			result = GetItemInfoL();
			if (result == ESmbMusicAPSyncServerContetnsServiceStateEnd)
				{
//  MODIFY-S  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
#ifndef __SMBMUSICAPSYNCSERVER_DISABLE_SUBSCRIPTIONGRAYOUT__
				if (iLimitationArray.Count() > 0)
					{	//  嵞惗惂尷忣曬庢摼梡攝楍偵傾僀僥儉偑懚嵼偡傞
					//  嵞惗惂尷忣曬庢摼張棟傪奐巒
					result = GetLimitInformation();
					}
				else
#endif	//  __SMBMUSICAPSYNCSERVER_DISABLE_SUBSCRIPTIONGRAYOUT__
					{	//  嵞惗惂尷忣曬庢摼偺昁梫側偟
					Complete();	//  張棟廔椆
					}
//  MODIFY-E  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
				}
			}
			break;
//  ADD-S  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
		case ESmbMusicAPSyncServerContentsServiceGetItemFromListState_WaitLimitation:	// 惂尷忣曬庢摼懸偪忬懺
			{
			result = UpdateSongLimit();
			}
			break;
//  ADD-E  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳

		default:
			{
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber08;
			_LIT(KContentsServiceGetItemFromList08, "SyncServerContentsServiceGetItemFromList::ContinueServiceL() Invalid State %d");
			SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList08, iServiceState);

			// 僒乕價僗幐攕偵偰姰椆偡傞
			CompleteErr();
			break;
			}
		}

	return result;
	}


/**
 *  旕摨婜墳摎僄儔乕偺張棟傪峴偆
 *  @param[in]	aError	僄儔乕僐乕僪
 *  @return	僒乕價僗張棟忬懺
 **/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetItemFromList::ServiceErr(TInt aError)
	{
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber09;
	_LIT(KContentsServiceGetItemFromList09, "SyncServerContentsServiceGetItemFromList::ServiceErr() State:%d Called:%d");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList09, iServiceState, aError);

	if (iServiceState == ESmbMusicAPSyncServerContentsServiceGetItemFromListState_WaitLimitation)
		{	//  嵞惗惂尷忣曬庢摼懸偪忬懺偺応崌
		TLimitationItem* limitationItem(iLimitationArray[0]);
		TInt itemIndex(limitationItem -> iIndex);

		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber10;
		_LIT(KContentsServiceGetItemFromList10, "SyncServerContentsServiceGetItemFromList::ServiceErr() Error Item Index = %d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KContentsServiceGetItemFromList10, itemIndex);

		//  庢摼幐攕偺傾僀僥儉偼嶍彍
		iLimitationArray.Remove(0);
		delete limitationItem -> iSongItem;
		delete limitationItem;
		iLimitationItem = NULL;

		//  僄儔乕帪偼僉儍僢僔儏傪嶍彍偟嵞搙MW偐傜庢傝捈偟傪峴偆偙偲偲偡傞
		iList -> DeleteCacheItem(itemIndex);

		//  僄儔乕懳徾嬋偼僌儗乕傾僂僩偣偢丄張棟偼宲懕偡傞
		return GetLimitInformation();
		}

	// 儔僀僽儔儕MW僄儔乕偵偰姰椆偡傞
	CompleteErr(aError);

	return ESmbMusicAPSyncServerContetnsServiceStateErr;
	}


/**
 *  僒乕價僗偺僉儍儞僙儖張棟傪峴偆
 **/
void CSmbMusicAPSyncServerContentsServiceGetItemFromList::CancelService()
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
	TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber11;
	_LIT(KContentsServiceGetItemFromList11, "SyncServerContentsServiceGetItemFromList::CancelService() state:%d");
	SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLowest, KContentsServiceGetItemFromList11, iServiceState);
#endif
	switch(iServiceState)
		{

⌨️ 快捷键说明

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