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

📄 smbmusicapsonginfomodel.cpp

📁 索爱手机代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPSongInfoModel.cpp
//
// Description:
//	儈儏乕僕僢僋梡徻嵶忣曬昞帵儌僨儖僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅				|曄峏幰			|撪梕
//---------------------------------------------------------------------------
//2006/04/14		|SEMCJ嬥岝		|怴婯嶌惉
//2006/09/28		|SEMCJ憊		|SD_Bind僼僅儖僟撪偺UIM幚峴惂尷僼傽僀儖偺堦晹昞帵崁栚傪屌掕崁栚偵偡傞傛偆懳墳(i-keeper TRK No.4227懳墳)
//2006/09/28		|SEMCJ憊		|旕僒億乕僩僐儞僥儞僣偺徻嵶忣曬昞帵偵幐攕偡傞嵺偵丄僄儔乕僟僀傾儘僌傪昞帵偡傞張棟傪捛壛(i-keeper TRK No.5785懳墳)
//2006/09/28		|SEMCJ憊		|SD僶僀儞僪僐儞僥儞僣偵偰丄僿僢僟堎忢偺僐儞僥儞僣偺徻嵶忣曬昞帵偵幐攕偡傞嵺偵丄僄儔乕僟僀傾儘僌傪昞帵偡傞張棟傪捛壛(i-keeper TRK No.7438懳墳)
//2007/04/06		|SEMCJ汭弐		|徻嵶忣曬曇廤偺捛壛
//2007/04/10		|SEMCJ汭弐		|嵞惗晄壜嬋偺拝怣壒愝掕晄壜偺懳墳偺偨傔丄CSmbMusicMWLibSongItem::FilePath偱庢摼偺暥帤楍傪TSmbMusicAPSongInfoDetailInfomation偵捛壛
//2007/05/23		|SEMCJ汭弐		|Log偺error抣傪廋惓偡傞
//2007/06/13		|SEMCJ汭弐		|徻嵶忣曬傪嵞庢摼偺偨傔丄傕偲偺徻嵶忣曬傪嶍彍偡傞丅乮偦偆偟側偗傟偽丄CSmbMusicMWLibDetailSongInfo::DetailInformation(...)偱偼KErrArgument傪曉媝壜擻惈偑偁傞丅乯
//2007/07/05		|SEMCJ汭弐		|CSmbMusicAPSongInfoReflectEditInfoAPIItem偵戙傢傝偨傔丄CSmbMusicAPSongInfoUpdateInfoAPIItem傪嶍彍
//2007/08/09		|SEMCJ汭弐		|D_82400010663傛傝丄1. Model::APIRequestCompleteL娭悢偑奺ActiveObject偺RunL()偵屇偽傟傞偨傔丄Model::APIRequestCompleteL娭悢偱偦偺ActiveObject傪嶍彍偟側偄傛偆偵廋惓丟 2. 奺旕摨婜梫媮偑姰椆偟偨偐偳偆偐偺僠僃僢僋偱丄ActiveObject::IsActive()傪捛壛

#include "SmbMusicAPSongInfoModel.h"
//#include "SmbMusicAPSongInfoNotifyAPIItem.h"
#include "SmbMusicAPSongInfoCreateAPIItem.h"
//DEL-S MAEJI
//#include "SmbMusicAPSongInfoGetPlayDispInfoAPIItem.h"
//DEL-E MAEJI
#include "SmbMusicAPSongInfoGetDetailInfoAPIItem.h"
//DEL-S 汭弐 PTX824偱偼CSmbMusicAPSongInfoReflectEditInfoAPIItem偵戙傢傝傑偟偨
//#include "SmbMusicAPSongInfoUpdateInfoAPIItem.h"
//DEL-E 汭弐
//ADD-S 汭弐 徻嵶忣曬曇廤偺捛壛
#include "SmbMusicAPSongInfoGetEditInfoAPIItem.h"
#include "SmbMusicAPSongInfoReflectEditInfoAPIItem.h"
#include "SmbMusicAPSongInfoInterfaceParam.h"
//ADD-E 汭弐

USING_NAMESPACE_SEMCJ
///////////////////////////////////////////////////////////////////////////////
/**
 * 僐儞僗僩儔僋僞
 *
 * @param[in]		aLog	儘僌僒乕僶偺僙僢僔儑儞
 */
CSmbMusicAPSongInfoModel::CSmbMusicAPSongInfoModel(RLog& aLog)
	:iLog(aLog)
	{
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPSongInfoModel::~CSmbMusicAPSongInfoModel()
	{
	iModelObserver.Close();
//MODIFY-S MAEJI

//ADD-S 汭弐 徻嵶忣曬曇廤偺捛壛
	delete iReflectEditInfoAPIItem;
	delete iGetEditInfoAPIItem;
	delete iEditInfo;
//ADD-E 汭弐

//	delete iDetailInfo.iDispSongInfo;		//DEL BY MAEJI
	delete iDetailInfo.iDetailSongInfo;
	delete iGetDetailInfoAPIItem;
//	delete iGetPlayDispInfoAPIItem; 		//DEL BY MAEJI
//DEL-S 汭弐 PTX824偱偼CSmbMusicAPSongInfoReflectEditInfoAPIItem偵戙傢傝傑偟偨
//	delete iUpdateInfoAPIItem;
//DEL-E 汭弐
	delete iCreateAPIItem;
//	delete iNotifyAPIItem;
	delete iSongItem;

	if(NULL != iMWLibSession)
		{
		iMWLibSession->Disconnect();
		}
	delete iMWLibSession;
//MODIFY-E MAEJI
	}

/**
 * 2僼僃乕僘僐儞僗僩儔僋僞
 */
void CSmbMusicAPSongInfoModel::ConstructL()
	{
	//忣曬娗棟峔憿懱偺儊儞僶傪惗惉偡傞
//DEL-S MAEJI
//	iDetailInfo.iDispSongInfo = CSmbMusicMWLibPlayingDispInfo::NewL();
//DEL-E
	iDetailInfo.iDetailSongInfo = CSmbMusicMWLibDetailSongInfo::NewL();

//ADD-S 汭弐 徻嵶忣曬曇廤偺捛壛
	iDetailInfo.iEditPattern = ESmbMusicAPSongInfoEditNone;
//ADD-E 汭弐
	}

/**
 * MW儔僀僽儔儕偲偺僙僢僔儑儞傪愙懕偡傞
 */
void CSmbMusicAPSongInfoModel::ConnectMWSessionL()
	{
	//僙僢僔儑儞愙懕
	iMWLibSession = new(ELeave) RSmbMusicMWLibSession();
	TInt result = iMWLibSession->Connect();
	if(KErrNone != result)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo209, ELogLevelHighest, result, KSmbMusicAPSongInfoLogMWLibSessionConnectErr);
		//儕乕僽張棟
		User::Leave(result);
		}

	}

/**
 * 傾僀僥儉惗惉
 *
 * @param[in]	aSongId		嬋ID
 * @return	僄儔乕掕悢
 */
TInt CSmbMusicAPSongInfoModel::CreateSongItemL(TUint64 aSongId)
	{
	if(NULL != iCreateAPIItem)
		{
		//偡偱偵梫媮拞偺応崌偼丄堦扷僉儍儞僙儖偡傞
		iCreateAPIItem->Cancel();
		}
	else
		{
		//傑偩梫媮偟偰偄側偄偨傔丄梫媮僋儔僗傪惗惉偡傞
		iCreateAPIItem = new(ELeave) CSmbMusicAPSongInfoCreateAPIItem(*iMWLibSession, *this, iLog);
		}
	
	//梫媮僋儔僗偵嬋傾僀僥儉偺惗惉奐巒傪梫媮偡傞
	TRAPD(error, iSongItem = CSmbMusicMWLibSongItem::NewL());
	if(KErrNone != error)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo201, ELogLevelHighest, error, KSmbMusicAPSongInfoLogNewErr);
		//儕乕僽張棟
		User::Leave(error);
		}	

	return iCreateAPIItem->Start(aSongId, *iSongItem);
	}

/**
 * 徻嵶忣曬傪MW偐傜嵞庢摼偡傞
 *
 * @return	僄儔乕掕悢
 */
TInt CSmbMusicAPSongInfoModel::ReacquisitionDetailInfoL()
	{
//ADD-S 汭弐 徻嵶忣曬傪嵞庢摼偺偨傔丄傕偲偺徻嵶忣曬傪嶍彍偡傞丅乮偦偆偟側偗傟偽丄CSmbMusicMWLibDetailSongInfo::DetailInformation(...)偱偼KErrArgument傪曉媝壜擻惈偑偁傞丅乯
	if(NULL != iDetailInfo.iDetailSongInfo)
		{
		delete iDetailInfo.iDetailSongInfo;
		}
	iDetailInfo.iDetailSongInfo = CSmbMusicMWLibDetailSongInfo::NewL();
//ADD-E

	//徻嵶忣曬峏怴梫媮傪奐巒偡傞
	if(NULL != iGetDetailInfoAPIItem)
		{
		//偡偱偵梫媮拞偺応崌偼丄堦扷僉儍儞僙儖偡傞
		iGetDetailInfoAPIItem->Cancel();
		}
	else
		{
		//傑偩梫媮偟偰偄側偄偨傔丄梫媮僋儔僗傪惗惉偡傞
		iGetDetailInfoAPIItem = new(ELeave) CSmbMusicAPSongInfoGetDetailInfoAPIItem(*iSongItem, *this, iLog);
		}

	//梫媮僋儔僗偵徻嵶忣曬偺庢摼傪梫媮偡傞
	return iGetDetailInfoAPIItem->Start(*iDetailInfo.iDetailSongInfo);
	}

/**
 * 徻嵶忣曬庢摼
 *
 * @return	徻嵶忣曬娗棟僋儔僗
 */
const TSmbMusicAPSongInfoDetailInfomation& CSmbMusicAPSongInfoModel::DetailInfo()
	{
	return iDetailInfo;
	}

//DEL-S 汭弐 PTX824偱偼CSmbMusicAPSongInfoReflectEditInfoAPIItem偵戙傢傝傑偟偨
// /**
//  * 徻嵶忣曬峏怴
//  *
//  * @param[in]	aEditInfo	峏怴撪梕
//  * @return	僄儔乕掕悢
//  */
// TInt CSmbMusicAPSongInfoModel::SetEditInfoL(TSmbMusicMWLibSongEditInfo& aEditInfo)
// 	{
// 	return KErrNone; //PTX810偱偼偙偺梫媮偼偙側偄丅偲傝偁偊偢丄傾僋僥傿僽偵偝偣側偄傛偆偵儌僨儖偱懳墳
	
// 	if(NULL != iUpdateInfoAPIItem)
// 		{
// 		//偡偱偵梫媮拞偺応崌偼丄堦扷僉儍儞僙儖偡傞
// 		iUpdateInfoAPIItem->Cancel();
// 		}
// 	else
// 		{
// 		//傑偩梫媮偟偰偄側偄偨傔丄梫媮僋儔僗傪惗惉偡傞
// 		iUpdateInfoAPIItem = new(ELeave) CSmbMusicAPSongInfoUpdateInfoAPIItem(*iSongItem, *this, iLog);
// 		}
	
// 	//梫媮僋儔僗偵嬋傾僀僥儉偺惗惉奐巒傪梫媮偡傞
// 	return iUpdateInfoAPIItem->Start(aEditInfo);
// 	}
//DEL-E 汭弐

/**
 * 儌僨儖僆僽僓乕僶偺搊榐
 *
 * @param[in]		aObserver		儌僨儖僆僽僓乕僶億僀儞僞乮View億僀儞僞乯
 */
void CSmbMusicAPSongInfoModel::SetModelObserver(MSmbMusicAPSongInfoModelObserver* aObserver)
	{
	iModelObserver.Append(aObserver);
	}

//DEL-S 汭弐 PTX824偱偼CSmbMusicAPSongInfoReflectEditInfoAPIItem偵戙傢傝傑偟偨
// /**
//  * 徻嵶忣曬峏怴偺僉儍儞僙儖
//  */
// void CSmbMusicAPSongInfoModel::CancelSetEditInfo()
// 	{
// 	if(NULL != iUpdateInfoAPIItem)
// 		{
// 		delete iUpdateInfoAPIItem;
// 		iUpdateInfoAPIItem = NULL;
// 		}
// 	}
//DEL-E 汭弐

/**
 * API傊偺梫媮姰椆捠抦
 *
 * @param[in]		aKind		梫媮偑姰椆偟偨API庬暿
 */
void CSmbMusicAPSongInfoModel::APIRequestCompleteL(TSmbMusicAPSongInfoAPIKind aKind)
	{
	TInt result = KErrNone;
	switch(aKind)
		{
		//嬋傾僀僥儉惗惉姰椆捠抦偺庴怣
		case ECreateAPI :
			{
//DEL-S 汭弐 D_82400010663傛傝丄Model::APIRequestCompleteL娭悢偑奺ActiveObject偺RunL()偵屇偽傟傞偨傔丄Model::APIRequestCompleteL娭悢偱偦偺ActiveObject傪嶍彍偟側偄傛偆偵廋惓
// 			//嬋傾僀僥儉僋儔僗惗惉梡傾僋僥傿僽僆僽僕僃僋僩僋儔僗傪攋婞偡傞
// 			delete iCreateAPIItem;
// 			iCreateAPIItem = NULL;
//DEL-E 汭
			
			//徻嵶忣曬庢摼梫媮僋儔僗傪惗惉偡傞
			iGetDetailInfoAPIItem = new(ELeave) CSmbMusicAPSongInfoGetDetailInfoAPIItem(*iSongItem, *this, iLog);
			
			//梫媮僋儔僗偵徻嵶忣曬偺庢摼傪梫媮偡傞
			result = iGetDetailInfoAPIItem->Start(*iDetailInfo.iDetailSongInfo);
			if(KErrNone != result)
				{
				//儘僌弌椡
				SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo202, ELogLevelHighest, result, KSmbMusicAPSongInfoLogGetDetailInfoReturnErr);
				//儕乕僽張棟
				User::Leave(result);
				}

//DEL-S MAEJI	EGetDetailAPI庴怣帪偵奿擺偡傞
//			//忣曬娗棟峔憿懱偺儊儞僶偵忣曬傪捛壛偡傞
//			iDetailInfo.iBitRate = iSongItem->AudioInformation()->iBitRate;			//價僢僩儗乕僩
//			iDetailInfo.iIncompleteContents = iSongItem->IncompleteContents();		//晄姰慡僼傽僀儖忣曬
//			iSongItem->Whereabouts(iDetailInfo.iWhereabouts);						//奿擺応強
//			iDetailInfo.iContentsId = iSongItem->ContentsId();	
//DEL-E
			}
			break;

		//徻嵶忣曬庢摼姰椆捠抦偺庴怣
		case EGetDetailAPI :
			{
//DEL-S 汭弐 D_82400010663傛傝丄Model::APIRequestCompleteL娭悢偑奺ActiveObject偺RunL()偵屇偽傟傞偨傔丄Model::APIRequestCompleteL娭悢偱偦偺ActiveObject傪嶍彍偟側偄傛偆偵廋惓
// 			//徻嵶忣曬庢摼梡傾僋僥傿僽僆僽僕僃僋僩僋儔僗傪攋婞偡傞
// 			delete iGetDetailInfoAPIItem;
// 			iGetDetailInfoAPIItem = NULL;
//DEL-E 汭

//DEL-S MAEJI	
//			//嬋嵞惗拞忣曬庢摼梫媮僋儔僗傪惗惉偡傞
//			iGetPlayDispInfoAPIItem = new(ELeave) CSmbMusicAPSongInfoGetPlayDispInfoAPIItem(*iSongItem, *this, iLog);
//
//			//梫媮僋儔僗偵嬋嵞惗拞忣曬偺庢摼傪梫媮偡傞
//			result = iGetPlayDispInfoAPIItem->Start(*iDetailInfo.iDispSongInfo);
//			if(KErrNone != result)
//				{
//				//儘僌弌椡
//				SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo038, ELogLevelHighest, result, KSmbMusicAPSongInfoLogNotifyStopAppResultErr);
//				//儕乕僽張棟
//				User::Leave(result);
//				}
//DEL-E

//ADD-S MAEJI
			//忣曬娗棟峔憿懱偺儊儞僶偵忣曬傪捛壛偡傞
			iDetailInfo.iBitRate = iSongItem->AudioInformation()->iBitRate;			//價僢僩儗乕僩
			iDetailInfo.iIncompleteContents = iSongItem->IncompleteContents();		//晄姰慡僼傽僀儖忣曬
			iSongItem->Whereabouts(iDetailInfo.iWhereabouts);						//奿擺応強
			iDetailInfo.iContentsId = iSongItem->ContentsId();						//僐儞僥儞僣ID
//ADD-S 憊 TRK4227
			iSongItem->UimConformation(iDetailInfo.iUimInfo);						//UIM揔崌忣曬
//ADD-E
//ADD-S 汭弐  嵞惗晄壜嬋偺拝怣壒愝掕晄壜偺懳墳
			iDetailInfo.iFilePath = iSongItem->FilePath();
//ADD-E

			//懳徾傾僀僥儉偑峏怴偝傟偨偨傔丄奺價儏乕偵捠抦偡傞
			TRAPD(error, HandleChangeModelsL(EGetDetailInfo));
			if(KErrNone != error)
				{
				//儘僌弌椡
//MODIFY-S 汭弐 Log偺error抣傪廋惓偡傞
//				SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo203, ELogLevelHighest, result, KSmbMusicAPSongInfoLogGetDetailChangeModelsLErr);
				SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo203, ELogLevelHighest, error, KSmbMusicAPSongInfoLogGetDetailChangeModelsLErr);
//MODIFY-E 汭弐
				//儕乕僽張棟
				User::Leave(error);
				}
//ADD-E
			}
			break;

//ADD-S 汭弐 徻嵶忣曬曇廤偺捛壛
		//徻嵶忣曬曇廤椞堟偺庢摼偑姰椆捠抦偺庴怣
		case EGetEditInfoAPI :
			{
//DEL-S 汭弐 D_82400010663傛傝丄Model::APIRequestCompleteL娭悢偑奺ActiveObject偺RunL()偵屇偽傟傞偨傔丄Model::APIRequestCompleteL娭悢偱偦偺ActiveObject傪嶍彍偟側偄傛偆偵廋惓
// 			//曇廤椞堟庢摼梡傾僋僥傿僽僆僽僕僃僋僩僋儔僗傪攋婞偡傞
// 			delete iGetEditInfoAPIItem;
// 			iGetEditInfoAPIItem = NULL;
//DEL-E 汭

			//懳徾傾僀僥儉偑峏怴偝傟偨偨傔丄奺價儏乕偵捠抦偡傞
			TRAPD(error, HandleChangeModelsL(EGetEditInfo));
			if(KErrNone != error)
				{
				//儘僌弌椡
				SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo250, ELogLevelHighest, error, KSmbMusicAPSongInfoLogGetEditInfoChangeModelsLErr);
				//儕乕僽張棟
				User::Leave(error);

⌨️ 快捷键说明

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