⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbmusicapsyncservercontentsservicedeleteitem.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		if( (i + indexOffset) == (*iIndex)[iGetItemCount])
			{
			//嶍彍懳徾傾僀僥儉傪拪弌偡傞
			item = iLibImteArray->GetMusicItemL(i);

			if(NULL == item)
				{
				//偲傝偁偊偢儘僌偱傕
				TInt log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber02;
				_LIT(KContentsServiceDeleteItem02, "SyncServerContentsServiceDeleteItem::PrePareDeleteItemsL NotFoundCreatedItem");
				SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceDeleteItem02);

				//傾僀僥儉偑庢摼偱偒側偐偭偨
				DeleteObject();
				//婎杮揑偵偙偙偵偔傞偙偲偼側偄偺偱廔椆偟傑偡
				retState = CompleteThisService(KErrArgument);
				return retState;
				}

			// 昁梫偵墳偠偰儗僕儏乕儉忣曬傪攋婞偡傞
			DeleteResume(item);

			//嶍彍懳徾偺傾僀僥儉僴儞僪儖傪庢摼偡傞
			iItemHandle.AppendL(item->Handle());
			//嶍彍慜偵儕僗僩偐傜庢摼偟偨傾僀僥儉悢傪僀儞僋儕儊儞僩偡傞
			iGetItemCount++;
			//嶍彍懳徾傾僀僥儉傪戅旔偡傞
			iLibItem.AppendL(item);
			if(iDeleteCount == iGetItemCount)
				{
				//婛偵嶍彍偡傞傾僀僥儉傪摿掕偟偨偺偱儖乕僾傪敳偗傑偡
				break;
				}
			}
		}

	//嶍彍懳徾傾僀僥儉傪慡偰庢摼偟偨偐斲偐丠
	if(iDeleteCount == iGetItemCount)
		{
		//儕僗僩偺傾僀僥儉忣曬傪慡偰攋婞偡傞(嶍彍偵傛偭偰偳偺儕僗僩偵塭嬁偑弌偰偄傞偐傢偐傜側偄偨傔丄傾僀僥儉偼慡偰嶍彍偡傞)
		iScreenData.DeleteAllItem();

		//傾僀僥儉嶍彍幚峴
		return 	DeleteItemsL();
		}
	else
		{
		//嶍彍懳徾傾僀僥儉傪惗惉偡傞
		return CreateListItemsL();
		}
	}

/**
 *  傾僀僥儉嶍彍張棟幚峴
 * @param [in]	側偟
 * @return		張棟寢壥
 */
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceDeleteItem::DeleteItemsL()
	{
	TInt cnt = iItemHandle.Count();
	//1夞偱嶍彍偡傞傾僀僥儉悢傪惂尷偟傑偡
	if(cnt > KSmbMusicAPSyncServerDeleteNumberAtOnce)
		{
		cnt = KSmbMusicAPSyncServerDeleteNumberAtOnce;
		}
	if(NULL != iDeleteHandle)
		{
		//嶍彍偟傑偡
		delete iDeleteHandle ;
		iDeleteHandle = NULL;
		}
	//嵞傃嶍彍傾僀僥儉僴儞僪儖偺奿擺攝楍傪惗惉偟傑偡
	iDeleteHandle = new(ELeave)CArrayFixFlat<TInt>(cnt);

	//嶍彍傪幚峴偡傞傾僀僥儉偺僴儞僪儖傪庢傝弌偟傑偡
	for(TInt i = 0; i < cnt; i++)
		{
		iDeleteHandle->AppendL(iItemHandle[i]);
		}

	//嶍彍偡傞慜偺傾僀僥儉悢傪曐懚偡傞
	cnt = iList->GetItemCount();

	//嶍彍傪幚峴偟傑偡
	TInt res = iFunc.DeleteItems(*iDeleteHandle, iStatus);
	if(KErrNone != res)
		{
		//偲傝偁偊偢儘僌偱傕
		TInt log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber05;
		_LIT(KContentsServiceDeleteItem05, "SyncServerContentsServiceDeleteItem::DeleteItemsL Delete Error = %d");
		SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceDeleteItem05, res);

		//強桳偟偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
		DeleteObject();

		//張棟傪廔椆偡傞
		return CompleteThisService(res);
		}

	//AO傪傾僋僥傿僽偵偡傞
	Start();
	//傾僀僥儉嶍彍忬懺偵慗堏
	iState = EDeleteState;

	//嶍彍偡傞慜偺傾僀僥儉悢傪峏怴偡傞
	iTmpItemCount = cnt;

	return ESmbMusicAPSyncServerContetnsServiceStateContinue;
	}

/**
 *  傾僀僥儉嶍彍姰椆偺僠僃僢僋
 * @param [in]	側偟
 * @return		側偟
 */
void CSmbMusicAPSyncServerContentsServiceDeleteItem::CheckDeleteItems()
	{
	TInt cnt = iDeleteHandle->Count();
	for(TInt i = 0; i < cnt; i++)
		{
		//嶍彍偑姰椆偟偨傾僀僥儉偺僴儞僪儖傪幪偰傑偡
		iItemHandle.Remove(0);
		}
	//嶍彍偑姰椆偟偨傾僀僥儉悢傪峏怴偟傑偡
	iCompleteDeleteCount = iCompleteDeleteCount + cnt;
	}

/**
 *  嶍彍姰椆張棟
 * @param [in]	側偟
 * @return		張棟寢壥
 */
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceDeleteItem::CompleteDelete(TInt aResult)
	{
	//夋憸僨乕僞偵傾僀僥儉偺搊榐嶍彍傪埶棅
//	iImageData.DeleteItem(iListHandle, iIndex);
	//僾儗僀儕僗僩僨乕僞偵傾僀僥儉偑偁傟偽嶍彍偡傞
//	iPLOrderData.DeleteItem(iListHandle, iIndex);

	//強桳偟偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
	DeleteObject();

	//張棟傪廔椆偡傞
	return CompleteThisService(aResult);
	}

/**
 *  梫媮張棟姰椆
 * @param [in]	aResult	張棟寢壥
 * @return		側偟
 */
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceDeleteItem::
									CompleteThisService(TInt aResult)
	{

	//墳摎傪敪峴偡傞
	MessageComplete(aResult);

	//埨掕忬懺偵栠偡
	iState = EIdleState;

	return ESmbMusicAPSyncServerContetnsServiceStateEnd;
	}

/**
 *  傾僀僥儉惗惉偺拞巭
 * @param [in]	側偟
 * @return		側偟
 */
void CSmbMusicAPSyncServerContentsServiceDeleteItem::CancelCreateItem()
	{
	//儕僗僩偵傾僀僥儉偺惗惉拞巭傪埶棅偡傞
	iList->CancelCreateNewItem();
	}

/**
 *  傾僀僥儉嶍彍偺拞巭
 * @param [in]	側偟
 * @return		側偟
 */
void CSmbMusicAPSyncServerContentsServiceDeleteItem::CancelDeleteItem()
	{
	//嶍彍傪拞巭偟傑偡
	iFunc.CancelDeleteItems();

	//嶍彍姰椆張棟
	CheckErrState();

	//嶍彍僀儀儞僩傪傾僾儕偵捠抦偡傞
	NotifyEvent();
	}

/**
 *  儗僕儏乕儉忣曬傪嶍彍偡傞
 * @param[in]	aItem			嶍彍偡傞傾僀僥儉
 * @return		側偟
 **/
void CSmbMusicAPSyncServerContentsServiceDeleteItem::DeleteResume(CSmbMusicMWLibMusicItem* aItem)
	{
	//嶍彍懳徾傪挷傋傞
	if(ESmbMusicMWLibItemTypePL == aItem->ItemType())
		{
		//僾儗僀儕僗僩偺応崌
		CSmbMusicAPSyncServerContentsList*	list = iScreenData.GetLastListFromPlayScreenTrace();

		if(list)
			{
			CSmbMusicMWLibMusicItem& item = list->GetListItem();
			if( *aItem == item )
				{
				// 儗僕儏乕儉忣曬傪嶍彍偡傞
				iModel.DeleteResume();
				//嶍彍偡傞儕僗僩偵娷傑傟傞嵞惗嬋忣曬傪攋婞偟傑偡
				TInt handle = list->GetListHandle();
				iManagers.PlaySongInfoManager().ClearPlaySongData(&handle);
				//夋憸忣曬傪攋婞偟傑偡
				iManagers.ImageDataManager().AllClear();
				}
			}
		}
	else
		{
		//嬋傾僀僥儉偺応崌丄撪晹偱曐帩偟偰偄傞僨乕僞傪嶍彍偟傑偡

		// 儗僕儏乕儉忣曬傪嶍彍偡傞
		iModel.DeleteResume();
		//嵞惗嬋忣曬傪攋婞偟傑偡
		iManagers.PlaySongInfoManager().ClearPlaySongData(NULL);
		//夋憸忣曬傪攋婞偟傑偡
		iManagers.ImageDataManager().AllClear();
		}
	}


/**
 *  嶍彍拞偺僄儔乕敪惗偱張棟傪宲懕偡傞偐傪敾抐偡傞
 * @param[in]	側偟
 * @return		ETrue丗張棟傪宲懕/EFalse丗僄儔乕廔椆
 **/
TBool CSmbMusicAPSyncServerContentsServiceDeleteItem::CheckErrState()
	{
	//惓忢偵嶍彍偟偨傾僀僥儉悢
	TInt deleteItemCnt =  iTmpItemCount - iList->GetItemCount();
	for(TInt i = 0; i < deleteItemCnt; i++)
		{
		//嶍彍偑姰椆偟偨僴儞僪儖傪幪偰傑偡
		iItemHandle.Remove(0);
		}
	//嶍彍偑姰椆偟偨傾僀僥儉悢傪峏怴
	iCompleteDeleteCount = iCompleteDeleteCount + deleteItemCnt;

	//嶍彍枹幚峴傾僀僥儉偑偁傟偽幐攕偟偨偲傒側偟傑偡
	if(iItemHandle.Count() > 0)
		{
		//嶍彍偱偒側偐偭偨傾僀僥儉傪戅旔偟傑偡
		iFailItems.Append(iItemHandle[0]);
		//嶍彍懳徾偐傜奜偟傑偡
		iItemHandle.Remove(0);
		}

	if(iItemHandle.Count() != 0)
		{
		//嶍彍張棟傪宲懕
		return ETrue;
		}
	//嶍彍懳徾偺傾僀僥儉偑側偄偺偱廔椆
	return EFalse;

	}

/**
 *  強桳偟偰偄傞傾僀僥儉傪嶍彍偡傞
 * @param[in]	側偟
 * @return		側偟
 **/
void CSmbMusicAPSyncServerContentsServiceDeleteItem::DeleteObject()
	{
	delete iReqPkg;
	iReqPkg = NULL;

	delete iReqTPckg;
	iReqTPckg = NULL;

	if(NULL != iIndex)
		{
		iIndex->Close();
		}
	delete iIndex;
	iIndex = NULL;

	delete iDeleteHandle;
	iDeleteHandle = NULL;

	iItemHandle.Close();

	delete iLibImteArray;
	iLibImteArray = NULL;

	iLibItem.ResetAndDestroy();
	iLibItem.Close();

	iFailItems.Close();
	}

/**
 *  嶍彍懳徾偺嬋傾僀僥儉傪惗惉偡傞
 * @param[in]	側偟
 * @return		張棟寢壥
 **/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceDeleteItem::CreateListItemsL()
	{
	//MW偐傜庢摼偡傞傾僀僥儉偺愭摢Index
	TInt startIndex = (*iIndex)[iGetItemCount];
	//儕僗僩偐傜庢摼偡傞傾僀僥儉悢
	TInt deleteCount = iDeleteCount - iGetItemCount;
	//嶍彍懳徾偺傾僀僥儉偑侾審偺帪/暋悢審偺応崌偱張棟偑暘偐傟傞
	if(deleteCount > 1)
		{
		//堦搙偵庢摼偱偒傞傾僀僥儉偼50審
		deleteCount = (*iIndex)[iDeleteCount - 1] - (*iIndex)[iGetItemCount] + 1;

		//嶍彍懳徾傾僀僥儉偺嵟彫Index偲嵟戝Index偑50埲忋側傜偽
		if( deleteCount > KSmbMusicAPSyncServerGetItemNumberAtOnce )
			{
			//堦搙偵庢摼偱偒傞傾僀僥儉偼50審傑偱
			deleteCount = KSmbMusicAPSyncServerGetItemNumberAtOnce;
			}
		}

	//傾僀僥儉攝楍傪強桳偟偰偄傟偽嶍彍偡傞
	if(NULL != iLibImteArray)
		{
		delete iLibImteArray;
		iLibImteArray = NULL;
		}

	//儕僗僩偵傾僀僥儉偺惗惉傪埶棅偡傞
	iLibImteArray = CSmbMusicMWLibItemArray::NewL(deleteCount);
	TInt res = iList->CreateNewItem(*iLibImteArray, startIndex, deleteCount, iStatus);
	if(KErrNone != res)
		{
		//傾僀僥儉偺庢摼偵幐攕
		TInt log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber10;
		_LIT(KContentsServiceDeleteItem10, "SyncServerContentsServiceDeleteItem::CreateListItemsL Error = %d");
		SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceDeleteItem10, res);

		//強桳偟偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
		DeleteObject();

		//婎杮揑偵偙偙偵偔傞偙偲偼側偄偺偱廔椆偟傑偡
		return CompleteThisService(res);
		}
	//ActiveObject傪妶惈壔偡傞
	Start();
	//傾僀僥儉惗惉忬懺偵慗堏
	iState = ECreateItemState;

	//僒乕價僗張棟傪宲懕
	return ESmbMusicAPSyncServerContetnsServiceStateContinue;
	}


/**
 * 傾僀僥儉嶍彍張棟傪懕偗傞偐廔偊傞偐傪敾抐偡傞
 * @param[in]	側偟
 * @return		張棟寢壥
 **/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceDeleteItem::DeleteItemContinueORFinish()
	{
	TSmbMusicAPSyncServerContentsServiceState retState = ESmbMusicAPSyncServerContetnsServiceStateContinue;

	//嶍彍張棟傪幚峴偟偨傾僀僥儉悢偲嶍彍傪梫媮偝傟偨傾僀僥儉悢傪斾妑偡傞
	TInt deleteExeCount = iCompleteDeleteCount + iFailItems.Count();
	if(iDeleteCount == deleteExeCount)
		{
		//嶍彍張棟偑姰椆偟偨!

		//嶍彍僀儀儞僩傪傾僾儕偵捠抦偡傞
		NotifyEvent();

		//張棟寢壥
		TInt res = KErrNone;
		//嶍彍偱偒側偐偭偨傾僀僥儉偑偁傞偐傪僠僃僢僋偡傞
		if(0 != iFailItems.Count())
			{
			//搑拞偱嶍彍偵幐攕偟偨傾僀僥儉偼偁偭偨偑堦楢偺張棟偼姰椆偟偨
			TInt log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber08;
			_LIT(KContentsServiceDeleteItem08, "SyncServerContentsServiceDeleteItem::DeleteItemContinueORFinish KErrCompletion cnt = %d");
//  MODIFY-S  儘僌儗儀儖廋惓
			SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHigh, KContentsServiceDeleteItem08, iFailItems.Count());
//  MODIFY-E  儘僌儗儀儖廋惓
			//僋儔僀傾儞僩偵偼堦墳姰椆偟偨偱墳摎偟傑偡
			res = KErrCompletion;
			}
		//僋儔僀傾儞僩偵嶍彍張棟姰椆偺墳摎傪敪峴偡傞
		retState = CompleteDelete(res);
		}
	else
		{
		//嶍彍張棟傪宲懕偡傞
		//嶍彍懳徾傾僀僥儉偺僴儞僪儖傪曐帩偟偰偄傞偺偱嶍彍張棟傪宲懕偡傞
		TRAPD(error, retState = DeleteItemsL());
		if(KErrNone != error)
			{
			//Leave偟偨傜廔傢傝偱偡
			TInt log = EMusicAPSyncServerClassNumber_ContentsServiceDeleteItem | EMusicAPSyncServerLocationNumber11;
			_LIT(KContentsServiceDeleteItem11, "SyncServerContentsServiceDeleteItem::DeleteItemContinueORFinish Leave Error = %d");
			SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceDeleteItem11, error);

			//嶍彍僀儀儞僩傪傾僾儕偵捠抦偡傞
			NotifyEvent();

			//僋儔僀傾儞僩偵嶍彍張棟姰椆偺墳摎傪敪峴偡傞
			retState = CompleteDelete(error);
			}
		}
	return retState;
	}

/**
 * 傾僀僥儉嶍彍寢壥傪僋儔僀傾儞僩偵捠抦偡傞
 * @param[in]	側偟
 * @return		側偟
 **/
void CSmbMusicAPSyncServerContentsServiceDeleteItem::NotifyEvent()
	{
	if(0 == iCompleteDeleteCount)
		{
		//侾審傕嶍彍偟偰偄側偗傟偽捠抦偟側偄
		return;
		}

	//傾僀僥儉嶍彍傪僋儔僀傾儞僩偵捠抦偟傑偡丅
	if(EFalse != iAllDelete && iDeleteCount == iCompleteDeleteCount)
		{// 慡審嶍彍偺応崌偱丄慡審嶍彍偱偒偨応崌

		//傾僀僥儉嶍彍傪捠抦偟傑偡丅
		iManagers.AppNotifyManager().NotifyDeleteAllItem(iListHandle);
		}
	else if(iCompleteDeleteCount > 1)
		{// 暋悢審嶍彍偺応崌

		//傾僀僥儉嶍彍傪捠抦偟傑偡丅
		iManagers.AppNotifyManager().NotifyDeletePluralItem(iListHandle, iCompleteDeleteCount);
		}
	else
		{// 1審嶍彍偺応崌

		//傾僀僥儉嶍彍傪捠抦偟傑偡丅
		iManagers.AppNotifyManager().NotifyDeleteOneItem(iListHandle, (*iIndex)[0]);
		}
	}

// end of SmbMusicAPSyncServerContentsServiceDeleteItem.cpp

/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -