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

📄 smbmusicaplibmwanalyzeitem.cpp

📁 索爱手机代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPLibMWAnalyzeItem.cpp
//
// Description:
//	PTX810 Music傾僾儕 嫟捠儔僀僽儔儕 夋憸忣曬夝愅 僋儔僗
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅			|曄峏幰			|撪梕
//--------------+---------------+--------------------------------------
//2006/06/09	|娵壀			|怴婯嶌惉
//2006/08/19	|娵壀			|TRK6868懳墳
//2006/08/24	|憊				|TRK5700懳墳
//2006/09/09	|娵壀			|TRK8888懳墳
//2006/09/26	|娵壀			|TRK10436懳墳
//2006/10/18	|娵壀			|TRK11656懳墳
//-----PTX824---+---------------+--------------------------------------
//2007/03/29	|K3悪杮			|壧帉夋憸曐懚僼儔僌偺懳墳
//2007/03/30	|K3悪杮			|PTX824懳墳
//2007/06/23	|K3悪杮			|AAA夋憸懳墳


#ifndef __SMBMUSICAPLIBMWANALYZEITEM_H__
#include "SmbMusicAPLibMWAnalyzeItem.h"
#endif

#ifndef	__SMBMUSICAPLIBLOG_H__
#include "SmbMusicAPLibLog.h"
#endif


USING_NAMESPACE_SEMCJ

/**
 *  僐儞僗僩儔僋僞
 **/
CSmbMusicAPLibMWAnalyzeItem::CSmbMusicAPLibMWAnalyzeItem()
	:CActive(CActive::EPriorityStandard)
	{
	//傾僋僥傿僽僗働僕儏乕儔偵帺暘帺恎傪捛壛偡傞
	CActiveScheduler::Add(this);
	}


/**
 *  僨僗僩儔僋僞
 **/
CSmbMusicAPLibMWAnalyzeItem::~CSmbMusicAPLibMWAnalyzeItem()
	{
	//AO偺僉儍儞僙儖傪屇傃弌偡
	Cancel();

	//夋憸忣曬僆僽僕僃僋僩傪嶍彍偡傞
	delete iInfoItem;

	delete iCheckInfo.iInfoItem;
	}


/**
 *  嬋傾僀僥儉偺夋憸忣曬傪庢摼偡傞
 *  @param[in]		aItem	嬋傾僀僥儉偺嶲徠
 *  @param[in]		aExType	奼挘僼儔僌
 *  @param[in,out]	aInfo	夋憸忣曬庢摼椞堟
 *  @param[in,out]	aStatus	旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
 *  @return	張棟寢壥
 */
TInt CSmbMusicAPLibMWAnalyzeItem::GetImageInfo(
		CSmbMusicMWLibSongItem& aItem,
		TInt aExType,
		TSmbMusicAPLibImageInfo& aInfo,
		TRequestStatus& aStatus
		)
	{
	//ESmbMusicAPLibIdle偱側偄応崌丄僄儔乕偱栠傞
	if(ESmbMusicAPLibIdle != State())
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber00;
		_LIT(KMusicAPLibMWAnalyzeItem00, "CSmbMusicAPLibMWAnalyzeItem::GetImageInfo() [ErrState]:Not Idle State. State = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem00, State());

		return KErrInUse;
		}

	iExType = aExType;

	//堷悢傪儊儞僶乕曄悢偵曐懚偡傞
	iClientItem = &aItem;
	//奼挘僿僢僟乕傪弶婜壔偡傞
	iExtensionHeaderInfo.iXDcmMove			= 0;
	iExtensionHeaderInfo.iXDcmAdditional	= 0;

	//嬋僆僽僕僃僋僩偺夋憸忣曬庢摼梫媮傪屇傃弌偡
	TInt ret = iClientItem->ExtensionHeaderInformation(iExtensionHeaderInfo, iStatus);
	if(KErrNone != ret)
		{
		//儘僌弌椡
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber01;
		_LIT(KMusicAPLibMWAnalyzeItem01, "CSmbMusicAPLibMWAnalyzeItem::GetImageInfo() [ErrCall]:ExtensionHeaderInformation = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem01, ret);
		return ret;
		}

	//旕摨婜梫媮傪奐巒偡傞(SetActive偡傞)
	Start();

	//忬懺傪SD忣曬庢摼忬懺偵僙僢僩偡傞
	SetState(ESmbMusicAPLibGetExInfo);

	//僋儔僀傾儞僩僗僥乕僞僗傪曐懚偡傞
	iClientStatus = &aStatus;
	//夋憸忣曬庢摼梡椞堟傪曐懚偡傞
	iClientInfo = &aInfo;

	//僋儔僀傾儞僩懁AO偺梫媮傪Pending偡傞
	if(NULL != iClientStatus)
		{
		*iClientStatus = KRequestPending;
		}

	return KErrNone;
	}


/**
 *  嬋傾僀僥儉偺夋憸忣曬庢摼張棟傪僉儍儞僙儖偡傞
 *  @return	張棟寢壥
 **/
TInt CSmbMusicAPLibMWAnalyzeItem::CancelImageInfo()
	{
	TSmbMusicAPLibAnalyzeItemState curState = State();

	switch(curState)
		{
		//傾僀僪儖忬懺偺帪
		case ESmbMusicAPLibIdle:
			{
			//ESmbMusicAPLibIdle偺応崌丄旕摨婜張棟偑傕偆姰椆偟偨偺偱丄張棟側偟偵栠傞
			return KErrCompletion;
			}
		//夋憸忣曬庢摼忬懺偺帪
		case ESmbMusicAPLibGetInfo:
		//SD忣曬庢摼忬懺偺帪
		case ESmbMusicAPLibGetExInfo:
			{
			//嬋傾僀僥儉偵懳偟偰丄夋憸忣曬庢摼/SD忣曬庢摼傪僉儍儞僙儖偡傞
			iClientItem->CancelGetInfo();
			}
			break;
		case ESmbMusicAPLibAnalyzeInfo:
			{
			//屄暿夋憸忣曬庢摼傪僉儍儞僙儖偡傞
			iInfoItem->CancelIndividualImageInfo();
			}
			break;
		default:
			{
			//儘僌傪弌椡
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber02;
			_LIT(KMusicAPLibMWAnalyzeItem02, "CSmbMusicAPLibMWAnalyzeItem::CancelImageInfo() [ErrState]:Invalid State = %d");
			SmbMusicAPLibLog(logCode, ELogLevelHighest, KMusicAPLibMWAnalyzeItem02,	curState);
			//僉儍儞僙儖偱偒傑偣傫偱偟偨
			return KErrUnknown;
			}
//			break;
		}

	//AO偺僉儍儞僙儖傪屇傃弌偡
	Cancel();

	//旕摨婜張棟僉儍儞僙儖傪僐儞僾儕乕僩偡傞
	Complete(KErrCancel);

	//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
	DeleteObjects();

	return KErrNone;
	}


/**
 *  帠慜僠僃僢僋偺拞巭
 *  @return	張棟寢壥
 **/
TInt CSmbMusicAPLibMWAnalyzeItem::CancelCheckImage()
	{
	TSmbMusicAPLibAnalyzeItemState curState = State();

	switch(curState)
		{
		//傾僀僪儖忬懺偺帪
		case ESmbMusicAPLibIdle:
			//ESmbMusicAPLibIdle偺応崌丄旕摨婜張棟偑傕偆姰椆偟偨偺偱丄張棟側偟偵栠傞
			return KErrCompletion;

		//夋憸庢摼偺帠慜僠僃僢僋奐巒忬懺
		case ESmbMusicAPLibStartCheckImage:
			iCheckInfo.iItem->CancelGetInfo();
			break;

		//夋憸庢摼偺帠慜僠僃僢僋忬懺
		case ESmbMusicAPLibCheckingImage:
			iCheckInfo.iInfoItem->CancelIndividualImageInfo();
			break;

		default:
			{
			//儘僌傪弌椡
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber03;
			_LIT(KMusicAPLibMWAnalyzeItem03, "CSmbMusicAPLibMWAnalyzeItem::CancelCheckImage() [ErrState]:Invalid State = %d");
			SmbMusicAPLibLog(logCode, ELogLevelHighest, KMusicAPLibMWAnalyzeItem03,	curState);
			//僉儍儞僙儖偱偒傑偣傫偱偟偨
			return KErrUnknown;
			}
//			break;
		}

	//AO偺僉儍儞僙儖傪屇傃弌偡
	Cancel();

	//旕摨婜張棟僉儍儞僙儖傪僐儞僾儕乕僩偡傞
	Complete(KErrCancel);

	//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
	DeleteObjects();

	return KErrNone;
	}


//  ADD-S PTX824 k3-sugimoto
/**
 *  巜掕偟偨庬暿偺夋憸忣曬傪庢摼偡傞
 *  @param[in]		aItem		忣曬庢摼懳徾偺嬋傾僀僥儉
 *	@param[in]		aTargetType	庢摼偟偨偄夋憸忣曬偺庬暿(僕儍働僢僩/壧帉)
 *  @param[in]		aExType		奼挘僼儔僌
 *  @param[out]		aTypeInfo	庢摼偝傟偨屄暿夋憸忣曬偺曐帩椞堟
 *	@param[in,out]	aStatus		旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
 *  @return	張棟寢壥
 **/
TInt CSmbMusicAPLibMWAnalyzeItem::GetImageTypeInfo(
		CSmbMusicMWLibSongItem& aItem,
		TSmbMusicAPLibImageType& aTargetType,
		TInt aExType,
		TSmbMusicAPLibImageTypeInfo& aTypeInfo,
		TRequestStatus& aStatus
		)
	{
	if (State() != ESmbMusicAPLibIdle)
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber04;
		_LIT(KMusicAPLibMWAnalyzeItem04, "CSmbMusicAPLibMWAnalyzeItem::GetImageTypeInfo() [ErrState]:Not Idle State. State = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem04, State());

		return KErrInUse;
		}

	//堷悢傪儊儞僶乕曄悢偵曐懚偡傞
	iClientItem	= &aItem;
	iTargetType	= aTargetType;
	iExType		= aExType;

	//奼挘僿僢僟乕傪弶婜壔偡傞
	iExtensionHeaderInfo.iXDcmMove			= 0;
	iExtensionHeaderInfo.iXDcmAdditional	= 0;

	//嬋僆僽僕僃僋僩偺夋憸忣曬庢摼梫媮傪屇傃弌偡
	TInt result = iClientItem->ExtensionHeaderInformation(iExtensionHeaderInfo, iStatus);
	if(result != KErrNone)
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber05;
		_LIT(KMusicAPLibMWAnalyzeItem05, "CSmbMusicAPLibMWAnalyzeItem::GetImageTypeInfo() [ErrCall]:ExtensionHeaderInformation = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem05, result);

		return result;
		}

	//旕摨婜梫媮傪奐巒偡傞(SetActive偡傞)
	Start();

	//忬懺傪SDBind忣曬庢摼忬懺傊
	SetState(ESmbMusicAPLibGetExInfoforTarget);

	//夋憸忣曬庢摼梡椞堟傪曐懚偡傞
	iClientTypeInfo = &aTypeInfo;

	//僋儔僀傾儞僩僗僥乕僞僗傪曐懚偟丄梫媮傪Pending偡傞
	iClientStatus = &aStatus;
	aStatus = KRequestPending;

	return KErrNone;
	}


/**
 *  巜掕庬暿夋憸忣曬庢摼梫媮偺僉儍儞僙儖
 **/
void CSmbMusicAPLibMWAnalyzeItem::CancelGetImageTypeInfo()
	{
	switch(State())
		{
		case ESmbMusicAPLibGetExInfoforTarget:			//  SDBind忣曬庢摼忬懺
		case ESmbMusicAPLibGetAAAInfoforTarget:			//  AAA夋憸忣曬庢摼
		case ESmbMusicAPLibGetJacketInfoforTarget:		//  僕儍働僢僩夋憸忣曬庢摼
		case ESmbMusicAPLibGetStillInfoforTarget:		//  懸庴夋憸忣曬庢摼
		case ESmbMusicAPLibGetLyricInfoforTarget:		//  壧帉夋憸忣曬庢摼
			ASSERT(iClientItem != NULL);
			//  嬋傾僀僥儉偵懳偟偰忣曬庢摼梫媮偺僉儍儞僙儖傪偡傞
			iClientItem -> CancelGetInfo();
			break;
		case ESmbMusicAPLibGetAAAIndivInfoforTarget:	//  AAA夋憸屄暿忣曬庢摼
		case ESmbMusicAPLibGetJacketIndivInfoforTarget:	//  僕儍働僢僩夋憸屄暿忣曬庢摼
		case ESmbMusicAPLibGetStillIndivInfoforTarget:	//  懸庴夋憸屄暿忣曬庢摼
		case ESmbMusicAPLibGetLyricIndivInfoforTarget:	//  壧帉夋憸屄暿忣曬庢摼
			ASSERT(iInfoItem != NULL);
			//  屄暿夋憸忣曬庢摼傪僉儍儞僙儖偡傞
			iInfoItem -> CancelIndividualImageInfo();
			break;
		default:
			{
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber06;
			_LIT(KMusicAPLibMWAnalyzeItem06, "CSmbMusicAPLibMWAnalyzeItem::CancelGetImageTypeInfo() illegal Status = %d");
			SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem06, State());

			return;
			}
//			break;
		}

	Cancel();

	Complete(KErrCancel);

	DeleteObjects();
	}


/**
 *  巜掕偟偨庬暿偺夋憸悢傪庢摼偡傞
 *  @param[in]		aItem		庢摼懳徾偺嬋傾僀僥儉
 *	@param[in]		aTargetType	庢摼偟偨偄夋憸忣曬偺庬暿(僕儍働僢僩/壧帉)
 *  @param[in]		aExType		奼挘僼儔僌
 *  @param[out]		aImageCount	庢摼偝傟偨夋憸悢
 *	@param[in,out]	aStatus		旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
 *  @return	張棟寢壥
 **/
TInt CSmbMusicAPLibMWAnalyzeItem::GetTargetImageCount(
		CSmbMusicMWLibSongItem& aItem,
		TSmbMusicAPLibImageType& aTargetType,
		TInt aExType,
		TInt& aImageCount,
		TRequestStatus& aStatus
		)
	{
	if (State() != ESmbMusicAPLibIdle)
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber07;
		_LIT(KMusicAPLibMWAnalyzeItem07, "CSmbMusicAPLibMWAnalyzeItem::GetTargetImageCount() [ErrState]:Not Idle State = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem07, State());

		return KErrInUse;
		}

	//堷悢傪儊儞僶乕曄悢偵曐懚偡傞
	iClientItem = &aItem;
	iTargetType = aTargetType;
	iExType = aExType;

	TSmbMusicAPLibAnalyzeItemState nextState(ESmbMusicAPLibIdle);
	switch(aTargetType)
		{
		case ESmbMusicAPLibImageTypeJacket:	//  僕儍働僢僩夋憸
			{
			//  嵟弶偵庢摼偡傞夋憸庬暿傪寛掕
			StartImageType();
			if (iImageType == ESmbMusicMWLibImageTypeAAA)
				{	//  嵟弶偵庢摼偡傞夋憸庬暿偑AAA夋憸偺応崌
				nextState = ESmbMusicAPLibGetAAACountforTarget;
				}
			else
				{	//  嵟弶偵庢摼偡傞夋憸庬暿偑AAA夋憸埲奜偺応崌
				nextState = ESmbMusicAPLibGetJacketCountforTarget;
				}
			}
			break;
		case ESmbMusicAPLibImageTypeLyric:	//  壧帉夋憸
			nextState	= ESmbMusicAPLibGetLyricCountforTarget;
			iImageType	= ESmbMusicMWLibImageTypeLylic;
			break;
		case ESmbMusicAPLibImageTypeOther:	//  偦偺懠
		default:
			{
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber08;
			_LIT(KMusicAPLibMWAnalyzeItem08, "CSmbMusicAPLibMWAnalyzeItem::GetTargetImageCount() [Err]:illegal ImageType = %d");
			SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem08, aTargetType);

			return KErrArgument;
			}
//			break;
		}

	//  嬋僆僽僕僃僋僩偺夋憸忣曬庢摼梫媮傪屇傃弌偡
	//  GetInfo()撪偱Start(SetActive)偡傞偺偱杮API撪偱偼僐乕儖偟側偄
	TInt result = GetInfo();
	if(result != KErrNone)
		{	//  梫媮偵幐攕
		return result;
		}

	SetState(nextState);

⌨️ 快捷键说明

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