📄 smbmusicapsyncservercontentsserviceplduplicate.cpp
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
// SmbMusicAPSyncServerContentsServicePLDuplicate.cpp
//
// Description:
// 僾儗僀儕僗僩暋惢梫媮僒乕價僗
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//--------------+-----------+----------------------------------------------
//2007/03/26 |K3悪杮 | 怴婯嶌惉
//2007/06/01 |K3悪杮 | 暋惢尦PL偺僆乕僾儞張棟捛壛
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSSERVICEPLDUPLICATE_H__
#include "SmbMusicAPSyncServerContentsServicePLDuplicate.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSSERVICEPLDUPLICATE_H__
#ifndef __E32ERR_H__
#include <e32err.h> // 僄儔乕僐乕僪
#endif // __E32ERR_H__
#ifndef __SMBMUSICAPSYNCSERVERDEF_H__
#include <SmbMusicAPSyncServerDef.h>
#endif // __SMBMUSICAPSYNCSERVERDEF_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSFUNC_H__
#include "SmbMusicAPSyncServerContentsFunc.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSFUNC_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSSCREENTRACEMANAGER_H__
#include "SmbMusicAPSyncServerContentsScreenTraceManager.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSSCREENTRACEMANAGER_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSASYNCOBSERVER_H__
#include "SmbMusicAPSyncServerContentsAsyncObserver.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSASYNCOBSERVER_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSLIST_H__
#include "SmbMusicAPSyncServerContentsList.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSLIST_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSMANAGERINTERFACE_H__
#include "SmbMusicAPSyncServerContentsManagerInterface.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSMANAGERINTERFACE_H__
#ifndef __SMBMUSICAPSYNCSERVERONTENTSDEF_H__
#include "SmbMusicAPSyncServerContentsDef.h"
#endif // __SMBMUSICAPSYNCSERVERONTENTSDEF_H__
USING_NAMESPACE_SEMCJ
/**
* 僐儞僗僩儔僋僞
*
* @param[in] aRlog 儘僌僒乕僶
* @param[in] aModel 摨婜僒乕僶儌僨儖
* @param[in] aObserver 旕摨婜僆僽僓乕僶
* @param[in] aFunc 僼傽儞僋僔儑儞
* @param[in] aManagerInterface 儅僱乕僕儍僀儞僞僼僃乕僗
* @param[in] aScreenData 僗僋儕乕儞僩儗乕僗儅僱乕僕儍
* @param[in] aRMessage 僋儔僀傾儞僩偐傜偺儊僢僙乕僕
**/
CSmbMusicAPSyncServerContentsServicePLDuplicate::CSmbMusicAPSyncServerContentsServicePLDuplicate(
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
)
{
}
/**
* 僨僗僩儔僋僞
**/
CSmbMusicAPSyncServerContentsServicePLDuplicate::~CSmbMusicAPSyncServerContentsServicePLDuplicate()
{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber00;
_LIT(KServicePLDuplicateDestruct01, "SyncServerContentsServicePLDuplicate::~Destruct()");
SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateDestruct01);
#endif
if (IsActive() != EFalse)
{
CancelService();
}
delete iPLTitle;
if (iPLList != NULL)
{ // 僋儘乕僘張棟(僆乕僾儞偟偰側偔偰傕幚峴)
iPLList -> Close();
}
delete iPLList;
delete iItemArray;
}
/**
* 僒乕價僗偺奐巒梫媮
*
* @return 僒乕價僗張棟偺宲懕忬嫷
**/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServicePLDuplicate::StartServiceL()
{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber01;
_LIT(KServicePLDuplicateStartServiceL01, "SyncServerContentsServicePLDuplicate::StartServiceL Start");
SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServicePLDuplicateStartServiceL01);
#endif
// RMessage偐傜僷儔儊乕僞撉崬
if (LoadParamL() == EFalse)
{ // 摨婜僄儞僕儞偐傜偺儊僢僙乕僕偑晄惓偩偭偨
MessageComplete(KErrArgument);
return ESmbMusicAPSyncServerContetnsServiceStateEnd;
}
if (iItemArray == NULL)
{ // 儕僗僩攝楍偑惗惉偝傟偰偄側偄応崌
// 儕僗僩傾僀僥儉庢摼梡儕僗僩攝楍惗惉
iItemArray = CSmbMusicMWLibItemArray::NewL(1); // 1嬋暘
}
// 僾儗僀儕僗僩堦棗儕僗僩庢摼
iContentsList = iScreenData.GetList(iListHandle);
if (iContentsList == NULL)
{ // 儕僗僩偺庢摼偵幐攕
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber02;
_LIT(KServicePLDuplicateStartServiceL02, "SyncServerContentsServicePLDuplicate::StartServiceL GetList Error");
SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateStartServiceL02);
#endif
MessageComplete(KErrNotFound);
return ESmbMusicAPSyncServerContetnsServiceStateEnd;
}
// 傾僀僥儉儕僗僩偺弶婜壔
iItemArray -> Reset();
// 暋惢尦懳徾僾儗僀儕僗僩傾僀僥儉庢摼
TInt retState(KErrNone);
retState = iContentsList -> CreateNewItem(*iItemArray, iIndex, 1, iStatus);
if (retState != KErrNone)
{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber03;
_LIT(KServicePLDuplicateStartServiceL03, "SyncServerContentsServicePLDuplicate::StartServiceL CreateNewItem Error:%d");
SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateStartServiceL03, retState);
#endif
MessageComplete(retState);
return ESmbMusicAPSyncServerContetnsServiceStateEnd;
}
// 傾僀僥儉庢摼懸偪忬懺傊
iServiceState = EContentsServicePLDuplicateStateGetItem;
CSmbMusicAPSyncServerContentsServiceBase::Start();
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber04;
_LIT(KServicePLDuplicateStartServiceL04, "SyncServerContentsServicePLDuplicate::StartServiceL End");
SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLowest, KServicePLDuplicateStartServiceL04);
#endif
return ESmbMusicAPSyncServerContetnsServiceStateContinue;
}
/**
* 僒乕價僗僄儔乕捠抦
*
* @param[in] aError 僄儔乕僐乕僪
*
* @return 僒乕價僗張棟偺宲懕忬嫷
**/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServicePLDuplicate::ServiceErr(TInt aError)
{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber05;
_LIT(KServicePLDuplicateServiceErr01, "SyncServerContentsServicePLDuplicate::ServiceErr(%d)");
SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateServiceErr01, aError);
#endif
if (iServiceState == EContentsServicePLDuplicateStateDuplicate)
{ // 僾儗僀儕僗僩暋惢墳摎懸偪忬懺
if (aError == KErrAlreadyExists)
{ // 僆儕僕僫儖僾儗僀儕僗僩僼傽僀儖柤偑婛偵懚嵼偟偰偄偨
if (iRetryCount < KSmbMusicAPSyncServerContentsRetryCount)
{ // 嵞帋峴夞悢偑嵟崅抣傪挻偊偰偄側偄
iRetryCount++;
TInt retState(KErrNone);
// 僾儗僀儕僗僩暋惢梫媮張棟
retState = DuplicateUserPlayList();
if (retState == KErrNone)
{ // 僾儗僀儕僗僩怴婯嶌惉梫媮偵惉岟
// AO傪桳岠偵偟墳摎懸偪傊
CSmbMusicAPSyncServerContentsServiceBase::Start();
return ESmbMusicAPSyncServerContetnsServiceStateContinue;
}
else
{ // 僾儗僀儕僗僩怴婯嶌惉梫媮偵幐攕
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber06;
_LIT(KServicePLDuplicateServiceErr02, "SyncServerContentsServicePLDuplicate::ServiceErr DuplicateUserPlayList Error:%d");
SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelNormal, KServicePLDuplicateServiceErr02, retState);
#endif
}
}
}
}
MessageComplete(aError);
// 枹幚峴忬懺傊
iServiceState = EContentsServicePLDuplicateStateIdle;
// 僾儗僀儕僗僩傾僀僥儉攋婞
if (iItemArray != NULL)
{
iItemArray -> Reset();
}
if (iPLList != NULL)
{ // 僋儘乕僘張棟(僆乕僾儞偟偰側偔偰傕幚峴)
iPLList -> Close();
}
delete iPLList;
iPLList = NULL;
// 僾儗僀儕僗僩柤偺奐曻
delete iPLTitle;
iPLTitle = NULL;
return ESmbMusicAPSyncServerContetnsServiceStateErr;
}
/**
* 僒乕價僗僉儍儞僙儖捠抦
**/
void CSmbMusicAPSyncServerContentsServicePLDuplicate::CancelService()
{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber07;
_LIT(KServicePLDuplicateCancelService01, "SyncServerContentsServicePLDuplicate::CancelService()");
SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServicePLDuplicateCancelService01);
#endif
switch(iServiceState)
{
case EContentsServicePLDuplicateStateGetItem: // 僾儗僀儕僗僩傾僀僥儉庢摼拞
{
ASSERT(iContentsList != NULL);
// 傾僀僥儉惗惉僉儍儞僙儖
iContentsList -> CancelCreateNewItem();
}
break;
case EContentsServicePLDuplicateStateOpenPL: // 暋惢尦僾儗僀儕僗僩僆乕僾儞拞
{
ASSERT(iPLList != NULL);
// 僾儗僀儕僗僩僆乕僾儞偺僉儍儞僙儖
iPLList -> Close();
}
break;
case EContentsServicePLDuplicateStateDuplicate: // 僾儗僀儕僗僩暋惢墳摎懸偪
{
ASSERT(iPLList != NULL);
// 僾儗僀儕僗僩暋惢偺僉儍儞僙儖
iFunc.CancelRegisterUserPlayList();
CSmbMusicAPSyncServerContentsServiceBase::Cancel(); // MW傪屇傇慜偵堦墳僉儍儞僙儖偟偰偍偔
// 儗僕儏乕儉忣曬偵奩摉偺僾儗僀儕僗僩偑偁傞応崌偼丄儕僗僩傾僀僥儉偺忣曬傪峏怴偡傞丅
CSmbMusicAPSyncServerContentsList* list = iScreenData.GetLastListFromPlayScreenTrace();
if(list != NULL)
{
CSmbMusicMWLibMusicItem& item = list -> GetListItem();
if(*iPLList == item)
{
item.Update();
}
}
}
break;
case EContentsServicePLDuplicateStateIdle: // 張棟柍偟
break;
default:
{
TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber08;
_LIT(KServicePLDuplicateCancelService02, "SyncServerContentsServicePLDuplicate::CancelService illegal default-route:%d");
SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelHighest, KServicePLDuplicateCancelService02, iServiceState);
ASSERT(EFalse);
}
break;
}
MessageComplete(KErrCancel);
// 枹幚峴忬懺傊
iServiceState = EContentsServicePLDuplicateStateIdle;
CSmbMusicAPSyncServerContentsServiceBase::Cancel();
// 僾儗僀儕僗僩傾僀僥儉攋婞
if (iItemArray != NULL)
{
iItemArray -> Reset();
}
if (iPLList != NULL)
{ // 僋儘乕僘張棟(僆乕僾儞偟偰側偔偰傕幚峴)
iPLList -> Close();
}
delete iPLList;
iPLList = NULL;
// 僾儗僀儕僗僩柤偺奐曻
delete iPLTitle;
iPLTitle = NULL;
}
/**
* 僒乕價僗宲懕
*
* @return 僒乕價僗張棟偺宲懕忬嫷
**/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServicePLDuplicate::ContinueServiceL()
{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsServicePLDuplicate | EMusicAPSyncServerLocationNumber09;
_LIT(KServicePLDuplicateContinueServiceL01, "SyncServerContentsServicePLDuplicate::ContinueServiceL()");
SmbMusicAPSyncServerLog(iRLog, logCode, ELogLevelLow, KServicePLDuplicateContinueServiceL01);
#endif
TSmbMusicAPSyncServerContentsServiceState retState(ESmbMusicAPSyncServerContetnsServiceStateEnd);
switch(iServiceState)
{
case EContentsServicePLDuplicateStateGetItem: // 僾儗僀儕僗僩傾僀僥儉庢摼拞
{
// 僾儗僀儕僗僩暋惢慜張棟
TInt error(KErrNone);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -