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

📄 smbmusicapsyncservercontentsservicegetitemfromlist.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//  MODIFY-E  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳

		return ETrue;
		}
	else
		{
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber17;
		_LIT(KContentsServiceGetItemFromList17, "SyncServerContentsServiceGetItemFromList::SetSongItem() iTempItem is Null");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList17);

		return EFalse;
		}
	}


/**
 *  庢摼偟偨傾僀僥儉傪儕僗僩偵搊榐偡傞(Meta傾僀僥儉)
 *  @param[in]	aIndex	搊榐偡傞僀儞僨僢僋僗
 *  @return	搊榐偺惉斲
 **/
TBool CSmbMusicAPSyncServerContentsServiceGetItemFromList::SetMetaItemL(TInt aIndex)
	{
	TBuf<KSmbMusicMWLibSongTitle> dispString;

	// 昞帵暥帤楍傪庢摼偡傞
	const TSmbMusicMWLibCommonInfo* commonInfo = iTempItem->CommonInformation();
	if (commonInfo != NULL)
		{
		dispString = commonInfo->iDispString;
		}

	//  庢摼偟偨傾僀僥儉偵懳偡傞懳墳
	TBuf<KSmbMusicAPSyncEngineMaxDispString> buffString;
	buffString = dispString;
	if (iTempItem -> ItemType() != ESmbMusicMWLibItemTypePL)
		{	//  僾儗僀儕僗僩偱側偄応崌(嬋偼忋偱敾暿嵪傒)
		//  僀儞億乕僩僾儗僀儕僗僩偼"側偟"昞帵懳徾奜
		if (dispString.Length() > 0)
			{	//  昞帵暥帤楍桳
			buffString.Trim();
			if (buffString.Length() > 0)
				{	//  Trim偺寢壥丄暥帤楍挿偑0埲忋(嬻敀偩偗偱偼側偐偭偨)偺応崌
				buffString = dispString;
				}
			}
		}

	delete iTempItem;
	iTempItem = NULL;

	MakeResponseData(aIndex, buffString);

	TBool result = iScreenData.SetItem(iParamListHandle, aIndex, dispString);
	if(result == EFalse)
		{
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber18;
		_LIT(KContentsServiceGetItemFromList18, "SyncServerContentsServiceGetItemFromList::GetItemInfoL() iScreenData.SetItem() Err");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList18);

		return result;
		}

	return ETrue;
	}


/**
 *  墳摎僨乕僞傪嶌惉偡傞
 *  @param[in]	aIndex			僀儞僨僢僋僗(MWLib忋偺Index)
 *  @param[in]	aDispString		昞帵暥帤楍
 *  @param[in]	aAvailable		傾僀僥儉偺棙梡壜斲忣曬(僨僼僅儖僩:棙梡壜擻)
 *  @param[in]	aLimitatioin	嵞惗惂尷忣曬(僨僼僅儖僩:惂尷柍偟)
 */
//  MODIFY-S PTX824 k3-sugimoto
void CSmbMusicAPSyncServerContentsServiceGetItemFromList::MakeResponseData(
		TInt aIndex,
		const TDesC& aDispString,
		TInt aAvailable/*=ESmbMusicAPSyncEngineOK*/,
		TSmbMusicAPSyncEngineLimitation aLimitatioin/*=ESmbMusicAPSyncEngineLimitNone*/
		)
//  MODIFY-E PTX824 k3-sugimoto
	{
	iResponseArray[aIndex-iParamIndex].iDispString	= aDispString;		// 昞帵梡暥帤楍
	iResponseArray[aIndex-iParamIndex].iIndex 	 	= aIndex - 1;			// Index斣崋(MWLib偱偼Index偑1乣偺偨傔丄0乣偵曄姺偡傞)
	iResponseArray[aIndex-iParamIndex].iAvailable	= aAvailable;		// 傾僀僥儉偺棙梡壜斲忣曬
	iResponseArray[aIndex-iParamIndex].iLimitation	= aLimitatioin;		// 嵞惗惂尷忣曬
	}


/**
 *  僒乕價僗傪惓忢偵姰椆偡傞
 **/
void CSmbMusicAPSyncServerContentsServiceGetItemFromList::Complete()
	{
	if(ESmbMusicAPSyncServerContentsServiceGetItemFromListState_End != iServiceState)
		{
		TPtrC8 arrayData((const TUint8*)iResponseArray, sizeof(TSmbMusicAPSyncEngineListItemInfo)*iParamCount);

		TInt err = iRMessage.Write(1, arrayData);
		if (KErrNone == err)
			{
			MessageComplete(iParamCount);
			}
		else
			{
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber19;
			_LIT(KContentsServiceGetItemFromList19, "SyncServerContentsServiceGetItemFromList::Complete() Write() Err %d");
			SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList19, err);

			MessageComplete(err);
			}

		iServiceState = ESmbMusicAPSyncServerContentsServiceGetItemFromListState_End;
		}
	else
		{
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber20;
		_LIT(KContentsServiceGetItemFromList20, "SyncServerContentsServiceGetItemFromList::Complete() Invalid State %d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList20, iServiceState);
		}
	}


/**
 *  僒乕價僗傪僄儔乕偱姰椆偡傞
 *  @param[in]	aResult	僒乕價僗廔椆帪偺寢壥
 */
void CSmbMusicAPSyncServerContentsServiceGetItemFromList::CompleteErr(TInt aResult)
	{
	if(ESmbMusicAPSyncServerContentsServiceGetItemFromListState_End != iServiceState)
		{
		if(KErrNone == aResult)
			{
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber21;
			_LIT(KContentsServiceGetItemFromList21, "SyncServerContentsServiceGetItemFromList::CompleteErr() ErrCode Is KErrNone");
			SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList21);

			MessageComplete(KErrServiceFailure);
			}
		else
			{
			MessageComplete(aResult);
			}

		iServiceState = ESmbMusicAPSyncServerContentsServiceGetItemFromListState_End;
		}
	}


//  ADD-S  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
/**
 *  嵞惗惂尷忣曬庢摼梡偺傾僀僥儉攝楍偺弶婜壔
 **/
void CSmbMusicAPSyncServerContentsServiceGetItemFromList::ClearLimitationArray()
	{
	while(iLimitationArray.Count() > 0)
		{
		TLimitationItem* limitationItem = iLimitationArray[0];
		iLimitationArray.Remove(0);
		if (limitationItem != NULL)
			{
			delete limitationItem -> iSongItem;
			}
		delete limitationItem;
		}
	}


/**
 *  嵞惗惂尷忣曬庢摼
 *  @return	僒乕價僗張棟忬懺
 **/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetItemFromList::GetLimitInformation()
 	{
	if (iLimitationArray.Count() == 0)
		{
		Complete();
		return ESmbMusicAPSyncServerContetnsServiceStateEnd;
		}

	iLimitationItem = iLimitationArray[0] -> iSongItem;
	TInt result(KErrNone);
	result = iLimitationItem -> LimitInformation(iSongLimit, iStatus);
	if (result != KErrNone)
		{
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList | EMusicAPSyncServerLocationNumber22;
		_LIT(KContentsServiceGetItemFromList22, "SyncServerContentsServiceGetItemFromList::GetLimitInformation() LimitInformation Error = %d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList22, result);

		CompleteErr(result);
		return ESmbMusicAPSyncServerContetnsServiceStateErr;
		}

	//  惂尷忣曬庢摼梫媮懸偪忬懺傊
	iServiceState = ESmbMusicAPSyncServerContentsServiceGetItemFromListState_WaitLimitation;
	Start();

	return ESmbMusicAPSyncServerContetnsServiceStateContinue;
	}


//  MODIFY-S  尃棙忣曬偺側偄嬋偺僌儗乕傾僂僩懳墳
/**
 *  僒僽僗僋儕僾僔儑儞僐儞僥儞僣偺嵞惗婜尷忬懺偺敾掕
 *  @param[in]	aSongLimit	敾掕傪峴偆偨傔偺嵞惗惂尷忣曬
 *  @return	嵞惗婜尷忬懺
 **/
TSmbMusicAPSyncServerContentsServiceGetItemFromListJudgeResult CSmbMusicAPSyncServerContentsServiceGetItemFromList::JudgeLimitCondition(
	TSmbMusicMWLibSongLimit aSongLimit
	)
	{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList | EMusicAPSyncServerLocationNumber23;
		_LIT(KContentsServiceGetItemFromList23, "SyncServerContentsServiceGetItemFromList::JudgePeriodOver() Limitation:%d RTCErrHist:%d ExpireDate:%ld GracePeriod:%d IsExistCpInfo:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLowest, KContentsServiceGetItemFromList23,
								aSongLimit.iLimitation,
								aSongLimit.iRtcErrHistory,
								aSongLimit.iExpireDate.Int64(),
								aSongLimit.iGracePeriod,
								aSongLimit.iIsExistCpInfo);
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__

	if (aSongLimit.iLimitation != ESmbMusicMWLibLimitSubscription)
		{	//  僒僽僗僋儕僾僔儑儞僐儞僥儞僣偱側偄応崌
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList | EMusicAPSyncServerLocationNumber24;
		_LIT(KContentsServiceGetItemFromList24, "SyncServerContentsServiceGetItemFromList::JudgePeriodOver() Not Subscription [Limitation = %d]");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList24, aSongLimit.iLimitation);

		return ESmbMusicAPSyncServerContentsServiceGetItemFromListResultNoLimit;
		}

	if (aSongLimit.iIsExistCpInfo == EFalse)
		{	//  堏摦婡撪偵尃棙忣曬偑側偄応崌
		//  尃棙忣曬側偟傪曉媝
		return ESmbMusicAPSyncServerContentsServiceGetItemFromListResultNoCpInfo;
		}
	else if ((aSongLimit.iIsExistCpInfo != EFalse) && (aSongLimit.iExpireDate == 0) && (aSongLimit.iGracePeriod == 0))
		{	//  堏摦婡撪偵偼尃棙忣曬偑側偔SD忋偵尃棙忣曬偑懚嵼偡傞応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList | EMusicAPSyncServerLocationNumber25;
		_LIT(KContentsServiceGetItemFromList25, "SyncServerContentsServiceGetItemFromList::JudgePeriodOver() CRinfo on SD Exist:%d Expire:%ld Grace:%d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KContentsServiceGetItemFromList25,
								aSongLimit.iIsExistCpInfo, aSongLimit.iExpireDate.Int64(), aSongLimit.iGracePeriod);
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__

		//  尃棙忣曬柍偟傪曉媝
		return ESmbMusicAPSyncServerContentsServiceGetItemFromListResultNoCpInfo;
		}

	TSmbMusicMWLibLimitCondition condition(ESmbMusicMWLibLimitAnythingGoes);
	TInt result = aSongLimit.LimitCondition(condition);
	if (result != KErrNone)
		{
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList | EMusicAPSyncServerLocationNumber26;
		_LIT(KContentsServiceGetItemFromList26, "SyncServerContentsServiceGetItemFromList::JudgePeriodOver() LimitCondition Error = %d");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList26, result);

		//  婜尷愗傟敾掕偱偒側偄偨傔婜尷撪偲敾掕
		return ESmbMusicAPSyncServerContentsServiceGetItemFromListResultNoLimit;
		}

	if (condition != ESmbMusicMWLibLimitPeriodOver)
		{	//  婜尷愗傟埲奜偺応崌
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList | EMusicAPSyncServerLocationNumber27;
		_LIT(KContentsServiceGetItemFromList27, "SyncServerContentsServiceGetItemFromList::JudgePeriodOver() Not PeriodOver [conditin = %d]");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLowest, KContentsServiceGetItemFromList27, condition);
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__

		return ESmbMusicAPSyncServerContentsServiceGetItemFromListResultNoLimit;
		}

	return ESmbMusicAPSyncServerContentsServiceGetItemFromListResultPeriodOver;
	}
//  MODIFY-E  尃棙忣曬偺側偄嬋偺僌儗乕傾僂僩懳墳


/**
 *  嵞惗惂尷忣曬峏怴
 *  @return	僒乕價僗張棟忬懺
 **/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetItemFromList::UpdateSongLimit()
	{
	TLimitationItem* limitationItem(iLimitationArray[0]);
	TInt itemIndex(limitationItem -> iIndex);

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

	//  庢摼偟偨嵞惗惂尷忣曬偺昁梫忣曬傪僉儍僢僔儏偵曐帩
	CSmbMusicAPSyncServerContentsItem* cacheItem(NULL);
	cacheItem = iList -> GetItem(itemIndex);
	if (cacheItem != NULL)
		{
		cacheItem -> SetSongLimit(iSongLimit);
		}

//  MODIFY-S  尃棙忣曬偺側偄嬋偺僌儗乕傾僂僩懳墳
	TSmbMusicAPSyncServerContentsServiceGetItemFromListJudgeResult judgeResult(JudgeLimitCondition(iSongLimit));
	//  婜尷愗傟敾掕
	if (judgeResult == ESmbMusicAPSyncServerContentsServiceGetItemFromListResultPeriodOver)
		{	//  嵞惗婜尷愗傟偺応崌
		//  僋儔僀傾儞僩偵曉偡棙梡僼儔僌偵婜尷愗傟傪愝掕
		iResponseArray[itemIndex - iParamIndex].iAvailable |= ESmbMusicAPSyncEngineOverTimeLimit;
		}
	else if (judgeResult == ESmbMusicAPSyncServerContentsServiceGetItemFromListResultNoCpInfo)
		{	//  尃棙忣曬側偟
		iResponseArray[itemIndex - iParamIndex].iAvailable |= ESmbMusicAPSyncEngineNoCpInfo;
		}
//  MODIFY-E  尃棙忣曬偺側偄嬋偺僌儗乕傾僂僩懳墳

	return GetLimitInformation();
	}
//  ADD-E  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳


// end of SmbMusicAPSyncServerContentsServiceGetItemFromList.cpp

/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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