smbmusicapmainplayerplayinfoproc.cpp

来自「symbian」· C++ 代码 · 共 722 行 · 第 1/2 页

CPP
722
字号
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPMainPlayerInfoProc.cpp
//
// Description: 
//	儈儏乕僕僢僋僾儗僀儎乕嵞惗宯偺摨婜僄儞僕儞惂屼僋儔僗
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅			|曄峏幰 	|撪梕
//--------------+-----------+----------------------------------------------
//2006/06/13	|K3拞堜		| 弶斉儕儕乕僗
//2006/10/03	|K3拞堜		| TRK:9614 Cancel張棟帪偵旕摨婜張棟庬暿傪敾掕偡傞丅
//2006/10/17	|K3拞堜		| iIsSDBinding 傪嶍彍
//2006/10/20	|K3拞堜		| 摨婜僒乕僶偐傜偺KErrServerTerminated傪捠抦偝傟偨帪偺張棟傪捛壛

/// 嵞惗宯摨婜僄儞僕儞惂屼僋儔僗
/**
 * @file SmbMusicAPMainPlayerInfoProc.cpp
 *
 * 儈儏乕僕僢僋僾儗僀儎乕嵞惗宯偺摨婜僄儞僕儞惂屼僋儔僗
 */

#include "SmbMusicAPMainPlayerPlayDebug.h"

#ifndef __SMBMUSICAPMAINPLAYERUTILITY_H__
#include "SmbMusicAPMainPlayerUtility.h"
#endif

#ifndef __SMBMUSICAPMAINPLAYEROLAYINFOPROC_H__
#include "SmbMusicAPMainPlayerPlayInfoProc.h"
#endif

SEMCJ_NAMESPACE_BEGIN
USING_NAMESPACE_DCM

// 僕儍働僢僩夋憸庢摼梡僼傽僀儖
//_LIT(KSmbMusicAPMainPlayerPlayJacketFile, "c:\\temp\\SmbMusicAPMainPlayerPlayJacket.data");

/**
 * 僋儔僗惗惉
 * @param[in] aMusicSyncEngine 摨婜僄儞僕儞
 * @param[in] aLog RLog僆僽僕僃僋僩
 * @return 惗惉偟偨CSmbMusicAPMainPlayerPlayInfoProc僆僽僕僃僋僩
 */
CSmbMusicAPMainPlayerPlayInfoProc* CSmbMusicAPMainPlayerPlayInfoProc::NewL(CSmbMusicAPSyncEngine& aMusicSyncEngine, RLog& aLog)
	{
	CSmbMusicAPMainPlayerPlayInfoProc* self = new(ELeave) CSmbMusicAPMainPlayerPlayInfoProc(aMusicSyncEngine, aLog);
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop(); // self
	return self;
	}

/**
 * 僀儞僗僞儞僗惗惉
 *    CActive(EPriorityStandard)
 * @param[in] aMusicSyncEngine 摨婜僄儞僕儞
 * @param[in] aLog RLog僆僽僕僃僋僩
 */
CSmbMusicAPMainPlayerPlayInfoProc::CSmbMusicAPMainPlayerPlayInfoProc(CSmbMusicAPSyncEngine& aMusicSyncEngine, RLog& aLog)
	: CActive(EPriorityStandard), iSyncEngine(aMusicSyncEngine), iLog(aLog)
	{
	}

/**
 * 擇師僐儞僗僩儔僋僞
 */
void CSmbMusicAPMainPlayerPlayInfoProc::ConstructL()
	{
	// 傾僋僥傿僽僗働僕儏乕儔傊搊榐
	CActiveScheduler::Add(this);
	
	// 夋憸曄姺僋儔僗偺惗惉
	TRAPD(err, iImageFunc = CSmbMusicAPLibImageFunc::NewL());
	if (KErrNone != err)
		{
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::ConstructL Fail");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220002, ELogLevelHigh, KLogFmt);
		User::Leave(err);
		}
	
	iWaitQueue = new(ELeave) CArrayFixFlat<TSmbMusicAPMainPlayerPlayRequest>(16);
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPMainPlayerPlayInfoProc::~CSmbMusicAPMainPlayerPlayInfoProc()
	{
	// 旕摨婜張棟傪僉儍儞僙儖
	Cancel();
	
	delete iImageFunc;
	if (NULL != iPrmSize)
		{
		iPrmSize->Close();
		delete iPrmSize;
		}
	iPrmBitmap.Reset();
	iPrmBitmap.Close();

	iWaitQueue->Reset();
	delete iWaitQueue;
	}

/**
 * 僐儅儞僪張棟僆僽僓乕僶搊榐
 * @param[in] aObserver 僐儅儞僪張棟僆僽僓乕僶僋儔僗
 */
void CSmbMusicAPMainPlayerPlayInfoProc::SetObserver(MSmbMusicAPMainPlayerPlayObserver* aObserver)
	{
	iObserver = aObserver;
	}

/**
 * 嵞惗嬋忣曬庢摼傪梫媮偡傞丅
 * @param aItem 庢摼偡傞傾僀僥儉忣曬
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayInfoProc::GetPlaySongInfo(TSmbMusicAPSyncEngineItemIndex aItem)
	{
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		iSaveSongInfo = aItem;
		SetWaitQueue(ESmbMusicAPMainPlayerReqGetPlaySongInfo);
		return ETrue;
		}
	
	// 嵞惗嬋忣曬庢摼梫媮傪摨婜僄儞僕儞偵敪峴偡傞丅
	iSyncEngine.GetPlaySongInfo(reinterpret_cast<const TSmbMusicAPSyncEngineItemIndex&>(aItem),
	                             iSongDetail, iArtistTitle, iAlbumTitle, iSongTitle, iStatus);
	SetActiveRequest(ESmbMusicAPMainPlayerReqGetPlaySongInfo);
	
	return ETrue;
	}

/**
 * 傾僀僥儉僀儞僨僢僋僗偵懳墳偡傞嬋ID傪庢摼偡傞丅
 * @param aItem 庢摼偡傞嬋偺傾僀僥儉忣曬
 * @return 嬋ID
 */
TUint64 CSmbMusicAPMainPlayerPlayInfoProc::SongID(TSmbMusicAPSyncEngineItemIndex aItem)
	{
	TInt id = iSyncEngine.GetSongID(aItem);
	return (static_cast<TUint64>(id));
	}

/**
 * 嵞惗儕僗僩偵娷傑傟傞傾僀僥儉儕僗僩傪庢摼偡傞丅
 * @param aListHandle 嵞惗儕僗僩僴儞僪儖
 * @return 儕僗僩偵娷傑傟傞傾僀僥儉悢
 */
TInt CSmbMusicAPMainPlayerPlayInfoProc::GetItemCount(TInt aListHandle)
	{
	return iSyncEngine.GetItemCount(aListHandle);
	}

/**
 * 僕儍働僢僩夋憸庢摼傪梫媮偡傞丅
 * @param aItem 庢摼偡傞嬋偺傾僀僥儉忣曬
 * @param aSize 夋憸僒僀僘
 * @param aSizeIcon 傾僀僐儞夋憸僒僀僘
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayInfoProc::GetImage(TSmbMusicAPSyncEngineItemIndex aItem, TSize aSize, TSize aSizeIcon)
	{
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		iSaveSongInfo = aItem;
		iSaveSize = aSize;
		iSaveSizeIcon = aSizeIcon;
		SetWaitQueue(ESmbMusicAPMainPlayerReqGetImage);
		return ETrue;
		}
	
// PTX824
	iJacketSize.iSize   = aSize;
	iJacketSize.iSpread = ETrue;
	iIconSize.iSize     = aSizeIcon;
	iIconSize.iSpread   = EFalse;
	
	// 僕儍働僢僩夋憸庢摼梫媮傪摨婜僄儞僕儞偵敪峴偡傞丅
	TSmbMusicAPSyncEngineGetImageInfo info;
	info.iSongItem = aItem;
	info.iImageType = ESmbMusicAPSyncEngineImageTypeJacket;
	info.iIndex = 0;
	iSyncEngine.GetPlaySongImage(info, iSongImage, iStatus);
	SetActiveRequest(ESmbMusicAPMainPlayerReqGetImage);
	return ETrue;
	}

/**
 * 僕儍働僢僩夋憸僼傽僀儖嶌惉姰椆捠抦張棟\n
 *  夋憸僼傽僀儖偐傜丄僕儍働僢僩夋憸昞帵梡丄傾僀僐儞昞帵梡偺2庬椶偺價僢僩儅僢僾傪嶌惉偡傞丅
 * @param[in] aResult 張棟寢壥(ETrue:張棟梫媮惉岟)
 */
void CSmbMusicAPMainPlayerPlayInfoProc::CompleteGetImageL(TBool aResult)
	{
	if (EFalse == aResult)
		{
		// 堎忢廔椆帪偼丄僆僽僓乕僶捠抦偡傞丅
		CheckWaitQueueL();

		iObserver->RespGetImageL(NULL, NULL, NULL, NULL, aResult);
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::CompleteGetImageL Fail");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220003, ELogLevelNormal, KLogFmt);
		}
	else
		{
		// 惓忢廔椆帪偼丄僕儍働僢僩夋憸僼傽僀儖偐傜價僢僩儅僢僾僨乕僞傪嶌惉偡傞丅
//		if (EFalse != IsActive())
//			{
//			SetWaitQueueL(ESmbMusicAPMainPlayerReqGetBitmap);
//			return;
//			}

// PTX824
		iPrmSize = new (ELeave) RArray<TSmbMusicAPLibImageSizeInfo>(2);
		iPrmSize->AppendL(iJacketSize);
		iPrmSize->AppendL(iIconSize);
		TInt ret = iImageFunc->ConvertImage(iSongImage, *iPrmSize, iPrmBitmap, iStatus);
		if (KErrNone != ret)
			{
			CheckWaitQueueL();
			iObserver->RespGetImageL(NULL, NULL, NULL, NULL, EFalse);
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::CompleteGetImageL ConvertImage Fail %d");
			SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220103, ELogLevelNormal, KLogFmt, ret);
// Add 2007.05.17
			iPrmSize->Close();
			delete iPrmSize;
			iPrmSize = NULL;
// Add 2007.05.17
			}
		else
			{
			SetActiveRequest(ESmbMusicAPMainPlayerReqGetBitmap);
			}
		}
	}

/**
 * 夋憸傪僒僀僘曄峏偡傞丅
 * @param aBitMap 夋憸僨乕僞
 * @param aBitMapMask 儅僗僋僨乕僞
 * @param aSize 曄峏偡傞夋憸僒僀僘
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayInfoProc::ResizeImage(CFbsBitmap* aBitMap, CFbsBitmap* aBitMapMask, TSize aSize)
	{
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		iSaveBitMap = aBitMap;
		iSaveBitMapMask = aBitMapMask;
		iSaveSize = aSize;
		SetWaitQueue(ESmbMusicAPMainPlayerReqResizeBitmap1);
		return ETrue;
		}

	iJacketBitmap.iMainBitmap = aBitMap;
	iJacketBitmap.iMaskedBitmap = aBitMapMask;
// PTX824
// Change 2007.05.08
//	iImageFunc->ResizeBitmap(iJacketBitmap, aSize, iConvBitmap1, iStatus);
	TInt ret = iImageFunc->ResizeBitmap(iJacketBitmap, aSize, iConvBitmap1, iStatus, ETrue);
	if (ret != KErrNone)
		{
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::ResizeImage ResizeBitmap Fail %d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220104, ELogLevelNormal, KLogFmt, ret);
		iObserver->RespResizeImageL(NULL, NULL, EFalse);
		return EFalse;
		}
// Change End 2007.05.08
	SetActiveRequest(ESmbMusicAPMainPlayerReqResizeBitmap1);
	return ETrue;
	}

/**
 * 夋憸枃悢傪梫媮偡傞丅
 * @param aItem 庢摼偡傞嬋偺傾僀僥儉忣曬
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayInfoProc::GetImageNumber(TSmbMusicAPSyncEngineItemIndex aItem)
	{
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		iSaveSongInfo = aItem;
		SetWaitQueue(ESmbMusicAPMainPlayerReqGetImageNum);
		return ETrue;
		}

	// 	夋憸枃悢庢摼梫媮傪摨婜僄儞僕儞偵敪峴偡傞丅
	iSyncEngine.GetImageCount(aItem, iImageCount, iStatus);
	SetActiveRequest(ESmbMusicAPMainPlayerReqGetImageNum);
	return ETrue;
	}

// 2006.10.01  TRK:10535
/**
 * 儕僗僩僴儞僪儖偺儕僗僩庬暿傪庢摼偡傞丅
 * @param[in]	aListHandle		儕僗僩僴儞僪儖
 * @param[out]	aListType		儕僗僩庬暿
 */
void CSmbMusicAPMainPlayerPlayInfoProc::GetListType(TInt aListHandle, TSmbMusicAPSyncEngineListType& aListType)
	{
	TSmbMusicAPSyncEnginePrevListInfo prevList;
	iSyncEngine.GetPrevList(aListHandle, prevList);
	aListType = prevList.iListType;
	}

/**
 * 夋憸忣曬庢摼姰椆捠抦張棟\n
 * @param[in] aResult 張棟寢壥(ETrue:張棟梫媮惉岟)
 */
void CSmbMusicAPMainPlayerPlayInfoProc::CompleteGetImageInfo(TBool aResult)
	{
	if (EFalse == aResult)
		{
		// 堎忢廔椆帪偼丄夋憸枃悢傪0偲偡傞丅
		iImageCount.iJacketCount  = 0;
		iImageCount.iLyricCount   = 0;
//		iImageCount.iIsSDBinding  = EFalse;		del 2006.10.17
		iImageCount.iIsUimLimited = EFalse;
		iObserver->RespGetImageNumL(iImageCount, aResult);
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayInfoProc::CompleteGetImageInfo Fail");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220004, ELogLevelNormal, KLogFmt);
		}
	else
		{
		if (0 > iImageCount.iJacketCount)
			{
			iImageCount.iJacketCount = 0;
			}
		else if (KSmbMusicAPMainPlayerJacketMax < iImageCount.iJacketCount)
			{
			iImageCount.iJacketCount = KSmbMusicAPMainPlayerJacketMax;
			}
		if (0 > iImageCount.iLyricCount)
			{
			iImageCount.iLyricCount = 0;
			}
		else if (KSmbMusicAPMainPlayerLyricMax < iImageCount.iLyricCount)
			{
			iImageCount.iLyricCount = KSmbMusicAPMainPlayerLyricMax;
			}
		iObserver->RespGetImageNumL(iImageCount, aResult);
		}
	}

/**
 * 摨婜僒乕僶傊偺梫媮傪僉儍儞僙儖偡傞丅
 */
void CSmbMusicAPMainPlayerPlayInfoProc::CancelAction()

⌨️ 快捷键说明

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