smbmusicapmainplayerplayproc.cpp

来自「symbian」· C++ 代码 · 共 1,024 行 · 第 1/3 页

CPP
1,024
字号
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPMainPlayerPlayProc.cpp
//
// Description: 
//	儈儏乕僕僢僋僾儗僀儎乕嵞惗宯偺摨婜僄儞僕儞惂屼僋儔僗
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅			|曄峏幰 	|撪梕
//--------------+-----------+----------------------------------------------
//2006/06/13	|K3拞堜		| 弶斉儕儕乕僗
//2006/07/06	|K3拞堜		| RequestKind()捛壛
//2006/07/10	|K3拞堜		| 傾僋僥傿僽拞偺張棟梫媮傪曐棷偡傞丅
//2006/07/14	|K3拞堜		| 僕儍働僢僩夋憸庢摼張棟傪曄峏
//2006/07/17	|K3拞堜		| [TRK:4057]僕儍働僢僩夋憸庢摼張棟傪曄峏
//2006/07/19	|K3拞堜		| 僕儍働僢僩夋憸庢摼張棟丄價僢僩儅僢僾曄姺張棟傪曄峏
//2006/07/24	|K3拞堜		| 夋憸枃悢庢摼張棟偺晄嬶崌傪廋惓
//2006/07/27	|K3拞堜		| 夋憸枃悢庢摼張棟偺晄嬶崌傪廋惓(2)
//2006/07/28	|K3拞堜		| 忬懺曄壔捠抦偵儗僕儏乕儉忣曬傪捛壛
//2006/07/31	|K3拞堜		| 價僢僩儅僢僾曄姺張棟偺曄峏
//2006/07/31	|K3拞堜		| 夋憸忣曬庢摼墳摎張棟偺曄峏
//2006/08/03	|K3拞堜		| RunL()張棟傪曄峏
//2006/08/03	|K3拞堜		| ConvertImage()偺栠傝抣傪専嵏偡傞傛偆偵懳張
//2006/08/11	|K3拞堜		| TRK:6212 摢弌偟帪偵嵞惗惂尷僆乕僶乕偲側偭偨応崌偺懳張
//2006/08/17	|K3拞堜		| CancelAction()偱梫媮懸偪僉儏乕傪儕僙僢僩
//2006/08/23	|K3拞堜		| TRK:7039懳墳 嵞惗嬋愗懼偊帪偺嵞惗弨旛姰椆偱僒僽僾儗僀儎乕偵Mute忬懺傪捠抦偡傞丅
//2006/08/23	|K3拞堜		| TRK:7118懳墳 嬋曄峏帪偺僀儞僨僢僋僗斣崋捠抦偺晄嬶崌傪懳張
//2006/08/24	|K3拞堜		| HOLD梫媮乛夝彍儊僜僢僪傪捛壛
//2006/09/07 	|K3戝嫶		| CancelConvertImage()帪偺儊儌儕儕乕僋懳嶔
//2006/09/12	|K3拞堜		| 嵞惗嬋忣曬庢摼墳摎偺堷悢傪曄峏
//2006/09/13	|K3拞堜		| 僨僼僅儖僩夋憸偺傾僀僐儞梡價僢僩儅僢僾曄姺張棟傪嶍彍
//2006/09/20	|K3拞堜		| TRK:7935懳墳 RespGetImageNum()偺堷悢偵SDBind妝嬋僼儔僌傪捛壛
//2006/09/25	|K3拞堜		| StartPlay()丄Play()偺堷悢傪曄峏
//2006/09/26	|K3拞堜		| RespPlay()偺堷悢傪曄峏
//2006/09/29	|K3拞堜		| TRK:7935 GetImageCount儊僜僢僪偺巇條曄峏懳墳
//2006/09/30	|K3拞堜		| CancelGetPlaySongImage()傊偺曄峏
//2006/10/01	|K3拞堜		| GetListType()儊僜僢僪捛壛丄摨婜僒乕僶偺僉儍儞僙儖張棟偺曄峏
//2006/10/10	|K3拞堜		| RequestKind() 傪 GetRequestKind()偵曄峏
//2006/10/10	|K3拞堜		| SetVolume()梫媮偼偦偺搒搙active object惗惉偟偰摨婜僒乕僶偵梫媮傪峴偆
//2006/10/11	|K3拞堜		| ReturnPlayFormFF(), ReturnPlayFormFR() 捛壛
//2006/10/14	|K3拞堜		| DoCancel()偺張棟傪嶍彍
//2006/10/20	|K3拞堜		| 摨婜僒乕僶偐傜偺KErrServerTerminated傪捠抦偝傟偨帪偺張棟傪捛壛
//2006/10/27	|K3拞堜		| TRK:11935 僨僗僩儔僋僞偱摨婜僒乕僶偺Cancel()傪峴傢側偄
//2006/11/06	|K3拞堜		| TRK:12335 僨僗僩儔僋僞偱摨婜僒乕僶偺Cancel()傪峴偆

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

#include "SmbMusicAPMainPlayerPlayDebug.h"

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

#ifndef __SMBMUSICAPMAINPLAYERPLAYPROC_H__
#include "SmbMusicAPMainPlayerPlayProc.h"
#endif

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

SEMCJ_NAMESPACE_BEGIN
USING_NAMESPACE_DCM

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

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

/**
 * 擇師僐儞僗僩儔僋僞
 */
void CSmbMusicAPMainPlayerPlayProc::ConstructL()
	{
	// 傾僋僥傿僽僗働僕儏乕儔傊搊榐
	CActiveScheduler::Add(this);
	
	iSyncEngine.AppendEngineObserver(this);

	iWaitQueue = new(ELeave) CArrayFixFlat<TSmbMusicAPMainPlayerPlayRequest>(16);
	
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPMainPlayerPlayProc::~CSmbMusicAPMainPlayerPlayProc()
	{
	// 旕摨婜張棟傪僉儍儞僙儖
// Add 2006.11.06  TRK:12335
	Cancel();
	
	iSyncEngine.RemoveEngineObserver(this);
	
	iWaitQueue->Reset();
	delete iWaitQueue;
	
// Add 2006.10.10 by sato
	iVoluneSetterArray.ResetAndDestroy();
	iVoluneSetterArray.Close();
// Add End 2006.10.10 by sato
	}

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

/**
 * 嵞惗弨旛傪梫媮偡傞丅
 * @param aPlaySongInfo 嵞惗儕僗僩忣曬
 * @param aAllShuffle 慡嬋僔儍僢僼儖巜掕乮ETrue:慡嬋僔儍僢僼儖乯
 * @param[in] aResume 儗僕儏乕儉嵞惗巜掕乮ETrue:儗僕儏乕儉嵞惗乯
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayProc::PreparePlay(TSmbMusicAPSyncEngineItemIndex aPlaySongInfo, TBool aAllShuffle, TBool aResume)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerPlayProc::PreparePlay ListHandle=%X index=%d shuffle=%d resume%d");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 220102, ELogLevelNormal, KLogFmt, aPlaySongInfo.iListHandle, aPlaySongInfo.iIndex, aAllShuffle, aResume);
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		iSaveSongInfo = aPlaySongInfo;
		iSaveAllShuffle = aAllShuffle;
		iSAveResume = aResume;
		SetWaitQueue(ESmbMusicAPMainPlayerReqPreparePlay);
		return ETrue;
		}
	
	// 嵞惗弨旛梫媮傪摨婜僄儞僕儞偵敪峴偡傞丅
	iSyncEngine.PreparePlay(reinterpret_cast<const TSmbMusicAPSyncEngineItemIndex&>(aPlaySongInfo),
	                         aResume, aAllShuffle, iStatus);
	SetActiveRequest(ESmbMusicAPMainPlayerReqPreparePlay);
	
	return ETrue;
	}

/**
 * 嵞惗奐巒傪梫媮偡傞丅
 * @param [in] aPlayConfirm 嵞惗奐巒帪偺儐乕僓妋擣乮儅僫乕儌乕僪愝掕帪偺傒桳岠乯	2006.09.25
 * @param [in] aAutoResume  ETrue:僆乕僩儗僕儏乕儉偵傛傞嵞惗   Add 2007.09.04
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayProc::PlayStart(TBool aPlayConfirm, TBool aAutoResume/* = EFalse*/)
	{
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		iPlayConfirm = aPlayConfirm;		// 2006.09.25
		SetWaitQueue(ESmbMusicAPMainPlayerReqPlayStart);
		return ETrue;
		}
	
	// 嵞惗奐巒梫媮傪摨婜僄儞僕儞偵敪峴偡傞丅
	iSyncEngine.Play(aPlayConfirm, iIndex, iStatus, aAutoResume);
	SetActiveRequest(ESmbMusicAPMainPlayerReqPlayStart);
	
	return ETrue;
	}

/**
 * 堦帪掆巭傪梫媮偡傞丅
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayProc::Pause()
	{
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		SetWaitQueue(ESmbMusicAPMainPlayerReqPause);
		return ETrue;
		}
	
	// 堦帪掆巭梫媮傪摨婜僄儞僕儞偵敪峴偡傞丅
	iSyncEngine.Pause(iStatus);
	SetActiveRequest(ESmbMusicAPMainPlayerReqPause);
	
	return ETrue;
	}

/**
 * 憗憲傝奐巒傪梫媮偡傞丅
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayProc::StartPlayFF()
	{
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		SetWaitQueue(ESmbMusicAPMainPlayerReqStartPlayFF);
		return ETrue;
		}
	
	// 憗憲傝奐巒梫媮傪摨婜僄儞僕儞偵敪峴偡傞丅
	iSyncEngine.PlayFF(iStatus);
	SetActiveRequest(ESmbMusicAPMainPlayerReqStartPlayFF);
	
	return ETrue;
	}

/**
 * 憗憲傝夝彍傪梫媮偡傞丅
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayProc::CancelPlayFF()
	{
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		SetWaitQueue(ESmbMusicAPMainPlayerReqCancelPlayFF);
		return ETrue;
		}
	
	// 憗憲傝夝彍梫媮傪摨婜僄儞僕儞偵敪峴偡傞丅
	iSyncEngine.ReturnPlayFromFF(iStatus);
	SetActiveRequest(ESmbMusicAPMainPlayerReqCancelPlayFF);
	
	return ETrue;
	}

/**
 * 憗栠偟奐巒傪梫媮偡傞丅
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayProc::StartPlayFR()
	{
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		SetWaitQueue(ESmbMusicAPMainPlayerReqStartPlayFR);
		return ETrue;
		}
	
	// 憗栠偟奐巒梫媮傪摨婜僄儞僕儞偵敪峴偡傞丅
	iSyncEngine.PlayFR(iStatus);
	SetActiveRequest(ESmbMusicAPMainPlayerReqStartPlayFR);
	
	return ETrue;
	}

/**
 * 憗栠偟夝彍傪梫媮偡傞丅
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayProc::CancelPlayFR()
	{
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		SetWaitQueue(ESmbMusicAPMainPlayerReqCancelPlayFR);
		return ETrue;
		}
	
	// 憗栠偟夝彍梫媮傪摨婜僄儞僕儞偵敪峴偡傞丅
	iSyncEngine.ReturnPlayFromFR(iStatus);
	SetActiveRequest(ESmbMusicAPMainPlayerReqCancelPlayFR);
	
	return ETrue;
	}

// PTX824懳墳
/**
 * 嬋憲傝傪梫媮偡傞丅
 * @param aCount 嬋憲傝偡傞嬋悢		2007.03.23
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayProc::PlayNext(TInt aCount)
	{
	if (KSmbMusicAPSyncEngineMaxSongMovement < aCount)
		{
		aCount = KSmbMusicAPSyncEngineMaxSongMovement;
		}
			
	if (EFalse != IsActive())
		{
		// 旕摨婜張棟拞偺応崌
		SetWaitQueue(ESmbMusicAPMainPlayerReqPlayNext);
		iNextCount = aCount;
		return ETrue;
		}
	
	// 嬋憲傝梫媮傪摨婜僄儞僕儞偵敪峴偡傞丅
	iSyncEngine.RequestNextSong(iIndex, iStatus, aCount);
	SetActiveRequest(ESmbMusicAPMainPlayerReqPlayNext);
	
	return ETrue;
	}

// PTX824懳墳
/**
 * 嬋栠偟傪梫媮偡傞丅
 * @param aCount 嬋栠偟偡傞嬋悢		2007.03.23
 * @retval ETrue 張棟梫媮惉岟
 * @retval EFalse 張棟梫媮幐攕
 */
TBool CSmbMusicAPMainPlayerPlayProc::PlayPrev(TInt aCount)
	{
	if (KSmbMusicAPSyncEngineMaxSongMovement < aCount)
		{
		aCount = KSmbMusicAPSyncEngineMaxSongMovement;
		}

⌨️ 快捷键说明

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