📄 smbmusicapsyncservercontentsservicedeleteitem.cpp
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
// SmbMusicAPSyncServerContentsServiceDeleteItem.cpp
//
// Description:
// 傾僀僥儉嶍彍梫媮僒乕價僗
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//--------------+-----------+----------------------------------------------
//2006/06/11 |娵壀 | 怴婯嶌惉
//2006/08/17 |娵壀 | 俆侽審埲忋偺慡審嶍彍偵懳墳乮戝暆側廋惓乯
//2006/09/18 |SDNA 壀嶳 | TRK9202懳墳
//2006/10/20 |K3悪杮 | 僐儊儞僩廋惓丒晄梫僿僢僟偺嶍彍
//2006/10/25 |K3悪杮 | 儘僌儗儀儖廋惓
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSSERVICEDELETEITEM_H__
#include "SmbMusicAPSyncServerContentsServiceDeleteItem.h"
#endif
#ifndef __E32ERR_H__
#include <e32err.h> // 僄儔乕僐乕僪
#endif // __E32ERR_H__
#ifndef __SMBMUSICAPSYNCSERVERDEF_H__
#include <SmbMusicAPSyncServerDef.h>
#endif // __SMBMUSICAPSYNCSERVERDEF_H__
#ifndef __SMBMUSICMWLIBCLIENT_H__
#include <SmbMusicMWLibClient.h> // CSmbMusicMWLibPLItem
#endif // __SMBMUSICMWLIBCLIENT_H__
#ifndef __SMBMUSICAPSYNCSERVERMODEL_H__
#include "SmbMusicAPSyncServerModel.h"
#endif // __SMBMUSICAPSYNCSERVERMODEL_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSFUNC_H__
#include "SmbMusicAPSyncServerContentsFunc.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSFUNC_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSIMAGEDATAMANAGER_H__
#include "SmbMusicAPSyncServerContentsImageDataManager.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSIMAGEDATAMANAGER_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSSCREENTRACEMANAGER_H__
#include "SmbMusicAPSyncServerContentsScreenTraceManager.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSSCREENTRACEMANAGER_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSASYNCOBSERVER_H__
#include "SmbMusicAPSyncServerContentsAsyncObserver.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSASYNCOBSERVER_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSMANAGERINTERFACE_H__
#include "SmbMusicAPSyncServerContentsManagerInterface.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSMANAGERINTERFACE_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSPLAYSONGINFOMANAGER_H__
#include "SmbMusicAPSyncServerContentsPlaySongInfoManager.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSPLAYSONGINFOMANAGER_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSAPPNOTIFYMANAGER_H__
#include "SmbMusicAPSyncServerContentsAppNotifyManager.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSAPPNOTIFYMANAGER_H__
#ifndef __SMBMUSICAPSYNCSERVERCONTENTSLIST_H__
#include "SmbMusicAPSyncServerContentsList.h"
#endif // __SMBMUSICAPSYNCSERVERCONTENTSLIST_H__
USING_NAMESPACE_SEMCJ
/**
* 僨僗僩儔僋僞
**/
CSmbMusicAPSyncServerContentsServiceDeleteItem::~CSmbMusicAPSyncServerContentsServiceDeleteItem()
{
if (IsActive() != EFalse)
{
CancelService();
}
// 擮偺偨傔丄僉儍儞僙儖偵偰Complete偡傞
MessageComplete(KErrCancel);
//強桳偟偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
DeleteObject();
}
/**
* 僐儞僗僩儔僋僞
*
* @param[in] aRlog 儘僌僒乕僶
* @param[in] aCommandObserver 僐儅儞僪僆僽僓乕僶
* @param[in] aFunc 僼傽儞僋僔儑儞
* @param[in] aImageData 僀儊乕僕僨乕僞僐儞僩儘乕儔
* @param[in] aScreenData 僗僋儕乕儞僩儗乕僗儅僱乕僕儍
* @param[in] aObserver 旕摨婜僆僽僓乕僶
* @param[in] aRMessage 僋儔僀傾儞僩偐傜偺儊僢僙乕僕
**/
CSmbMusicAPSyncServerContentsServiceDeleteItem::CSmbMusicAPSyncServerContentsServiceDeleteItem(
DCM_NAMESPACE::RLog& aRlog,
CSmbMusicAPSyncServerModel& aModel,
MSmbMusicAPSyncServerContentsAsyncObserver& aObserver,
CSmbMusicAPSyncServerContentsFunc& aFunc,
MSmbMusicAPSyncServerContentsManagerInterface& aMgrIf,
CSmbMusicAPSyncServerContentsScreenTraceManager& aScreenData,
const RMessage2& aRMessage):
CSmbMusicAPSyncServerContentsServiceBase(aRlog, aModel, aObserver, aFunc,
aMgrIf, aScreenData, aRMessage),
iState(EIdleState)
{
}
/**
* 僒乕價僗偺奐巒梫媮
* @param [in] 側偟
* @return 僒乕價僗張棟偺宲懕忬嫷
*/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceDeleteItem::StartServiceL()
{
if(EIdleState != iState)
{
//忬懺偑偢傟偰偄傞
TInt log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber06;
_LIT(KContentsServiceDeleteItem06, "SyncServerContentsServiceDeleteItem::StartServiceL State Error = %d");
SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceDeleteItem06, iState);
//強桳偟偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
DeleteObject();
//梫媮傪張棟偱偒傞忬懺偱偼側偄偺偱僄儔乕偱姰椆偡傞
return CompleteThisService(KErrServerBusy);
}
//梫媮儊僢僙乕僕偺撪梕傪儊儞僶曄悢偵僐僺乕偡傞
ReadParamFromMsgL();
//儕僗僩傪庢摼偡傞
iListHandle = iReqPkg->iData.iDeleteItem.iItems.iListHandle;
iList = iScreenData.GetList(iListHandle);
if(NULL == iList)
{
//巜掕偝傟偨儕僗僩偑懚嵼偟側偄帠偼側偄偺偱
TInt log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber00;
_LIT(KContentsServiceDeleteItem00, "SyncServerContentsServiceDeleteItem::StartServiceL NotFoundList");
// MODIFY-S 儘僌儗儀儖廋惓
SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHigh, KContentsServiceDeleteItem00);
// MODIFY-E 儘僌儗儀儖廋惓
//強桳偟偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
DeleteObject();
//婎杮揑偵偙偙偵偔傞偙偲偼側偄偺偱廔椆偟傑偡
return CompleteThisService(KErrNotFound);
}
//慡審嶍彍僼儔僌傪尒傑偡
iAllDelete = iReqPkg->iData.iDeleteItem.iItems.iAllItem;
if(EFalse != iAllDelete)
{
//慡審嶍彍偺応崌
//儕僗僩偵娷傑傟傞傾僀僥儉悢亖嶍彍偡傞傾僀僥儉悢
iDeleteCount = iList->GetItemCount();
if(0 == iDeleteCount)
{
//強桳偟偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
DeleteObject();
//嶍彍偡傞傾僀僥儉偑偁傝傑偣傫
return CompleteDelete(KErrNone);
}
if(NULL != iIndex)
{
delete iIndex;
iIndex = NULL;
}
iIndex = new(ELeave)RArray<TInt>(iDeleteCount);
for(TInt i = 0; i < iDeleteCount; i++)
{
//嶍彍偡傞Index攝楍傪嶌惉偟傑偡乮MW亅傾僾儕娫偱Index偵僘儗偑偁傞偺偱偦傟偺曗惓偺偨傔亄侾偡傞乯
iIndex->Append(i + 1);
}
}
//嶍彍懳徾傾僀僥儉偺Index傪僜乕僩偟傑偡
iIndex->Sort();
//堦墳嶍彍姰椆傾僀僥儉悢傪弶婜壔偡傞
iCompleteDeleteCount = 0;
//嶍彍慜偵庢摼偟偨傾僀僥儉悢傪弶婜壔偡傞
iGetItemCount = 0;
//嶍彍懳徾偺嬋傾僀僥儉傪惗惉偡傞
return CreateListItemsL();
}
/**
* 僒乕價僗僄儔乕捠抦
*
* @param[in] aError 僄儔乕僐乕僪
**/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceDeleteItem::ServiceErr(TInt aError)
{
//偲傝偁偊偢儘僌偱傕
TInt log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber04;
_LIT(KContentsServiceDeleteItem04, "SyncServerContentsServiceDeleteItem::ServiceErr = %d, State = %d");
// MODIFY-S 儘僌儗儀儖廋惓
SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHigh, KContentsServiceDeleteItem04, aError, iState);
// MODIFY-E 儘僌儗儀儖廋惓
TSmbMusicAPSyncServerContentsServiceState retState = ESmbMusicAPSyncServerContetnsServiceStateErr;
TBool res = EFalse;
switch(iState)
{
///<傾僀僥儉惗惉忬懺
case ECreateItemState:
// CancelCreateItem();
break;
///<傾僀僥儉嶍彍忬懺
case EDeleteState:
//嶍彍偡傞傾僀僥儉偑懠偵偁傟偽張棟傪宲懕偟傑偡
res = CheckErrState();
if(EFalse != res)
{
//嶍彍張棟傪幚峴偟傑偡
TRAPD(error, retState = DeleteItemsL());
if(KErrNone == error)
{
//嶍彍張棟傪宲懕偡傞
return retState;
}
//Leave偑敪惗偟偨偺偱張棟偼廔椆偟傑偡
log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber12;
_LIT(KContentsServiceDeleteItem12, "SyncServerContentsServiceDeleteItem::ServiceErr = %d, Leave Error = %d");
SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceDeleteItem12, aError, error);
}
//嶍彍僀儀儞僩傪傾僾儕偵捠抦偡傞
NotifyEvent();
break;
default:
log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber13;
_LIT(KContentsServiceDeleteItem13, "SyncServerContentsServiceDeleteItem::ServiceErr default aError = %d");
SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceDeleteItem13, aError);
break;
}
//婎杮揑偵偙偙偵偔傞偙偲偼側偄偺偱廔椆偟傑偡
CompleteThisService(aError);
//強桳偟偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
DeleteObject();
//埨掕忬懺偵栠偡
iState = EIdleState;
return ESmbMusicAPSyncServerContetnsServiceStateErr;
}
/**
* 僒乕價僗僉儍儞僙儖捠抦
* @param [in] 側偟
* @return 僒乕價僗張棟偺宲懕忬嫷
*/
void CSmbMusicAPSyncServerContentsServiceDeleteItem::CancelService()
{
TInt res = KErrCancel;
switch(iState)
{
///<梫媮側偟忬懺
case EIdleState:
//張棟柍偟偱廔椆偡傞
res = KErrNone;
break;
///<傾僀僥儉惗惉忬懺
case ECreateItemState:
CancelCreateItem();
break;
///<傾僀僥儉嶍彍忬懺
case EDeleteState:
//嶍彍姰椆張棟
CancelDeleteItem();
break;
default:
//婎杮揑偵偙偙偵偔傞偙偲偼側偄偺偱廔椆偟傑偡
res = KErrServerBusy;
break;
}
//偲傝偁偊偢曉帠傪敪峴偟傑偡
CompleteThisService(res);
//強桳偟偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
DeleteObject();
Cancel();
}
/**
* 僒乕價僗宲懕張棟
* @param [in] 側偟
* @return 僒乕價僗張棟偺宲懕忬嫷
*/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceDeleteItem::ContinueServiceL()
{
TSmbMusicAPSyncServerContentsServiceState retState = ESmbMusicAPSyncServerContetnsServiceStateContinue;
switch(iState)
{
///<梫媮側偟忬懺
case EIdleState:
//張棟柍偟偱廔椆偡傞
retState = CompleteThisService(KErrServerBusy);
break;
///<傾僀僥儉惗惉忬懺
case ECreateItemState:
//嶍彍張棟傊堏峴偟傑偡
retState = PrePareDeleteItemsL();
break;
///<傾僀僥儉嶍彍忬懺
case EDeleteState:
//嶍彍屻偺屻巒枛
CheckDeleteItems();
//傾僀僥儉嶍彍張棟傪懕偗傞偐廔偊傞偐傪敾抐偡傞
retState = DeleteItemContinueORFinish();
break;
default:
//婎杮揑偵偙偙偵偔傞偙偲偼側偄偺偱廔椆偟傑偡
retState = CompleteThisService(KErrServerBusy);
break;
}
return retState;
}
/**
* 僉儍儞僙儖梫媮偵懳偡傞僒乕價僗僉儍儞僙儖敾掕
*
* @param[in] aCancelEvent 僉儍儞僙儖梫媮偝傟偨僀儀儞僩僞僀僾
*
* @return 僉儍儞僙儖傪庴偗傞偐偳偆偐偺敾掕(ETrue:梫媮僉儍儞僙儖丄EFalse:梫媮傪僉儍儞僙儖偟側偄)
**/
TBool CSmbMusicAPSyncServerContentsServiceDeleteItem::CheckCancel(TSmbMusicAPSyncServerFunction aCancelEvent)
{
if (aCancelEvent == ESmbMusicAPSyncServerFuncCancelDeleteItems)
{ // 帺僒乕價僗偺僉儍儞僙儖梫媮偺応崌
TInt log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber14;
_LIT(KContentsServiceDeleteItem14, "SyncServerContentsServiceDeleteItem::CheckCancel");
SmbMusicAPSyncServerLog(iRLog, log, ELogLevelLowest, KContentsServiceDeleteItem14);
return ETrue;
}
return EFalse;
}
/**
* 梫媮儊僢僙乕僕偺撪梕傪僐僺乕偡傞
* @param [in] 側偟
* @return 側偟
*/
void CSmbMusicAPSyncServerContentsServiceDeleteItem::ReadParamFromMsgL()
{
//梫媮儊僢僙乕僕偺撪梕傪惗惉
iReqPkg = new(ELeave)TSmbMusicAPSyncServerContentsReqPkg;
iReqTPckg = new(ELeave)TPckg<TSmbMusicAPSyncServerContentsReqPkg>(*iReqPkg);
//庴怣儊僢僙乕僕傪僐僺乕偡傞
iRMessage.ReadL(KSmbMusicAPSyncEngineMsgIn1, *iReqTPckg);
if(EFalse != iReqPkg->iData.iDeleteItem.iItems.iAllItem)
{
//慡審嶍彍偺応崌丄攝楍偑梡堄偝傟偰偄側偄偺偱儊僢僙乕僕偺Read偼偙偙傑偱
return;
}
//嶍彍偡傞傾僀僥儉攝楍傪僐僺乕偟傑偡
TInt leng = iRMessage.GetDesLength(KSmbMusicAPSyncEngineMsgIn3);
iDeleteCount = leng / sizeof(TInt);
//嶍彍懳徾傾僀僥儉偺屄悢傪挷傋傑偡
if(iDeleteCount > 0)
{
iIndex = new(ELeave)RArray<TInt>(iDeleteCount);
TInt dummyInt = 1;
//僨傿僗僋儕僾僞偺僐僺乕愭椞堟傪惗惉偟傑偡
for(TInt i = 0; i < iDeleteCount; i++)
{
iIndex->AppendL(dummyInt);
}
TPtr8 arrayData((TUint8*)&(*iIndex)[0], leng);
//庴怣儊僢僙乕僕傪僐僺乕偡傞
iRMessage.ReadL(KSmbMusicAPSyncEngineMsgIn3, arrayData);
//MW-傾僾儕娫偱Index偺僘儗偑偁傞偺偱曗惓偡傞
for(TInt j = 0; j < iDeleteCount; j++)
{
(*iIndex)[j]++;
}
}
else
{
//嶍彍懳徾偑巜掕偝傟偰偄側偄偺偱張棟傪拞抐偟傑偡
//偲傝偁偊偢儘僌偱傕
TInt log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber07;
_LIT(KContentsServiceDeleteItem07, "SyncServerContentsServiceDeleteItem::ReadParamFromMsgL Error = %d");
SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceDeleteItem07, leng);
//堷悢偑晄惓側偺偱Leave偟傑偡
User::Leave(KErrArgument);
}
}
/**
* 傾僀僥儉嶍彍張棟偺慜弨旛
* @param [in] 側偟
* @return 僒乕價僗偺忬懺
*/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceDeleteItem::
PrePareDeleteItemsL()
{
TSmbMusicAPSyncServerContentsServiceState retState =
ESmbMusicAPSyncServerContetnsServiceStateContinue;
CSmbMusicMWLibMusicItem* item = NULL;
TInt cnt = iLibImteArray->Count();
if(1 > cnt)
{
//偲傝偁偊偢儘僌偱傕
TInt log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber01;
_LIT(KContentsServiceDeleteItem01, "SyncServerContentsServiceDeleteItem::PrePareDeleteItemsL NotFoundCreatedItem %d");
SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceDeleteItem01, cnt);
//傾僀僥儉偑庢摼偱偒側偐偭偨
DeleteObject();
//婎杮揑偵偙偙偵偔傞偙偲偼側偄偺偱廔椆偟傑偡
retState = CompleteThisService(KErrArgument);
return retState;
}
//嶍彍偡傞傾僀僥儉Index攝楍偺撉傒崬傒埵抲
TInt indexOffset = (*iIndex)[iGetItemCount];
//惗惉偟偨傾僀僥儉攝楍偐傜嶍彍懳徾傾僀僥儉傪揈弌偡傞
for(TInt i = 0; i < cnt; i++)
{
//嶍彍偡傞傾僀僥儉偺Index偵埵抲偡傞傾僀僥儉傪揈弌偡傞
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -