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

📄 smbmusicapsingleplayermodel.cpp

📁 symbian代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		}
	iPlayerState->SetPause();
	}
	
/**
 *	僾儗僀儎乕惂屼僒乕僶偺忬懺傪庢摼偡傞
 *
 *	@param 側偟
 *	@return TSmbMusicMWPlayerPlayState	堦嬋嵞惗僾儗僀儎乕偱曐帩偟偰偄傞僾儗僀儎乕惂屼僒乕僶偺忬懺
 */
//TSmbMusicMWPlayerPlayState CSmbMusicAPSinglePlayerModel::ServerState() const
//	{
//	return iServerState;
//	}

/**
 *	廔椆梫場偲側傞僄儔乕僐乕僪傪愝掕偡傞
 *
 *	@param TInt aErr	KErr...
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::SetExitErrCode(TInt aErr)			//	廔椆梫場偺僄儔乕僐乕僪傪愝掕偡傞(僨僼僅儖僩偼KErrNone)
	{
	iExitErrCode = aErr;
	}

/**
 *	廔椆梫場偲側傞僄儔乕僐乕僪傪庢摼偡傞	
 *
 *	@param	側偟
 *	@return	TInt KErr...
 */
TInt CSmbMusicAPSinglePlayerModel::ExitErrCode() const
	{
	return iExitErrCode;
	}

/**
 *	MW僾儗僀儎乕惂屼偺嵞惗晄壜帪僄儔乕傪丄Symbian偺僄儔乕僐乕僪偵曄姺偟丄曐帩偡傞
 *
 *	@memo MOD824(儕僼傽僋僞儕儞僌)
 *	@param	TSmbMusicMWPlayerPlayFailCause丂aCause	僄儔乕僐乕僪
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::SetErrCause(TSmbMusicMWPlayerPlayFailCause aCause)
	{
	TInt numberOfFailSongCause = sizeof(KRefTableForErrCode)/sizeof(KRefTableForErrCode[0]);
	TInt errcode = KErrNone;
	for(TInt i = 0; i <numberOfFailSongCause; i++)
		{
		if(aCause == KRefTableForErrCode[i].iKey)
			{
			errcode = KRefTableForErrCode[i].iData;
			break;
			}
		}
			
	if(KErrNone != errcode)
		{
		SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelNormal,_L("FailSong Errcode:%d Cause:%d"), errcode, aCause);
		}
	
	SetExitErrCode(errcode);
	}

/**
 *	壒惡僷僗惂屼傪暵偠傞
 *	@param	側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::StopAudioRouting()
	{
	if(EFalse == iSpeakerOut)
		{
		return;
		}

	TInt ret = iAudioRouting->UpdateState(EMMARRequestStopped);
	if(KErrNone == ret)
		{
		iSpeakerOut = EFalse;	
		}
	else
		{
		SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelNormal,_L("AudioRouting UpdateState Failed:%d"), ret);
		}
	}

/**
 *	儈儏乕僩嵞惗傪峴偆
 *
 *	@param TBool aBool	ETrue:Mute/EFalse:捠忢
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::SetMuteL(TBool aBool)
	{
	if(aBool == iSetMute)
		{
		return;
		}
		
#ifndef __SMBMUSICAP_DESABLE_SUPERDUKE__
	TInt ret = iPlayerSession->SetMute(aBool);
#else
	TInt ret = iAudioRouting->MuteSpeaker(aBool);
#endif

	if(KErrNone != ret && KErrNotReady != ret)
		{
		//	儘僌弌椡
		SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelNormal,_L("CannotSetMute!!:%d"), ret);	//	儈儏乕僩愝掕晄壜
		SetExitErrCode(KErrHardwareNotAvailable);
		iObserver->HandlePlayerEventL(ESmbMusicAPSinglePlayerHWAbort);
		}
	else if(KErrNone == ret)
		{
		iSetMute = aBool;	//愝掕偝傟偨応崌偩偗
		}
	}

/**
 *	儈儏乕僩嵞惗拞偐偳偆偐
 *
 *	@param 側偟
 *	@return TBool	ETrue:儈儏乕僩嵞惗拞偱偁傞/EFalse:儈儏乕僩嵞惗拞偱偼側偄
 */
TBool CSmbMusicAPSinglePlayerModel::Mute() const
	{
	return iSetMute;
	}

/**
 *	嵞惗奐巒帪娫傪弶婜壔偡傞
 *
 *	@param 側偟
 *	@return void
 */	
void CSmbMusicAPSinglePlayerModel::InitialStartTime()
	{
	SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLowest,_L("InitialStartTime:%d = %d"), iStartTime, iInitialSettings.iPlayStartTime);
	iStartTime = iInitialSettings.iPlayStartTime;
	}
	
/**
 *	嵞惗奐巒帪娫偺庢摼
 *
 *	@param 側偟
 *	@return TUint32	嵞惗奐巒帪娫
 *	@memo	SetPlayContext偵愝掕偡傞抣丅嵞奐帪娫(嬫娫巜掕偺奐巒帪娫偱偼側偄)
 */
TUint32 CSmbMusicAPSinglePlayerModel::StartTime() const
	{
	return iStartTime;
	}

/**
 *	忬懺娗棟僋儔僗偺億僀儞僞傪曉偡
 *
 *	@memo MOD824(儕僼傽僋僞儕儞僌)
 *	@param	側偟
 *	@return	TSmbMusicAPSinglePlayerState*
 */
TSmbMusicAPSinglePlayerStateController* CSmbMusicAPSinglePlayerModel::SinglePlayerStateInfo() const
	{
	return iPlayerState;
	}

/**
 *	僾儗僀儎偺忬懺曄壔捠抦
 *
 *	@memo MOD824(儕僼傽僋僞儕儞僌)
 *	@param	側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::PlayerStateChangedL(TSmbMusicMWPlayerInfo aPlayerInfo)
	{	
	iPlayerState->SetWaitPlayerNotifyEvent(EFalse);
	iPlayerInfo = aPlayerInfo;
	
	switch(aPlayerInfo.iPlayerEvent)
		{
		case ESmbMusicMWPlayerChgState:			///< 嵞惗忬懺峏怴
			{
			ChangeStateL();
			break;
			}	
	
		case ESmbMusicMWPlayerStartPlay:		///< 壒柭摦奐巒(捠忢嵞惗)
		case ESmbMusicMWPlayerPlayFF:			///< 壒柭摦奐巒(憗憲傝嵞惗)
		case ESmbMusicMWPlayerPlayFR:			///< 壒柭摦奐巒(憗栠偟嵞惗)
			{
			StartPlayL();
			break;
			}
				
		case ESmbMusicMWPlayerUserConfirm:		///< 嵞惗妋擣梫媮	
			{
			UserConfirmL();
			break;			
			}

		case ESmbMusicMWPlayerFailSong:			///< 嵞惗晄壜僼傽僀儖
			{
			FailSongL();
			break;
			}

		case ESmbMusicMWPlayerHWAbort:			///< HW堎忢専弌
			{
			HWAbortL();
			break;
			}

		case ESmbMusicMWPlayerPlayPosModify:	///< 嵞惗拞偺儕僗僩偵曄峏偑壛傢傝丄嵞惗嬋埵抲傪曄峏偟偨
			{
			//	PosModifyL();
			//	尰忬枹張棟(儐乕僗働乕僗忋棃側偄偨傔)
			break;
			}
			
		default:
			{	
		//	忬懺偑堦抳偟側偄!!
			}
		}
	}

/**
 *	僒乕僶忬懺曄峏捠抦
 *
 *	@memo MOD824(儕僼傽僋僞儕儞僌)
 *	@param 側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::ChangeStateL()	///<	ChangeState偺拞恎(僒乕僶忬懺曄峏捠抦帪張棟)
	{
	//	ChangeState偑棃偨応崌偼丄僒乕僶偺忬懺傪曐懚偟偰偍偔(DEL) 
	ChangeServerStateL(iPlayerInfo.iPlayState);

	if(TSmbMusicAPSinglePlayerStateController::EComplete != iPlayerState->InitialCondition())
		{
		ChangeStateInInitializingL();
		}
	else
		{
		TInt numberOfChangeState = sizeof(KRefTableForChangestate)/sizeof(KRefTableForChangestate[0]);
		TSmbMusicAPSinglePlayerState state = EErrState;
		for(TInt i = 0; i <numberOfChangeState; i++)
			{
			if(iPlayerInfo.iPlayState == KRefTableForChangestate[i].iKey)
				{
				state = static_cast<TSmbMusicAPSinglePlayerState>(KRefTableForChangestate[i].iData);
				break;
				}
			}
		
		__ASSERT_DEBUG( state != EErrState, User::Panic(KPanicCategory, 1));	//	忬懺偑堦抳偟側偄!!	

		//	Pause偺応崌偼丄偝傜偵徻偟偔傢偗傞
		if(ESmbMusicAPSinglePlayerStateStartPause == state)
			{
			__ASSERT_DEBUG(ESmbMusicMWPlayerListModify != iPlayerInfo.iModifyCause, User::Panic(KPanicCategory, 1));	//	枹巊梡偺偨傔ASSERT
			__ASSERT_DEBUG(ESmbMusicMWPlayerListEmpty != iPlayerInfo.iModifyCause, User::Panic(KPanicCategory, 1));		//	枹巊梡偺偨傔ASSERT
			
			if(ESmbMusicMWPlayerFRSongFront == iPlayerInfo.iModifyCause)	//	憗栠偟愭摢
				{
				state = ESmbMusicAPSinglePlayerStateStartPauseFront;
				}
			else if( ESmbMusicMWPlayerFFSongEnd == iPlayerInfo.iModifyCause 
				 ||  ESmbMusicMWPlayerListEnd == iPlayerInfo.iModifyCause)	//	儕僗僩廔抂or嬋廔抂
				{
				state = ESmbMusicAPSinglePlayerStateStartPauseEnd;
				}
			//UserOperation偼偨偩偺Pause
			}
			

		if(ESmbMusicMWPlayerStatePause == iPlayerInfo.iPlayState
		&& (ESmbMusicMWPlayerListEnd != iPlayerInfo.iModifyCause || EFalse == IsExitPlayerAtLastFrame()))
			{
			iObserver->HandleResourceEventL(ERscForAudioExit);	//	壒惡僷僗儕僜乕僗偺奐曻
			}
		
		SetNotifyPlayerEventL();
		
		iObserver->HandlePlayerEventL(state);
		}

	}

/**
 *	儐乕僓妋擣捠抦帪偺張棟
 *
 *	@memo ADD824
 *	@param 側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::UserConfirmL()
	{
	TInt numberOfUserConfirmState = sizeof(KRefTableForUserConfirm)/sizeof(KRefTableForUserConfirm[0]);
	TSmbMusicAPSinglePlayerState state = EErrState;
	for(TInt i = 0; i <numberOfUserConfirmState; i++)
		{
		if(iPlayerInfo.iModifyCause == KRefTableForUserConfirm[i].iKey)
			{
			state = static_cast<TSmbMusicAPSinglePlayerState>(KRefTableForUserConfirm[i].iData);
			break;
			}
		}
	
	if(state == EErrState)
		{
		//	儘僌弌椡
		SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelHighest,_L("UserConfirm State ModifyCause:%d"), iPlayerInfo.iModifyCause);
		User::Leave(KErrArgument);		
		}

	//	夞悢惂尷忣曬傪庢摼(僌儗乕僗僺儕僆僪婜娫拞偺応崌偼惓偟偄抣偑擖偭偰偙側偄偑丄巊偆偙偲傕側偄)
	iLimitCountInfo.iLimitCount = iPlayerInfo.iAdditionalInfo.iLimitCntInfo.iLimitCount;
	iLimitCountInfo.iPlayCount = iPlayerInfo.iAdditionalInfo.iLimitCntInfo.iPlayCount;

	SetNotifyPlayerEventL();

	iObserver->HandleResourceEventL(ERscForUserConfirm);	//	壒惡僷僗儕僜乕僗偺奐曻 MOD For D_82400007238(堷悢曄峏)
	iObserver->HandlePlayerEventL(state);
	}

/**
 *	忬懺弶婜壔拞偺僗僥乕僩曄峏捠抦
 *
 *	@memo MOD824(儕僼傽僋僞儕儞僌)
 *	@param 側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::ChangeStateInInitializingL()
	{
	if(ESmbMusicMWPlayerStatePause == iPlayerInfo.iPlayState)
		{
		//	摢弌偟仺壒柭摦懸婡拞偩偭偨応崌傕偁傞丅摢弌偟帺懱偼摨婜張棟側偺偱丄嬋摢偵嫮惂彂偒姺偊
		if(EFalse != iPlayerState->IsSetSongHead()
		|| (ESmbMusicMWPlayerListEnd == iPlayerInfo.iModifyCause && EFalse == IsExitPlayerAtLastFrame()))	//	儕僗僩僄儞僪偩偭偨応崌傕嫮惂揑偵嬋摢
			{
			SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLowest,_L("SetSongHead Force"));
//DEL-S D_82400014729
//			InitialStartTime();	//	StartTime傪弶婜壔(Disconnect傪巒傔偨偲偒偵偼丄傑偩SetPlayContext偺懳徾偵側傞帪娫偑庢傟偰偄傞偙偲傕偁傞)
//DEL-E	D_82400014729
			iObserver->HandlePlayerEventL(ESmbMusicAPSinglePlayerStateQuitSetSongHead);	//	return偼偟側偄丅埲屻偺張棟傕昁梫
			iPlayerState->CancelSetSongHeadRequest();
			}
		
		TInt ret = InitialPlayerControlL();
		
		if(KErrNone != ret && KErrNotReady != ret)
			{
			SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelNormal,_L("InitialPlayerControlL:%d"), ret);
			User::Leave(ret);
			}
		}
		
	if(ESmbMusicMWPlayerStatePause != iPlayerInfo.iPlayState
	&& ESmbMusicMWPlayerStateInitial != iPlayerInfo.iPlayState)
		{
		InitialPlayStateL();
		}
	else if(	ESmbMusicMWPlayerStatePause == iPlayerInfo.iPlayState 
			&&	ESmbMusicMWPlayerListEnd == iPlayerInfo.iModifyCause
			&&	EFalse != IsExitPlayerAtLastFrame())
		{
		//	ListEnd廔椆帪丄
		iObserver->HandlePlayerEventL(ESmbMusicAPSinglePlayerStateStartPauseEnd);
		}
	else
		{
		//	堦帪掆巭偑棃偨応崌丄case撪偱張棟傪峴偄僒乕僶忬懺偑弶婜忬懺偵側偭偰偙偙偵擖傞
		//	ESmbMusicMWPlayerStateInitial偑偦傕偦傕棃偨応崌偵偮偄偰偼丄
		//	MW懁偱弶婜壔張棟偑彑庤偵峴傢傟偨傕偺偲偟偰惍棟(尰忬丄偁傝偊側偄儐乕僗働乕僗)
		iObserver->HandlePlayerEventL(ESmbMusicAPSinglePlayerStateClearContextComplete);
		}
	}

/**
 *	壒柭摦奐巒
 *
 *	@memo Modify For 824(RecordPlayReportCounter)
 *	@param 側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::StartPlayL()
	{
	if(ESmbMusicMWPlayerStartPlay == iPlayerInfo.iPlayerEvent)	//	捠忢嵞惗壒柭摦奐巒
		{
		TUint32 time(0);
		TInt playtimeErr = iPlayerSession->GetPlayTime(time);
		
		if(KErrNone != playtimeErr)
			{
			SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLow,_L("ReportCounterPlayStartPlayTime:%d"), playtimeErr);
			}
		if(EFalse != iInitialSettings.iIsCpPlay)
			{
			TInt pauseErr = iReportCounter->Pause(time, CSmbMusicAPLibReportCounter::EPosition);		
			TInt startErr = iReportCounter->Start(time, iInitialSettings.iPlayEndTime - iInitialSettings.iPlayStartTime);
	
			if(KErrNone != pauseErr || KErrNone != startErr)
				{
				SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLow,_L("ReportCounterPlayStartErr:%d(Pause) %d(start)"), pauseErr, startErr);
				}

			}
		else
			{
			TInt startErr = iReportCounter->Start(time, iPlayerInfo.iAdditionalInfo.iStartPlayInfo.iTotalTime);	
			if(KErrNone != startErr)
				{
				SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLow,_L("ReportCounterPlayStartErr:%d(Start)(cpPlay)"), startErr);
				}
			}
		}
		
	TInt numberOfStartPlay = sizeof(KRefTableForStartPlay)/sizeof(KRefTableForStartPlay[0]);
	TSmbMusicAPSinglePlayerState state = EErrState;
	for(TInt

⌨️ 快捷键说明

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