📄 smbmusicapsyncservercontentsservicesearchfromlist.cpp
字号:
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 + -