📄 smbmusicapsyncservercontentsservicegetitemfromlist.cpp
字号:
/* 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 + -