📄 smbmusicapsyncservercontentsplordermanager.cpp
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
// SmbMusicAPSyncServerContentsPLOrderManager.cpp
//
// Description:
// 僾儗僀儕僗僩偺嬋弴暲傃懼偊張棟傪娗棟偡傞
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//--------------+-----------+----------------------------------------------
//2006/06/07 |K3悪杮 | 怴婯嶌惉
//2006/07/18 |K3悪杮 | Fail-Safe偺偨傔Reset帪偵忬懺傪暲懼枹幚峴傊堏峴
// | | 儘僌弌椡廋惓
//2006/07/26 |K3悪杮 | 忬懺慗堏帪偺忬懺敾掕張棟捛壛
//2006/10/20 |K3悪杮 | 僐儊儞僩廋惓
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSPLORDERMANAGER_H__
#include "SmbMusicAPSyncServerContentsPLOrderManager.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSPLORDERMANAGER_H__
#ifndef __E32CMN_H__
#include <e32cmn.h> // TRequestStatus
#endif // __E32cmn_H__
#ifndef __E32ERR_H__
#include <e32err.h> // 僄儔乕僐乕僪
#endif // __E32ERR_H__
#ifndef __SMBMUSICMWLIBCLIENT_H__
#include <SmbMusicMWLibClient.h> // CSmbMusicMWLibPLItem
#endif // __SMBMUSICMWLIBCLIENT_H__
#ifndef __SMBMUSICAPSYNCSERVERUTIL_H__
#include "SmbMusicAPSyncServerUtil.h"
#endif // __SMBMUSICAPSYNCSERVERUTIL_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSAPPNOTIFYMANAGER_H__
#include "SmbMusicAPSyncServerContentsAppNotifyManager.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSAPPNOTIFYMANAGER_H__
USING_NAMESPACE_SEMCJ
/**
* 僾儗僀儕僗僩暲懼儅僱乕僕儍惗惉梡僼傽僋僩儕娭悢
*
* @param[in] aLog 儘僌僒乕僶僙僢僔儑儞偺嶲徠
* @param[in] aModel 摨婜僒乕僶儌僨儖偺嶲徠
*
* @return 惗惉偝傟偨僾儗僀儕僗僩暲懼儅僱乕僕儍僋儔僗偺僆僽僕僃僋僩
**/
CSmbMusicAPSyncServerContentsPLOrderManager* CSmbMusicAPSyncServerContentsPLOrderManager::NewL(
DCM_NAMESPACE::RLog& aLog,
CSmbMusicAPSyncServerModel& aModel
)
{
CSmbMusicAPSyncServerContentsPLOrderManager* self = new(ELeave) CSmbMusicAPSyncServerContentsPLOrderManager(aLog, aModel);
CleanupStack::PushL(self);
self -> ConstructL();
CleanupStack::Pop(); // self
return self;
}
/**
* 僨僗僩儔僋僞
**/
CSmbMusicAPSyncServerContentsPLOrderManager::~CSmbMusicAPSyncServerContentsPLOrderManager()
{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsPLOrderManager | EMusicAPSyncServerLocationNumber00;
_LIT(KPLOrderManagerDestruct01, "SyncServerContentsPLOrderManager::~Destruct()");
SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelNormal, KPLOrderManagerDestruct01);
#endif
if (OrderStatus() == ESmbMusicAPSyncServerContentsPLOrderStateOrdering)
{ // 枩偑堦傑偩暲懼拞偺応崌丄暲懼拞巭傪捠抦偡傞丅
RollbackOrderItem();
}
}
/**
* 僐儞僗僩儔僋僞
*
* @param[in] aLog 儘僌僒乕僶僙僢僔儑儞偺嶲徠
* @param[in] aModel 摨婜僒乕僶儌僨儖偺嶲徠
**/
CSmbMusicAPSyncServerContentsPLOrderManager::CSmbMusicAPSyncServerContentsPLOrderManager(
DCM_NAMESPACE::RLog& aLog,
CSmbMusicAPSyncServerModel& aModel
)
:iLog(aLog),
iModel(aModel),
iOrderStatus(ESmbMusicAPSyncServerContentsPLOrderStateIdle) // 弶婜忬懺愝掕
{
}
/**
* 2nd僐儞僗僩儔僋僞
**/
void CSmbMusicAPSyncServerContentsPLOrderManager::ConstructL()
{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsPLOrderManager | EMusicAPSyncServerLocationNumber01;
_LIT(KPLOrderManagerConstructL01, "SyncServerContentsPLOrderManager::ConstructL Start");
SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelNormal, KPLOrderManagerConstructL01);
#endif
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
logCode = EMusicAPSyncServerClassNumber_ContentsPLOrderManager | EMusicAPSyncServerLocationNumber02;
_LIT(KPLOrderManagerConstructL02, "SyncServerContentsPLOrderManager::ConstructL End");
SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLowest, KPLOrderManagerConstructL02);
#endif
}
/**
* 尰嵼偺暲懼忬懺偺庢摼
*
* @return 尰嵼偺暲懼忬懺
**/
TSmbMusicAPSyncServerContentsPLOrderStatus CSmbMusicAPSyncServerContentsPLOrderManager::OrderStatus() const
{
return iOrderStatus;
}
/**
* 暲懼懳徾僾儗僀儕僗僩僴儞僪儖偺庢摼
*
* @return 暲懼懳徾僾儗僀儕僗僩僴儞僪儖
**/
TInt CSmbMusicAPSyncServerContentsPLOrderManager::GetTargetListHandle() const
{
return iListHandle;
}
/**
* 曐帩僨乕僞偺弶婜壔
**/
void CSmbMusicAPSyncServerContentsPLOrderManager::Reset()
{
iPLItem = NULL;
iListHandle = 0;
// 暲懼枹幚峴忬懺傊
SetOrderStatus(ESmbMusicAPSyncServerContentsPLOrderStateIdle);
}
/**
* 暲懼忬懺偺愝掕
*
* @param[in] aStatus 慗堏愭偺暲懼忬懺
**/
void CSmbMusicAPSyncServerContentsPLOrderManager::SetOrderStatus(TSmbMusicAPSyncServerContentsPLOrderStatus aStatus)
{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsPLOrderManager | EMusicAPSyncServerLocationNumber03;
_LIT(KPLOrderManagerSetOrderStatus01, "SyncServerContentsPLOrderManager::SetOrderStatus() %d -> %d");
SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KPLOrderManagerSetOrderStatus01, iOrderStatus, aStatus);
#endif
if ((aStatus < ESmbMusicAPSyncServerContentsPLOrderStateIdle) ||
(aStatus > ESmbMusicAPSyncServerContentsPLOrderStateCommiting))
{ // 慗堏愭偺忬懺偑堎忢
// 撪晹偱偺張棟側偺偱儘僌弌椡屻Panic
TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsPLOrderManager | EMusicAPSyncServerLocationNumber04;
_LIT(KPLOrderManagerSetOrderStatus02, "SyncServerContentsPLOrderManager::SetOrderStatus() illegal Status:%d");
SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelHighest, KPLOrderManagerSetOrderStatus02, aStatus);
ASSERT(EFalse);
}
if (iOrderStatus == aStatus)
{
return;
}
iOrderStatus = aStatus;
}
/**
* 僾儗僀儕僗僩嬋弴曄峏奐巒
*
* @param[in,out] aPLItem 暲懼懳徾偲側傞僾儗僀儕僗僩傾僀僥儉
*
* @return 張棟寢壥(KErrNone:惓忢廔椆丄KErrNotSupported:枹僒億乕僩丄KErrInUse:婛偵暲懼拞丄System-wide僄儔乕僐乕僪)
**/
TInt CSmbMusicAPSyncServerContentsPLOrderManager::PrepareOrderItem(TInt aListHandle, CSmbMusicMWLibPLItem* aPLItem)
{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
TUint32 logCode = EMusicAPSyncServerClassNumber_ContentsPLOrderManager | EMusicAPSyncServerLocationNumber05;
_LIT(KPLOrderManagerPrepareOrderItem01, "SyncServerContentsPLOrderManager::PrepareOrderItem(Handle:0x%08x,aPLItem:0x%08x)");
SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KPLOrderManagerPrepareOrderItem01, aListHandle, aPLItem);
#endif
TInt retState(KErrNone);
if ((OrderStatus() != ESmbMusicAPSyncServerContentsPLOrderStateIdle) ||
(iPLItem != NULL))
{ // 婛偵僾儗僀儕僗僩暲懼偑峴傢傟偰偄偨応崌
return KErrInUse;
}
iPLItem = aPLItem;
if (iPLItem == NULL)
{ // 僾儗僀儕僗僩傾僀僥儉偑僙僢僩偝傟偰偄側偄応崌
return KErrNotReady;
}
iListHandle = aListHandle;
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
logCode = EMusicAPSyncServerClassNumber_ContentsPLOrderManager | EMusicAPSyncServerLocationNumber06;
_LIT(KPLOrderManagerPrepareOrderItem02, "SyncServerContentsPLOrderManager::PrepareOrderItem Handle:0x%08x");
SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelLow, KPLOrderManagerPrepareOrderItem02, aPLItem -> Handle());
#endif
retState = iPLItem -> PrepareOrderItem();
if (retState != KErrNone)
{
#ifdef __SMBMUSICAPSYNCSERVER_ENABLEALLLOG__
logCode = EMusicAPSyncServerClassNumber_ContentsPLOrderManager | EMusicAPSyncServerLocationNumber07;
_LIT(KPLOrderManagerPrepareOrderItem03, "SyncServerContentsPLOrderManager::PrepareOrderItem Error:%d");
SmbMusicAPSyncServerLog(iLog, logCode, ELogLevelNormal, KPLOrderManagerPrepareOrderItem03, retState);
#endif
Reset();
}
else
{ // 僾儗僀儕僗僩嬋弴曄峏梫媮偑惉岟
// 暲懼拞忬懺傊
SetOrderStatus(ESmbMusicAPSyncServerContentsPLOrderStateOrdering);
}
return retState;
}
/**
* 僾儗僀儕僗僩嬋弴曄峏
*
* @param[in] aCurrentIndex 懳徾傾僀僥儉偺尰嵼偺Index斣崋
* @param[in] aNewIndex 堏摦屻偺index斣崋
*
* @return 張棟寢壥(KErrNone:惓忢廔椆丄KErrNotSupported:枹僒億乕僩丄KErrNotReady:暲懼拞偱側偄丄System-wide僄儔乕僐乕僪)
**/
TInt CSmbMusicAPSyncServerContentsPLOrderManager::OrderItem(TInt aCurrentIndex, TInt aNewIndex)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -