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

📄 smbmusicapsyncservercontentsservicegetitemfromlist.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		case ESmbMusicAPSyncServerContentsServiceGetItemFromListState_WaitItem:		// 僒乕價僗傾僀僥儉庢摼懸偪忬懺
			// 傾僀僥儉惗惉張棟傪僉儍儞僙儖偡傞
			iList->CancelCreateNewItem();
			break;

		case ESmbMusicAPSyncServerContentsServiceGetItemFromListState_WaitLimitation:	// 惂尷忣曬庢摼懸偪忬懺
			{
			ASSERT(iLimitationItem != NULL);
			//  嵞惗惂尷忣曬庢摼偺僉儍儞僙儖
			iLimitationItem -> CancelGetInfo();
//  ADD-S  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
			CSmbMusicAPSyncServerContentsServiceBase::Cancel();

			iLimitationItem = NULL;
			while(iLimitationArray.Count() > 0)
				{
				TLimitationItem* limitationItem(iLimitationArray[0]);
				TInt itemIndex(limitationItem -> iIndex);

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

				//  僄儔乕帪偼僉儍僢僔儏傪嶍彍偟嵞搙MW偐傜庢傝捈偟傪峴偆偙偲偲偡傞
				iList -> DeleteCacheItem(itemIndex);
				}
//  ADD-E  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
			}
			break;

		default :
			break;
		}

	Cancel();

	CompleteErr(KErrCancel);
	}


/**
 *  傾僀僥儉傪惗惉偡傞
 *  @return	僒乕價僗張棟忬懺
 **/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetItemFromList::CreateItemsL()
	{
	TBool	toDo		= EFalse;
	TInt	searchTop	= 0;
	TInt	searchLast	= 0;

	// 庢摼偟偨偄Index偺愭摢偐傜嵟屻傑偱
	for(TInt i = iParamIndex; i < (iParamIndex + iParamCount); i++)
		{
		CSmbMusicAPSyncServerContentsItem* item = iList->GetItem(i);
		if (item != NULL)
			{
			//  棙梡壜斲僼儔僌庢摼
			TInt available(item -> GetAvailable());
			//  嵞惗惂尷忣曬庢摼
			TSmbMusicAPSyncEngineLimitation limitation(item -> Limitation());

//  ADD-S  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
#ifndef __SMBMUSICAPSYNCSERVER_DISABLE_SUBSCRIPTIONGRAYOUT__
			//  婜尷愗傟僌儗僀傾僂僩昞帵敾掕
			if (limitation == ESmbMusicAPSyncEngineLimitSubscription)
				{	//  僒僽僗僋儕僾僔儑儞僐儞僥儞僣偺応崌
				//  嵞惗惂尷忬懺庢摼
				TSmbMusicMWLibSongLimit songLimit;
				TInt result = item -> GetSongLimit(songLimit);
				if (result == KErrNone)
					{	//  嵞惗惂尷忬懺庢摼惉岟
//  MODIFY-S  尃棙忣曬偺側偄嬋偺僌儗乕傾僂僩懳墳
					TSmbMusicAPSyncServerContentsServiceGetItemFromListJudgeResult judgeResult(JudgeLimitCondition(songLimit));
					if (judgeResult == ESmbMusicAPSyncServerContentsServiceGetItemFromListResultPeriodOver)
						{	//  婜尷愗傟偺応崌
						available |= ESmbMusicAPSyncEngineOverTimeLimit;
						}
					else if (judgeResult == ESmbMusicAPSyncServerContentsServiceGetItemFromListResultNoCpInfo)
						{	//  尃棙忣曬側偟
						available |= ESmbMusicAPSyncEngineNoCpInfo;
						}
//  MODIFY-E  尃棙忣曬偺側偄嬋偺僌儗乕傾僂僩懳墳
					}
				}
#endif	//  __SMBMUSICAPSYNCSERVER_DISABLE_SUBSCRIPTIONGRAYOUT__
//  ADD-E  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳

			HBufC* string = item->GetDispString();
			if(string != NULL)
				{
//  ADD-S  [iKeeper(TRK):9001]  SS偵傛傞枹擖椡崁栚懳墳
				//  僉儍僢僔儏偝傟偨忣曬偵懳偡傞懳墳
				TBuf<KSmbMusicAPSyncEngineMaxDispString> tmpString;
				tmpString = *string;	//  Trim梡偺僥儞億儔儕僨傿僗僋儕僾僞偵僐僺乕
				TSmbMusicAPSyncEngineListType itemType(iList->GetListType());	//  尰嵼偺儕僗僩偺儕僗僩庬暿庢摼
				if ((itemType != ESmbMusicAPSyncEngineTypeSonglist) &&
					(itemType != ESmbMusicAPSyncEngineTypeImportPlaylist) &&
//  ADD-S PTX824 k3-sugimoto
					(itemType != ESmbMusicAPSyncEngineTypeWMAPlaylist) &&
//  ADD-E PTX824 k3-sugimoto
					(itemType != ESmbMusicAPSyncEngineTypeOriginalPlaylist))	//  僆儕僕僫儖僾儗僀儕僗僩偵偼側偄偼偢偩偑堦墳
					{	//  僾儗僀儕僗僩丒嬋傾僀僥儉偱側偄応崌(PL丒嬋偼懳徾奜)
					if (string -> Length() > 0)
						{	//  昞帵暥帤楍桳
						tmpString.Trim();
						if (tmpString.Length() == 0)
							{	//  Trim偺寢壥丄暥帤挿偑0(嬻敀偺傒偺昞帵暥帤楍偩偭偨応崌)
							*string = KNullDesC;	//  傾僾儕偵偼NULL搉偟
							}
						}
					}
//  ADD-E  [iKeeper(TRK):9001]  SS偵傛傞枹擖椡崁栚懳墳
//  MODIFY-S PTX824 k3-sugimoto
				MakeResponseData(i, *string, available, limitation);
//  MODIFY-E PTX824 k3-sugimoto
				delete string;
				string = 0;
				}
			else
				{
//  MODIFY-S PTX824 k3-sugimoto
				MakeResponseData(i, KNullDesC, available, limitation);
//  MODIFY-E PTX824 k3-sugimoto
				}
			}
		else
			{
			if(EFalse == toDo){
				toDo		= ETrue;
				searchTop	= i;
				searchLast	= i;
				}
			else
				{
				searchLast	= i;
				}
			}
		}

	if(EFalse != toDo)
		{
		iGetItemsTopIndex	= searchTop;					// 庢摼偡傞傾僀僥儉偺愭摢僀儞僨僢僋僗
		iGetItemsCount		= searchLast - searchTop + 1;	// 庢摼偡傞傾僀僥儉偺傾僀僥儉偺悢

		// 傾僀僥儉攝楍傪惗惉偡傞
		iTempItemArray = CSmbMusicMWLibItemArray::NewL(iGetItemsCount);

		// 傾僀僥儉傪惗惉偡傞
		TInt result = iList->CreateNewItem(*iTempItemArray, iGetItemsTopIndex, iGetItemsCount, iStatus);
		if(KErrNone == result)
			{
			// 僒乕價僗僋儔僗傪傾僋僥傿僽偵偡傞
			Start();

			// 傾僀僥儉庢摼懸偪忬懺偵偡傞
			iServiceState = ESmbMusicAPSyncServerContentsServiceGetItemFromListState_WaitItem;

			return ESmbMusicAPSyncServerContetnsServiceStateContinue;
			}
		else
			{
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber12;
			_LIT(KContentsServiceGetItemFromList12, "SyncServerContentsServiceGetItemFromList::CreateItemsL() CreateNewItem() Err %d");
			SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList12, result);

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


/**
 *  傾僀僥儉偺忣曬傪庢摼偡傞
 *  @return	僒乕價僗張棟忬懺
 **/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetItemFromList::GetItemInfoL()
	{
	for(TInt i = 0; i < iGetItemsCount; i++)
		{
		// 傾僀僥儉傪庢摼偡傞
		delete iTempItem;
		iTempItem = NULL;

		iTempItem = iTempItemArray -> GetMusicItemL(i);
		if(iTempItem != NULL)
			{
			TBool result(ETrue);
			if(iTempItem -> ItemType() == ESmbMusicMWLibItemTypeSong)
				{
				result = SetSongItemL(iGetItemsTopIndex + i);
				}
			else
				{
				result = SetMetaItemL(iGetItemsTopIndex + i);
				}

			if(EFalse == result)
				{
				CompleteErr(KErrNotReady);
				return ESmbMusicAPSyncServerContetnsServiceStateErr;
				}
			}
		else
			{
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber13;
			_LIT(KContentsServiceGetItemFromList13, "SyncServerContentsServiceGetItemFromList::GetItemInfoL() GetMusicItemL() Err");
			SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList13);

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

	return ESmbMusicAPSyncServerContetnsServiceStateEnd;
	}


/**
 *  庢摼偟偨傾僀僥儉傪儕僗僩偵搊榐偡傞
 *  @param[in]	aIndex	搊榐偡傞僀儞僨僢僋僗
 *  @return	搊榐偺惉斲
 **/
TBool CSmbMusicAPSyncServerContentsServiceGetItemFromList::SetSongItemL(TInt aIndex)
	{
	if(iTempItem != NULL)
		{
//  ADD-S PTX824 k3-sugimoto
		CSmbMusicMWLibSongItem* songItem = static_cast<CSmbMusicMWLibSongItem*>(iTempItem);
//  ADD-E PTX824 k3-sugimoto
		// 昞帵暥帤楍傪庢摼偡傞
		TBuf<KSmbMusicMWLibSongTitle> dispString;
		const TSmbMusicMWLibCommonInfo* commonInfo = iTempItem->CommonInformation();
		if(commonInfo != NULL)
			{
			dispString = commonInfo->iDispString;
			}

		// 傾僀僥儉偺棙梡壜斲忣曬傪媮傔傞
		TInt available = ESmbMusicAPSyncEngineOK;

//  MODIFY-S  儘僌捛壛
		TBool isOnline(songItem->IsOnline());
		if(isOnline == EFalse)
//  MODIFY-E  儘僌捛壛
			{
			available |= ESmbMusicAPSyncEngineOffLine;			///<僆僼儔僀儞忬懺 捛壛
			}

		TSmbMusicMWLibUimConformity uim;
		TInt result = songItem->UimConformation(uim);
		if(KErrNone == result)
			{
			if(ESmbMusicMWLibNotConform == uim || ESmbMusicMWLibNotInserted == uim)
				{// UIM斲揔崌偐UIM枹憓擖偺応崌
				available |= ESmbMusicAPSyncEngineUIMLimit;	///<UIM惂尷 捛壛
				}
			}
		else
			{
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber14;
			_LIT(KContentsServiceGetItemFromList14, "SyncServerContentsServiceGetItemFromList::SetSongItem() UimConformation() Err %d");
			SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList14, result);
			// 忣曬庢摼僄儔乕偺応崌偼丄擮偺偨傔UIM惂尷埖偄偲偟傑偡丅
			available |= ESmbMusicAPSyncEngineUIMLimit;	///<UIM惂尷 捛壛
			}

//  ADD-S PTX824 k3-sugimoto
		TSmbMusicAPSyncEngineLimitation limitation(ESmbMusicAPSyncEngineLimitInvalidation);
		const TSmbMusicMWLibDispSongInfo* dispInfo = songItem -> DispInformation();
		if (dispInfo != NULL)
			{
			limitation = TSmbMusicAPSyncServerConverter::ConvertLimitation(dispInfo -> iLimitation, &iRLog);
			}
		else
			{
			TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList | EMusicAPSyncServerLocationNumber15;
			_LIT(KContentsServiceGetItemFromList15, "SyncServerContentsServiceGetItemFromList::SetSongItem() DispInformation is Null");
			SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHigh, KContentsServiceGetItemFromList15);
			}
//  ADD-E PTX824 k3-sugimoto

//  ADD-S  儘僌捛壛
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
		TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServiceGetItemFromList|EMusicAPSyncServerLocationNumber16;
		_LIT(KContentsServiceGetItemFromList16, "SyncServerContentsServiceGetItemFromList::SetSongItem(%d) online:%d UIM:%d available:%08x");
		SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLowest, KContentsServiceGetItemFromList16, 
								aIndex, isOnline, uim, available);
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
//  ADD-E  儘僌捛壛

		MakeResponseData(aIndex, dispString, available, limitation);

		TBool res = iScreenData.SetItem(iParamListHandle, aIndex, dispString, available, limitation);
		if (res == EFalse)
			{
			return EFalse;
			}

//  MODIFY-S  婜尷愗傟僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
#ifndef __SMBMUSICAPSYNCSERVER_DISABLE_SUBSCRIPTIONGRAYOUT__
		if (limitation == ESmbMusicAPSyncEngineLimitSubscription)
			{	//  僒僽僗僋儕僾僔儑儞僐儞僥儞僣偺応崌
			//  嵞惗惂尷忣曬傪庢摼丒愝掕偡傞偨傔偵昁梫忣曬傪惗惉
			TLimitationItem* limitationItem = new(ELeave)TLimitationItem;
			limitationItem -> iIndex	 = aIndex;
			limitationItem -> iSongItem	 = static_cast<CSmbMusicMWLibSongItem*>(iTempItem);
			User::LeaveIfError(iLimitationArray.Append(limitationItem));

			iTempItem = NULL;
			}
		else
#endif	//  __SMBMUSICAPSYNCSERVER_DISABLE_SUBSCRIPTIONGRAYOUT__
			{
			delete iTempItem;
			iTempItem = NULL;
			}

⌨️ 快捷键说明

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