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

📄 smbmusicapsingleplayermodel.cpp

📁 symbian代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/*----------------------------------------------------------------------------*/
// Copyright (c) 2004 Sony Ericsson Mobile Communications Japan, Inc.
// All rights reserved.
/*----------------------------------------------------------------------------*/
// FileName:
//   SmbMusicAPSinglePlayerModel.cpp
//   
// Description:
//	儈儏乕僕僢僋堦嬋嵞惗儌僨儖僋儔僗
//
//	Modify:
//	 2006-07-07	僐乕僪惍棟	K3Hirono
//	2006-07-11	MW偲偺Disconnect慜張棟傪捛壛	K3Hirono
//	2006-07-12	ClearContext張棟捛壛丅Disconnect旕摨婜懳墳	K3Hirono
//	2006-07-12	SuperDuke偲壒惡僷僗惂屼偺張棟弴彉曄峏
//				嵞惗婜尷慜懳墳
//				Disconnect廋惓	K3Hirono
//	2006-07-18	墘憈帪娫庢摼娭悢偵SuperDuke揹尮Off懳嶔傪捛壛
//				iNotify偑儊儌儕儕乕僋傪婲偙偟偰偄偨偺偱廋惓
//	2006-07-25	嵞惗夞悢峏怴丒嵟廔嵞惗擔帪峏怴僋儔僗傪嶍彍
//	2006-08-16	嵞惗嵞奐梡偺張棟傪捛壛
//				僄儔乕僐乕僪傪曉偡偨傔偺張棟傪捛壛
//				failsong偍傛傃HWAbort帪偺儘僌傪捛壛
//	2006-08-24	儈儏乕僩嵞惗偐偳偆偐偺僼儔僌傪捛壛
//				忋婰僼儔僌妋擣梡娭悢捛壛
//				儈儏乕僩嵞惗愝掕
//
//	2007-02-01	PTX824Start
//	2007-06-26	D_82400004307僒僽僗僋儕僾僔儑儞僐儞僥儞僣嵞惗惂尷偺専嵏桳柍梡偺廋惓(昁偢専嵏偡傞傛偆偵側偭偰偄傞)
//	2007-07-03丂D_82400005934LCDOFF暅婣帪丄嵞惗宱夁帪娫偑忢偵0偵側傞傪廋惓
//	2007-08-07	D_82400009845	NoImage庢摼僋儔僗捛壛
//	2007-09-12	D_82400014279	堦帪掆巭帪偺摢弌偟丄嬋廔抂帪摍偺僉乕僈僀僟儞僗偺廋惓
//				D_82400014757	嵞惗宱夁帪娫庢摼張棟偵曄峏(MW偐傜僄儔乕偑棃偨応崌偼丄師夞偺SetPlayContext偵巊偆抣傪曉媝偡傞)
//	2007-09-22	D_82400015651, D_82400015652
//	2007-09-28	D_82400015989
//	2007-10-02	D_82400016111
// --[PTX825]---+---------------+---------------------------------------------
// 2007/06/15   |SDNA抮怟       |PTX825丂梫審懳墳
/*------------------------------------------------------------------------*/
// $NoKeywords: $

#ifndef SMBMUSICAPSINGLEPLAYERMODEL_H_
#include "SmbMusicAPSinglePlayerModel.h"
#endif	//SMBMUSICAPSINGLEPLAYERMODEL_H_	//	堦嬋嵞惗僾儗僀儎乕Model

#ifndef SMBMUSICAPSINGLEPLAYERAPPUI_H_
#include "SmbMusicAPSinglePlayerAppUi.h"	//	堦嬋嵞惗僾儗僀儎乕AppUI
#endif	//SMBMUSICAPSINGLEPLAYERAPPUI_H_

#ifndef SMBMUSICAPSINGLEPLAYEROBSERVER_H_	
#include "SmbMusicAPSinglePlayerObserver.h"	//	堦嬋嵞惗僾儗僀儎乕僆僽僒乕僶僋儔僗
#endif	//SMBMUSICAPSINGLEPLAYEROBSERVER_H_

#ifndef SMBMUSICAPSINGLEPLAYERSTATE_H_
#include "SmbMusicAPSinglePlayerState.h"	//堦嬋嵞惗僾儗僀儎乕忬懺娗棟僋儔僗
#endif	//SMBMUSICAPSINGLEPLAYERSTATE_H_

#ifndef __SMBMMAUDIOCOMMON_H__
#include <SmbMmAudioCommon.h>								//壒惡僷僗惂屼僾儔僀僆儕僥傿
#endif	//__SMBMMAUDIOCOMMON_H__

#ifndef FJMSAUDIOCONTROLLERDEFINE_H__
#include <FjMsAudioControllerDefine.h>						//壒惡僷僗prioritySetting
#endif	//FJMSAUDIOCONTROLLERDEFINE_H__

#ifndef SMBMUSICAPSINGLEPLAYERNOTIIFY_H_
#include "SmbMusicAPSinglePlayerNotify.h"					//AO:僾儗僀儎忬懺曄峏捠抦
#endif	//SMBMUSICAPSINGLEPLAYERNOTIIFY_H_

#ifndef SMBMUSICAPSINGLEPLAYERSONGINFO_H_
#include "SmbMusicAPSinglePlayerSongInfo.h"					//AO:嬋忣曬
#endif	//SMBMUSICAPSINGLEPLAYERSONGINFO_H_

#ifndef SMBMUSICAPSINGLEPLAYERSETPLAYCONTEXT_H_
#include "SmbMusicAPSinglePlayerSetPlayContext.h"				//AO:SetContext
#endif	//SMBMUSICAPSINGLEPLAYERSETPLAYCONTEXT_H_

#ifndef SMBMUSICAPSINGLEPLAYERDELETEITEM_H_
#include "SmbMusicAPSinglePlayerDeleteItem.h"				//AO:DeleteItem
#endif	//SMBMUSICAPSINGLEPLAYERDELETEITEM_H_

//DEL-S D_82400009845	僿僢僟偱include偡傞偨傔
//#ifndef SMBMUSICAPSINGLEPLAYERIMAGE_H_
//#include "SmbMusicAPSinglePlayerImage.h"					//AO:GetImage
//#endif	//SMBMUSICAPSINGLEPLAYERIMAGE_H_
//DEL-E D_82400009845

#ifndef SMBMUSICAPSINGLEPLAYERCREATESONGITEM_H_
#include "SmbMusicAPSinglePlayerCreateSongItem.h"			//AO:CreateSongItem
#endif	//	SMBMUSICAPSINGLEPLAYERCREATESONGITEM_H_

#ifndef SMBMUSICAPSINGLEPLAYERRECORDPLAYREPORT_H_
#include "SmbMusicAPSinglePlayerRecordPlayreport.h"			//AO:堦嬋嵞惗僾儗僀儎乕嵞惗棜楌婰榐
#endif	//SMBMUSICAPSINGLEPLAYERRECORDPLAYREPORT_H_

#ifndef __SMBMUSICAPSINGLEPLAYERDEFAULTSETTINGS_H__
#include "SmbMusicAPSinglePlayerDefaultSettings.h"			//SetConfigL偱愝掕偡傞抣
#endif	//__SMBMUSICAPSINGLEPLAYERDEFAULTSETTINGS_H__

#ifndef __SMBMUSICAPLIBISSETTINGFUNC_H__ 
#include "SmbMusicAPLibIsSettingFunc.h"						//嬋傪僨僼僅儖僩偵栠偡懠
#endif //__SMBMUSICAPLIBISSETTINGFUNC_H__

#ifndef SMBMUSICAPSINGLEPLAYERLOG_H_
#include "SmbMusicAPSinglePlayerLog.h"						//	儘僌
#endif	//SMBMUSICAPSINGLEPLAYERLOG_H_

#ifndef __SMBMUSICAPLIBREPORTCOUNTER_H__
#include    "SmbMusicAPLibReportCounter.h"	//	APLib:嵞惗夞悢棜楌僇僂儞僞
#endif	//__SMBMUSICAPLIBREPORTCOUNTER_H__

#include <Music.mbg>	//	僕儍働僢僩僨僼僅儖僩夋憸梡

USING_NAMESPACE_DCM
SEMCJ_NAMESPACE_BEGIN

#ifndef SMBMUSICAPSINGLEPLAYERMODELDATA_H_
#include "SmbMusicAPSinglePlayerModelData.h"		//	堦嬋嵞惗僾儗僀儎乕ModelData
#endif	//SMBMUSICAPSINGLEPLAYERMODELDATA_H_


///////////////////////////////////////////////////////////////////////////////
// CSmbMusicAPSinglePlayerModel
/**
 *	僐儞僗僩儔僋僞
 *	
 *	@param	側偟
 */
CSmbMusicAPSinglePlayerModel::CSmbMusicAPSinglePlayerModel()
	:	iCurrentPowerSavingMode(ETrue),					//	SuperDuke偺揹尮惂屼丅弶夞EFalse偵昁偢愝掕偡傞偨傔		
		iSpeakerOut(EFalse),							//	僗僺乕僇乕偺奜晹弌椡傪偟偰偄傞偐偳偆偐(偟偰偄側偄)
		iServerState(ESmbMusicMWPlayerStateInvalid),	//	僐僱僋僩偡傜偟偰偄側偄丅柍岠
		iExitErrCode(KErrNone)							//	僄儔乕廔椆帪偺棟桼
	{
	}

/**
 *	僼傽僋僩儕娭悢
 *	
 *	@param	側偟
 *	@return	CSmbMusicAPSinglePlayerModel*
 */
CSmbMusicAPSinglePlayerModel* CSmbMusicAPSinglePlayerModel::NewL()
	{
	CSmbMusicAPSinglePlayerModel* self = new(ELeave) CSmbMusicAPSinglePlayerModel();
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop(self);
	return self;
	}

/**
 *	僨僗僩儔僋僞
 *
 *	@param	側偟
 */
CSmbMusicAPSinglePlayerModel::~CSmbMusicAPSinglePlayerModel()
	{	
	if(EFalse != IsConnectRsc())
		{
		DisconnectPlayerControlForce();
		}
	delete iNotify;
	delete iSetPlayContext;
	delete iDispInfo;
	delete iPlayerSession;
	delete iAudioRouting;
	
	//	MWLib偵懳偟偰梫媮傪峴偆儊儞僶偼丄偙偺拞偱delete偝傟傞
	//	iMWLibSession偑側偄偲iSongItem偼嶌傜傟側偄偺偱丄巆傞偙偲偼側偄偼偢
	DisconnectMWLib();		//	儈僪儖僂僃傾儔僀僽儔儕僙僢僔儑儞傪僋儘乕僘偟偰偐傜
	delete iMWLibSession;	//	儈僪儖僂僃傾儔僀僽儔儕僙僢僔儑儞傪徚偡
	delete iGetDefaultImage;	//ADD For D_82400009845
	delete iPlayerState;
	delete iReportCounter;

	delete iJacketImage.iMainBitmap;
	delete iJacketImage.iMaskedBitmap;
	}
	

/**
 *	2nd僐儞僗僩儔僋僞
 *	@memo	徻嵶愝寁廋惓(Notify偺惗惉)
 *	@param	側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::ConstructL()
	{
	//	忬懺娗棟
	iPlayerState = new(ELeave)TSmbMusicAPSinglePlayerStateController();
	iPlayerState->Initial();
	
	//	MusicMW儔僀僽儔儕
	//	儔僀僽儔儕偵娭偟偰偼儕僜乕僗庢摼偺昁梫偑側偄偺偱忢偵愙懕
	iMWLibSession = new(ELeave)RSmbMusicMWLibSession();	
	TInt ret = iMWLibSession->Connect();
	if(KErrNone != ret)
		{
		SmbMusicAPSinglePlayerLog::OutputLogWithServerConnect(KModel, EModel, ELogLevelHighest,_L("MWLibCannotConnect!!:%d"), ret);
		User::Leave(ret);
		}

	//	MusicMWPlayerSession
	iPlayerSession = new(ELeave)RSmbMusicMWPlayerSession();

	//  壒惡僷僗惂屼僋儔僀傾儞僩惗惉
	iAudioRouting = CMMAudioRoutingClient::NewL(*this);

	//	壒検偵僨僼僅儖僩抣愝掕
	iVolume = KDefaultVolume;

	//	MW僾儗僀儎乕惂屼捠抦梫媮僋儔僗惗惉
	//	僾儗僀儎乕惂屼偲愙懕偟偰偄側偄忬懺偱梫媮偡傞偲KErrNotReady偑曉傞偩偗側偺偱丄惗惉偟偰偍偔
	iNotify = CSmbMusicAPSinglePlayerNotify::NewL(iPlayerSession, this);	
	
	//	棜楌僇僂儞僩僋儔僗惗惉
	iReportCounter = CSmbMusicAPLibReportCounter::NewL(TCallBack(RecordPlayReportCallBackL, this));
	}

/**
 *	梫墘憈妋擣嬋偵懳偡傞愝掕丅墘憈偡傞偐偳偆偐
 *	
 *	@return void
 *	@memo	ADD824 TODO!!
 */
void CSmbMusicAPSinglePlayerModel::SetConfirmPlay()
	{
	SetSpeakerOut();
	iPlayerSession->SetConfirmPlay();
	}

/**
 *	拝怣壒側偳傪僨僼僅儖僩偺儊儘僨傿偵栠偡
 *
 *	@param	側偟
 *	@return void
 *	@memo	嶍彍屻張棟丅塣梡忋棙梡偝傟側偄
 */
TBool CSmbMusicAPSinglePlayerModel::DefaultMelodySetting()
	{
	return 	SmbMusicAPLibIsSettingFunc::ResetMusicSettingL(iInitialSettings.iContentsId);
	}
	
/**
 *	僾儗僀儎惂屼徣揹椡
 *
 *	@memo	夵傔偰尰忬偺抣偱愝掕偟側偍偡丅<br>僒乕僶偺忬懺偵傛偭偰偼丄帺暘偺帩偭偰偄傞僼儔僌偩偗傪曄峏偟丄幚嵺偵愝掕偵峴偭偰偄側偄偨傔昁梫丅
 *	@param	側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::SetPowerSaving()
	{
	SetPowerSaving(iPowerSavingMode);
	}

/**
 *	僾儗僀儎惂屼徣揹椡傪愝掕偡傞
 *
 *	@param	TBool aBool	EFalse:徣揹椡儌乕僪OFF/ETrue:徣揹椡儌乕僪ON 
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::SetPowerSaving(TBool aBool)
	{
	if(EFalse == IsConnectRsc())
		{
		return;	//	儕僜乕僗偲愙懕偟偰偄側偄側傜偽丄側偵傕偟側偄
		}
	iPowerSavingMode = aBool;	//	崱偐傜愝掕偟偨偄儌乕僪
	TInt err = KErrNone;

	if(iCurrentPowerSavingMode != iPowerSavingMode)	//	愝掕偟偨偄儌乕僪偲丄尰嵼偺儌乕僪偑堦抳偟側偐偭偨偲偒偺傒張棟傪峴偆
		{
		//	ETrue傪愝掕偡傞偺偼丄懄揹尮棊偪偺応崌偺傒
		if(EFalse != iPowerSavingMode)
			{
			//	偩偐傜丄僒乕僶偑Pause偐弶婜忬懺丄Pause偱傕壗傜偐偺張棟傪峴偭偰偄傞応崌(ClearContext摍)応崌偼丄愝掕偟側偄
			if(EFalse == iPlayerState->CanSetSuperDukePowerOff()
			|| (ESmbMusicMWPlayerStatePause != iServerState && ESmbMusicMWPlayerStateInitial != iServerState))
				{
				err = KErrNotReady;
				}
			else
				{
				//	偙偺屻揹尮偑懄棊偪偡傞偼偢側偺偱丄壒惡僷僗偺僾僣壒傪杊巭
				StopAudioRouting();
				err = iPlayerSession->SetPowerSaving(iPowerSavingMode);
				}
			}
		else
			{
			//	EFalse偺応崌偼偄偮偱傕OK
			err = iPlayerSession->SetPowerSaving(iPowerSavingMode);
			}
		
		if(KErrNone == err)
			{
			iCurrentPowerSavingMode = iPowerSavingMode;
			}
		}
	}
	

/**
 *	僾儗僀儎丒壒惡僷僗惂屼偲偺愙懕傪愗抐偡傞
 *
 *	@memo	Modify For PTX824. UserConfirm
 *	@param	側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::DisconnectAllL()
	{
	//	壒惡僷僗惂屼傪庤曻偣傞忬懺偵偡傞
	StopAudioRouting();

	//DEL-S D_82400007238	State娗棟僋儔僗撪偱峴偆傛偆曄峏
	//	儐乕僓妋擣拞傪棊偲偡
	//	iPlayerState->SetUserPlayConfirm(EFalse);
	//DEL-E D_82400007238
	
	//	MW僾儗僀儎乕惂屼偲偺Disconnect傪奐巒偡傞
	//	帪娫傪曐懚
	TUint32 time;
	TInt ret = iPlayerSession->GetPlayTime(time);	//	曐懚

	SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLowest,_L("Disconnect GetPlayTimeErr:%d time:%d"), ret, time);
				
	if(KErrNone == ret)
		{
		iStartTime = time;
		}
	
	//Disconnect奐巒
	iPlayerState->SetInitialForDisconnect();
	DisconnectPlayerControlL();
	}

/**
 *	僾儗僀儎乕惂屼偲偺愙懕傪嫮惂揑偵愗抐偡傞
 *
 *	@memo HWAbort/僨僗僩儔僋僞
 *	@param 側偟
 *	@return void
 */
TInt CSmbMusicAPSinglePlayerModel::DisconnectPlayerControlForce()
	{

	SmbMusicAPSinglePlayerLog::OutputLogWithServerConnect(KModel, EModel, ELogLevelLowest,_L("DisconnectPlayerControlForce IsConnectRsc:%d"), IsConnectRsc());
	if(EFalse == IsConnectRsc())
		{
		return KErrNotReady;
		}
	
	//	壒惡僷僗掆巭
	StopAudioRouting();
			
	//	SuperDuke偺揹尮傪棊偲偡
	SetPowerSaving(ETrue);

	//	僾儗僀儎惂屼偲偺愙懕傪愗傞
	if(NULL != iSetPlayContext)
		{
		iSetPlayContext->Cancel();
		}
		
	if(NULL != iNotify)
		{
		iNotify->Cancel();
		}
		
	TInt ret(KErrNone);
	if(NULL != iPlayerSession)
		{
		ret = iPlayerSession->Disconnect();
		}
	else
		{
		SmbMusicAPSinglePlayerLog::OutputLogWithServerConnect(KModel, EModel, ELogLevelNormal,_L("DisconnectPlayerControlForce DisconnectErr:%d"), ret);
		}
	
	if(KErrNone == ret || KErrNotReady == ret)
		{
		SetConnectRsc(EFalse);
		iPlayerState->SetInitialPlayerControlComplete();
		}
	
	return ret;
	}
	
/**
 *	僾儗僀儎惂屼僒乕僶偲偺愙懕傪愗抐偡傞
 *
 *	@param	側偟
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::DisconnectPlayerControlL()
	{
	TInt ret = InitialPlayerControlL();

	SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLowest,_L("DisconnectPlayerControl:%d"), ret);

	if(KErrNotReady == ret)
		{
		return;	//	嵞搙屇偽傟傞(AppUi偺HandleCommandL嶲徠)
		}

	if(KErrNone != ret && KErrNotReady != ret)	//	偦傟埲奜偺僄儔乕
		{
		SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelNormal,_L("Disconnect(InitialPlayerControl) Err:%d"), ret);
		User::Leave(ret);
		}

	//	SuperDuke偺揹尮傪棊偲偡
	SetPowerSaving(ETrue);

	//	僾儗僀儎惂屼偲偺愙懕傪愗傞
	SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLowest,_L("ConnectRsc?: %d iServerState:%d"), IsConnectRsc(), iServerState);

	TInt err(KErrNone);
	//	ESmbMusicMWPlayerStateInvalid偲偄偆偙偲偼丄偦傕偦傕Connect偟偰偄側偄偺偱Disconnect傪憲傞昁梫偑側偄
	if(ESmbMusicMWPlayerStateInvalid != iServerState && EFalse != IsConnectRsc())	//	嵟掅尷InitialMode偵側偭偰偄傞偙偲傪妋偐傔傞(KErrNotReady傪愗傝暘偗傞偨傔)
		{
		err = iPlayerSession->Disconnect();
		}

⌨️ 快捷键说明

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