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

📄 smbmusicapsyncservercontentsservicesearchfromlist.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	return ret;
	}


/**
 PL儕僗僩傪嶌惉偡傞
 * @param [in]	aList	僐儞僥儞僣儕僗僩僋儔僗偺嶲徠
 * @return				僒乕價僗張棟忬懺
 */
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceSearchFromList::CreatePLSongList(CSmbMusicMWLibMusicItem* aList)
	{
	iReqListType = ESmbMusicAPSyncEngineTypeSonglist;

	if(0 == aList)
		{
		_LIT(KContentsServiceSearchFromList30, "SyncServerContentsServiceSearchFromList::CreatePLSongList() Invalid List 0x%08x");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceSearchFromList|EMusicAPSyncServerLocationNumber30),
								ELogLevelHigh,
								KContentsServiceSearchFromList30,
								aList);

		// 僷儔儊乕僞僄儔乕偵偰姰椆偡傞
		CompleteErr(KErrArgument);
		return ESmbMusicAPSyncServerContetnsServiceStateErr;
		}

	if(aList->ItemType() != ESmbMusicMWLibItemTypePL)
		{
		_LIT(KContentsServiceSearchFromList31, "SyncServerContentsServiceSearchFromList::CreatePLSongList() Invalid List Type %d");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceSearchFromList|EMusicAPSyncServerLocationNumber31),
								ELogLevelHigh,
								KContentsServiceSearchFromList31,
								aList->ItemType());

		// PL傾僀僥儉傪嶍彍偡傞丅
		delete aList;
		aList = 0;

		// 僷儔儊乕僞僄儔乕偵偰姰椆偡傞
		CompleteErr(KErrArgument);
		return ESmbMusicAPSyncServerContetnsServiceStateErr;
		}

	iTempListItem = static_cast<CSmbMusicMWLibListItem*>(aList);

	// 儕僗僩傾僀僥儉傪僆乕僾儞偡傞
	TInt mwResult = iTempListItem->Open(iStatus);
	if(KErrNone == mwResult)
		{
		// 僒乕價僗僋儔僗傪傾僋僥傿僽偵偡傞
		Start();
		iServiceState = ESmbMusicAPSyncServerContentsServiceSearchFromListState_WaitList_PLSong;
		return ESmbMusicAPSyncServerContetnsServiceStateContinue;

		}
	else
		{
		_LIT(KContentsServiceSearchFromList32, "SyncServerContentsServiceSearchFromList::CreatePLSongList() iTempListItem->Open() Err");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceSearchFromList|EMusicAPSyncServerLocationNumber32),
								ELogLevelHigh,
								KContentsServiceSearchFromList32);

		// 儔僀僽儔儕MW僄儔乕偵偰姰椆偡傞
		CompleteErr(KErrNotReady);
		return ESmbMusicAPSyncServerContetnsServiceStateErr;
		}
	}


/**
 慡嬋儕僗僩傪嶌惉偡傞
 * @param [in]	aPrevList	堦偮慜偵側傞僐儞僥儞僣儕僗僩僋儔僗偺嶲徠
 * @return					僒乕價僗張棟忬懺
 */
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceSearchFromList::CreateAllSongListL(CSmbMusicAPSyncServerContentsList& aPrevList)
	{
	iReqListType = ESmbMusicAPSyncEngineTypeSonglist;

	// 専嶕忦審攝楍傪惗惉偡傞
	iTempSearchCondition	= new(ELeave) CArrayFixFlat<TSmbMusicMWLibSearchConditionInfo>(KConditionArrayGranularity);

	// 巜掕儕僗僩偺専嶕忦審傪庢摼偡傞
	TBool result = aPrevList.GetSearchCondition(*iTempSearchCondition);
	// 専嶕忦審傪庢摼偱偒側偐偭偨応崌
	if(EFalse == result)
		{
		// 慡専嶕偺専嶕忦審傪愝掕偡傞
		MakeConditionInfoL(*iTempSearchCondition, ESmbMusicMWLibColAll);
		}
	// 僜乕僩忦審攝楍傪惗惉偡傞
	iTempSortCondition = new(ELeave) CArrayFixFlat<TSmbMusicMWLibSortConditionInfo>(2);

	// 儕僗僩偺庬暿傪
	switch(aPrevList.GetListType())
		{
	case ESmbMusicAPSyncEngineTypeGenre:		// 僕儍儞儖
	case ESmbMusicAPSyncEngineTypeArtist:		// 傾乕僥傿僗僩
		// 昞帵暥帤楍偵傛傞徃弴偺僜乕僩忦審傪嶌惉偡傞
		MakeSortInfoL(*iTempSortCondition, ESmbMusicMWLibColDispString, ETrue);
		break;

	case ESmbMusicAPSyncEngineTypeAlbum:		// 傾儖僶儉
		// 傾儖僶儉柤偵傛傞徃弴偺僜乕僩忦審傪嶌惉偡傞
		MakeSortInfoL(*iTempSortCondition, ESmbMusicMWLibColAlbum, ETrue);

		// 僩儔僢僋斣崋偵傛傞徃弴偺僜乕僩忦審傪嶌惉偡傞
		MakeSortInfoL(*iTempSortCondition, ESmbMusicMWLibColTrackNum, ETrue);
		break;

	default:
		_LIT(KContentsServiceSearchFromList33, "SyncServerContentsServiceSearchFromList::CreateAllSongListL() List Type not Support %d");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceSearchFromList|EMusicAPSyncServerLocationNumber33),
								ELogLevelHigh,
								KContentsServiceSearchFromList33,
								aPrevList.GetListType());

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


	// 専嶕忣曬僋儔僗傪惗惉偡傞
	iTempSearchInfo = CSmbMusicMWLibSearchInfo::NewL();

	// 専嶕忣曬僋儔僗偵専嶕忦審攝楍丄僜乕僩忦審攝楍傪愝掕偡傞
	result = MakeSearchInfo(*iTempSearchInfo, iTempSearchCondition, iTempSortCondition);
	// 専嶕忣曬僋儔僗偵愝掕偝傟偨偺偱丄億僀儞僞傪柍岠壔
	iTempSearchCondition = 0;
	iTempSortCondition	 = 0;

	TSmbMusicAPSyncServerContentsServiceState ret = ESmbMusicAPSyncServerContetnsServiceStateErr;

	if(EFalse != result)
		{
		// 儕僗僩傪嶌惉偡傞
		CSmbMusicMWLibStaticSearchListItem* listItem = CSmbMusicMWLibStaticSearchListItem::NewL();
		TInt mwResult = iFunc.CreateSongList(*iTempSearchInfo, 0, *listItem, iStatus);
		iTempListItem = listItem;
		listItem = 0;

		if(KErrNone == mwResult)
			{
			// 僒乕價僗僋儔僗傪傾僋僥傿僽偵偡傞
			Start();
			iServiceState = ESmbMusicAPSyncServerContentsServiceSearchFromListState_WaitList_Song;
			ret = ESmbMusicAPSyncServerContetnsServiceStateContinue;
			}
		else
			{
			_LIT(KContentsServiceSearchFromList34, "SyncServerContentsServiceSearchFromList::CreateAllSongListL() iFunc.CreateSongList() %d");
			SmbMusicAPSyncServerLog(iRLog,
									(EMusicAPSyncServerClassNumber_ContentsServiceSearchFromList|EMusicAPSyncServerLocationNumber34),
									ELogLevelHigh,
									KContentsServiceSearchFromList34,
									mwResult);

			// 儔僀僽儔儕MW僄儔乕偵偰姰椆偡傞
			CompleteErr(KErrNotReady);
			}
		}
	else
		{
		_LIT(KContentsServiceSearchFromList35, "SyncServerContentsServiceSearchFromList::CreateAllSongListL() MakeSearchInfo");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceSearchFromList|EMusicAPSyncServerLocationNumber35),
								ELogLevelHigh,
								KContentsServiceSearchFromList35);

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

	return ret;
	}


/**
 僒乕價僗傪惓忢偵姰椆偡傞
 * @param [in] aListInfo	墳摎偵昁梫側忣曬
 * @return					側偟
 */
void CSmbMusicAPSyncServerContentsServiceSearchFromList::Complete(TSmbMusicAPSyncEngineListInfo aListInfo)
	{

	if(ESmbMusicAPSyncServerContentsServiceSearchFromListState_End != iServiceState)
		{
		TPckg<TSmbMusicAPSyncEngineListInfo>	pkg(aListInfo);

		TInt err = iRMessage.Write(1,pkg);
		if (KErrNone != err)
			{
			_LIT(KContentsServiceSearchFromList36, "SyncServerContentsServiceSearchFromList::Complete() Write() Err %d");
			SmbMusicAPSyncServerLog(iRLog,
									(EMusicAPSyncServerClassNumber_ContentsServiceSearchFromList|EMusicAPSyncServerLocationNumber36),
									ELogLevelHigh,
									KContentsServiceSearchFromList36,
									err);
			}

		MessageComplete(err);

		iServiceState = ESmbMusicAPSyncServerContentsServiceSearchFromListState_End;
		}
	else
		{
		_LIT(KContentsServiceSearchFromList37, "SyncServerContentsServiceSearchFromList::Complete() Invalid State %d");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceSearchFromList|EMusicAPSyncServerLocationNumber37),
								ELogLevelHigh,
								KContentsServiceSearchFromList37,
								iServiceState);
		}
	}


/**
 僒乕價僗傪僄儔乕偱姰椆偡傞
 * @param [in] aResult	僒乕價僗廔椆帪偺寢壥
 * @return
 */
void CSmbMusicAPSyncServerContentsServiceSearchFromList::CompleteErr(TInt aResult)
	{

	if(ESmbMusicAPSyncServerContentsServiceSearchFromListState_End != iServiceState)
		{
		if(KErrNone == aResult)
			{
			_LIT(KContentsServiceSearchFromList38, "SyncServerContentsServiceSearchFromList::CompleteErr() ErrCode Is KErrNone");
			SmbMusicAPSyncServerLog(iRLog,
									(EMusicAPSyncServerClassNumber_ContentsServiceSearchFromList|EMusicAPSyncServerLocationNumber38),
									ELogLevelHigh,
									KContentsServiceSearchFromList38);

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

		iServiceState = ESmbMusicAPSyncServerContentsServiceSearchFromListState_End;
		}

	}


/**
 専嶕忦審傪嶌惉偡傞
 * @param [in,out]	aSearchConditionArray	専嶕忦審攝楍偺嶲徠
 * @param [in]		aColumn					専嶕忦審庬暿
 * @return									側偟
 */
void CSmbMusicAPSyncServerContentsServiceSearchFromList::MakeConditionInfoL(CArrayFixFlat<TSmbMusicMWLibSearchConditionInfo>&	aSearchConditionArray,
																			TSmbMusicMWLibColumn  								aColumn)
	{
	TSmbMusicMWLibSearchConditionInfo conditionInfo;

	conditionInfo.iColumn = aColumn;

	aSearchConditionArray.AppendL(conditionInfo);
	}


/**
 専嶕忦審傪嶌惉偡傞
 * @param [in,out]	aSearchConditionArray	専嶕忦審攝楍偺嶲徠
 * @param [in]		aColumn					専嶕忦審庬暿
 * @param [in]		aMatchOption			暥帤楍堦抳忦審
 * @param [in]		aDispString				専嶕暥帤楍
 * @return									側偟
 */
void CSmbMusicAPSyncServerContentsServiceSearchFromList::MakeConditionInfoL(CArrayFixFlat<TSmbMusicMWLibSearchConditionInfo>&	aSearchConditionArray,
																			TSmbMusicMWLibColumn  								aColumn,
																			TSmbMusicMWLibMatchOption							aMatchOption,
																			const TDesC&										aDispString)
	{
	TSmbMusicMWLibSearchConditionInfo conditionInfo;

	conditionInfo.iColumn = aColumn;
	conditionInfo.iString = aDispString;
	conditionInfo.iOption = aMatchOption;

	aSearchConditionArray.AppendL(conditionInfo);
	}


/**
 僜乕僩忦審傪嶌惉偡傞
 * @param [in,out]	aSortConditionArray		僜乕僩忦審攝楍偺嶲徠
 * @param [in]		aColumn					僜乕僩忦審庬暿
 * @param [in]		iOrder					僜乕僩弴巜掕
 * @return									側偟
 */
void CSmbMusicAPSyncServerContentsServiceSearchFromList::MakeSortInfoL( CArrayFixFlat<TSmbMusicMWLibSortConditionInfo>&	aSortConditionArray,
																		TSmbMusicMWLibColumn  							aColumn,
																		TBool											aOrder)
	{
	TSmbMusicMWLibSortConditionInfo sortInfo;

	sortInfo.iColumn = aColumn;
	sortInfo.iOrder	 = aOrder;

	aSortConditionArray.AppendL(sortInfo);
	}


/**
 専嶕忣曬傪嶌惉偡傞
 * @param [in,out]	aSearchInfo				専嶕忣曬偺嶲徠
 * @param [in]		aSearchConditionArray	専嶕忦審攝楍偺億僀儞僞
 * @param [in]		aSortConditionArray		僜乕僩忦審攝楍偺億僀儞僞
 * @return			嶌惉偺惉斲
 */
TBool CSmbMusicAPSyncServerContentsServiceSearchFromList::MakeSearchInfo(CSmbMusicMWLibSearchInfo&							aSearchInfo,
																		 CArrayFixFlat<TSmbMusicMWLibSearchConditionInfo>*	aSearchConditionArray,
																		 CArrayFixFlat<TSmbMusicMWLibSortConditionInfo>*	aSortConditionArray)
	{
	// 専嶕忦審傪専嶕忣曬僋儔僗偵愝掕偡傞
	TInt mwResultSearch = aSearchInfo.SetSearchCondition(aSearchConditionArray);
	if(KErrNone != mwResultSearch)
		{
		_LIT(KContentsServiceSearchFromList39, "SyncServerContentsServiceSearchFromList::MakeSearchInfo() aSearchInfo.SetSearchCondition() Err");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceSearchFromList|EMusicAPSyncServerLocationNumber39),
								ELogLevelHigh,
								KContentsServiceSearchFromList39);

		delete aSearchConditionArray;
		aSearchConditionArray = 0;
		}


	// 僜乕僩忦審傪専嶕忣曬僋儔僗偵愝掕偡傞
	TInt mwResultSort = aSearchInfo.SetSortCondition(aSortConditionArray);
	if(KErrNone != mwResultSort)
		{
		_LIT(KContentsServiceSearchFromList40, "SyncServerContentsServiceSearchFromList::MakeSearchInfo() aSearchInfo.SetSortCondition() Err");
		SmbMusicAPSyncServerLog(iRLog,
								(EMusicAPSyncServerClassNumber_ContentsServiceSearchFromList|EMusicAPSyncServerLocationNumber40),
								ELogLevelHigh,
								KContentsServiceSearchFromList40);

		delete aSortConditionArray;
		aSortConditionArray = 0;
		}

	if(KErrNone == mwResultSort && KErrNone == mwResultSearch)
		{
		return ETrue;
		}
	else
		{
		return EFalse;
		}
	}


// end of SmbMusicAPSyncServerContentsServiceSearchFromList.cpp
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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