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

📄 smbmusicapsingleplayerappui.cpp

📁 symbian代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
/*----------------------------------------------------------------------------*/
// Copyright (c) 2007 Sony Ericsson Mobile Communications Japan, Inc.
// All rights reserved.
/*----------------------------------------------------------------------------*/
// FileName:
//   CSmbMusicAPSinglePlayerAppUi.cpp
//   
// Description:
//	儈儏乕僕僢僋傾僾儕堦嬋嵞惗僾儗僀儎乕偺AppUi僋儔僗丅
//	丒價儏乕僋儔僗傪惗惉偡傞
//	丒僐儅儞僪僋儔僗傪惗惉偡傞
//	丒僾儘僷僥傿僄乕僕僃儞僩偐傜偺捠抦傪庴偗傞
//	丒儌僨儖僋儔僗偐傜偺捠抦傪庴偗傞
//	丒傾僾儕嫞崌丒儕僜乕僗嫞崌僐儞僩儘乕儔乕僋儔僗偐傜偺捠抦傪庴偗傞
//	丒僶僢僋儔僀僩偺ON./OFF傪庴偗傞
//	丒傾僾儕働乕僔儑儞偺慜柺/攚柺堏摦偺捠抦傪庴偗傞
//
//	Modify:
//	2006-07-06	BG張棟廋惓	K3Hirono
//	2006-07-11	MW偲偺Disconnect慜張棟傪捛壛	K3Hirono
//	2006-07-12	SuperDuke偲壒惡僷僗惂屼張棟弴斣偺曄峏
//				嵞惗婜尷慜懳墳
//				Disconnect廋惓	K3Hirono
//	2006-08-24	儈儏乕僩嵞惗娭楢偺僐乕僪傪捛壛	K3hirono
//	2006-09-07	儈儏乕僩嵞惗偺僞僀儈儞僌傪偢傜偡偨傔偺僞僀儅傪捛壛
//				奜晹儊儌儕憓敳帪偺張棟傪捛壛	K3hirono
//
//	2007-02-01	PTX824Start
//	2007-07-03	D_82400005933
//	2007-07-24	D_82400007238
//	2007-09-13	D_82400014940	儕僜乕僗奐曻張棟偵曄峏
//	2007-10-01	D_82400016111
/*------------------------------------------------------------------------*/
// $NoKeywords: $

#ifndef SMBMUSICAPSINGLEPLAYERAPPUI_H_
#include "SmbMusicAPSinglePlayerAppUi.h"		//	堦嬋嵎巔惃僾儗僀儎乕AppUi僋儔僗
#endif	//SMBMUSICAPSINGLEPLAYERAPPUI_H_

#ifndef SMBMUSICAPSINGLEPLAYERDOCUMENT_H__
#include "SmbMusicApSinglePlayerDocument.h"		//	堦嬋嵞惗僾儗僀儎僪僉儏儊儞僩僋儔僗
#endif	//SMBMUSICAPSINGLEPLAYERDOCUMENT_H__

#ifndef SMBMUSICAPSINGLEPLAYERVIEW_H_
#include "SmbMusicAPSinglePlayerView.h"			//	堦嬋嵞惗僾儗僀儎View僋儔僗
#endif	//SMBMUSICAPSINGLEPLAYERVIEW_H_

#ifndef SMBMUSICAPSINGLEPLAYERMODEL_H_
#include "SmbMusicAPSinglePlayerModel.h"		//	堦嬋嵞惗僾儗僀儎儌僨儖僋儔僗
#endif	//SMBMUSICAPSINGLEPLAYERMODEL_H_

#ifndef SMBMUSICAPSINGLEPLAYERRSCCONTROLLER_H_
#include "SmbMusicAPSinglePlayerRscController.h"		//	堦嬋嵞惗僾儗僀儎乕傾僾儕嫞崌丒儕僜乕僗嫞崌僐儞僩儘乕儖僋儔僗
#endif	//	SMBMUSICAPSINGLEPLAYERRSCCONTROLLER_H_

#ifndef __SMBMUSICAPSINGLEPLAYEREXTERNALINTERFACE_H__
#include "SmbMusicAPSinglePlayerExternalInterface.h"	//	堦嬋嵞惗僾儗僀儎乕Interface
#endif	//__SMBMUSICAPSINGLEPLAYEREXTERNALINTERFACE_H__

#ifndef FJPGPROPAGENT_H__
#include <FjpgPropAgent.h>                     //	RPGPropAgent
#endif	//FJPGPROPAGENT_H__

#ifndef FJPGBASIC_H__
#include <FjpgBasic.h>                         //	儅僫乕儌乕僪
#endif	//FJPGBASIC_H__

#ifndef FJPGBASICSTATUS_H__
#include <FjpgBasicStatus.h>                   //	僀儎儂儞忬懺
#endif	//FJPGBASICSTATUS_H__

#ifndef FJUSIMACCESS_H__ 
#include <FJUsimAccess.h>						//	USIM彂偒姺偊
#endif	//FJUSIMACCESS_H__

#ifndef FJPGBASICCONTENTS_H__
#include <FjpgBasicContents.h>					//	DB攋懝(僐儞僥儞僣娗棟)
#endif	//FJPGBASICCONTENTS_H__

#ifndef __SMBPGSTATUS_H__
#include <SmbPGStatus.h>						//	僶僢僋儔僀僩忬懺
#endif	//__SMBPGSTATUS_H__

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

#ifndef FJPGBASICLASERVER_H__
#include <FjpgBasicLaServer.h>					//	Foreground/BackGround
#endif	//FJPGBASICLASERVER_H__

#ifndef __SMBPGSTRATEGYPLUGINIF_H__
#include <SmbPGStrategyPluginIF.h>				//	USIM彂偒姺偊
#endif	//__SMBPGSTRATEGYPLUGINIF_H__

#ifndef FJAFENV_H__
#include <FjAfEnv.h>			// CAfEnv
#endif	//FJAFENV_H__

#include <SmbAfWording.rsg>	//	儚乕僨傿儞僌

SEMCJ_NAMESPACE_BEGIN


#ifndef SMBMUSICAPSINGLEPLAYER_HRH__
#include "SmbMusicAPSinglePlayer.hrh"
#endif	//SMBMUSICAPSINGLEPLAYER_HRH__

#ifndef SMBMUSICAPSINGLEPLAYERAPPUIDATA_H_
#include "SmbMusicAPSinglePlayerAppUiData.h"		//	堦嬋嵞惗僾儗僀儎乕AppUiData
#endif	//SMBMUSICAPSINGLEPLAYERAPPUIDATA_H_

///////////////////////////////////////////////////////////////////////////////
// CSmbMusicAPSinglePlayerAppUi

/**
 *	CSmbMusicAPSinglePlayerAppUi僐儞僗僩儔僋僞
 *	
 *	@param		側偟
 */
CSmbMusicAPSinglePlayerAppUi::CSmbMusicAPSinglePlayerAppUi()
	:	iModel(NULL)
	{
	}

/**
 *	僨僗僩儔僋僞
 *
 *	@param	側偟
 */
CSmbMusicAPSinglePlayerAppUi::~CSmbMusicAPSinglePlayerAppUi()
	{
	// View 傪嶍彍偡傞慜偵 View 娗棟僒乕價僗偵捠抦偡傞丏
	iAfEnv.HandleBeginningAppUiDestroy();
	
	//	僞僀儅
	if (iTimer)
		{
		CancelTimer();
		}
	delete iTimer;
	
	// View偲Command偺嶍彍
	delete iView;
	delete iCommand;

	delete iRscController;
	delete iPropAgentWatcher;
	delete iExtMemWatcher;		

	RPGPropAgent& propAgent = iAfEnv.PropAgent();
	//	僾儘僷僥傿僄乕僕僃儞僩偵丄枹婲摦傪愝掕
	TRAPD(notUsed, SmbPGMusic::SetSinglePlayerStateL(propAgent, ESmbPGMusicAPSinglePlayerStateNotStarting));
	SmbMusicAPSinglePlayerLog::OutputLog(KAppUi, EAppUi, ELogLevelNormal,_L("~CSmbMusicAPSinglePlayerAppUi:%d"), notUsed);
	}


/**
 *	傾僾儕働乕僔儑儞偺弶婜壔傪峴偆
 *
 * @param	側偟
 * @return	void
 */
void CSmbMusicAPSinglePlayerAppUi::ConstructL()
	{
	CSmbAfAppUi::BaseConstructL();
 
#ifdef _DEBUG
	// NOTE: Enable WsSession's auto flush mode to make
	// drawing code debugging easy.
	CEikonEnv::Static()->WsSession().SetAutoFlush(ETrue);
#endif

	// 奜晹儊儌儕僂僅僢僠儍惗惉
	iExtMemWatcher = CSmbExtMemWatcher::NewL();
	// 奜晹儊儌儕僆僽僓乕僶愝掕
	iExtMemWatcher->SetObserver(CSmbExtMemWatcher::EMs | CSmbExtMemWatcher::ESd, this); 	// 娔帇懳徾: M.S. & SD僇乕僪


	//	僾儘僷僥傿僄乕僕僃儞僩傪庢摼
	RPGPropAgent& propAgent = iAfEnv.PropAgent();
	
	//	僾儘僷僥傿僄乕僕僃儞僩偵丄婲摦張棟拞傪愝掕
	SmbPGMusic::SetSinglePlayerStateL(propAgent, ESmbPGMusicAPSinglePlayerStateStarting);

	// 	僾儘僷僥傿僄乕僕僃儞僩娔帇傾僀僥儉
	const TUid KPAWatcheUids[] = 
		{
		{KPGMannerModeUidValue},            //	儅僫乕儌乕僪
		{KPGStatusEarphoneStatusUidValue},	//	僀儎儂儞僗僥乕僞僗
		{KPGSOUsimRefreshTypeUidValue},		//	USim
		{KPGMusicContentsRecoverUidValue},	//	DB(Contents娗棟)
		{KPGSOMusicMWLibDBRecoverUidValue},	//	DB(MWLib)
		{KPGSOMusicAPSongInfoEditIndUidValue},	//	徻嵶忣曬曇廤
		{KPGSOMusicAPCompNotificationUidValue}		//	SD-Video->Exit	儈儏乕僕僢僋嫞崌捠抦
//		{KPGSOMusicAPSinglePlayerStateUidValue},// 堦嬋嵞惗僾儗僀儎偺忬懺
		};
	
	//	屄悢	
	TInt const KPAWatcheItemNum = sizeof(KPAWatcheUids) / sizeof(KPAWatcheUids[0]);

	//	僾儘僷僥傿僄乕僕僃儞僩Watcher傪惗惉
	iPropAgentWatcher = CPGPropAgentWatcher::NewL(propAgent, this, KPAWatcheUids, KPAWatcheItemNum);
	
	//	傾僾儕嫞崌丒儕僜乕僗嫞崌僐儞僩儘乕儔僋儔僗傪惗惉
	iRscController = CSmbMusicAPSinglePlayerRscController::NewL();
	iRscController->SetObserver(this);
	
	TUint32 volume = static_cast<TUint>(SmbPGMusic::MusicAPVolumeSettingForSinglePlayerL(propAgent));
	
	// 儌僨儖僋儔僗偺庢摼
	CSmbMusicAPSinglePlayerDocument* doc = static_cast<CSmbMusicAPSinglePlayerDocument*>(Document());
	iModel = doc->GetModel();
	__ASSERT_DEBUG(iModel != NULL, User::Panic(KPanicCategory, EInvalidStatus));
	iModel->SetObserver(this);
	iModel->SetVolume(volume);
	iAsyncState = iModel->SinglePlayerStateInfo();

	// Command 偺弶婜壔偲搊榐丏
	iCommand = new(ELeave) CSmbMusicAPSinglePlayerCommand(this, iModel);
	iCommand->ConstructL();
	
	// 巊梡偡傞 View 偺弶婜壔偲 View 愗傝懼偊僒乕價僗傊偺搊榐丅
	iView = new(ELeave) CSmbMusicAPSinglePlayerView(volume);
	iView->RegisterViewL();
	
	//	僞僀儅乕僋儔僗偺惗惉
	iTimer = CPeriodic::NewL(CActive::EPriorityIdle);
	}

/**
 *	僐儅儞僪張棟
 *
 *	@memo	奐巒/廔椆/儕僜乕僗偺庢摼丒奐曻偼AppUi偱張棟偡傞
 *	@param	TInt	aCommand	CommandID
 *	@return	void
 */
void CSmbMusicAPSinglePlayerAppUi::HandleCommandL(TInt aCommand)
	{
	SmbMusicAPSinglePlayerLog::OutputLog(KAppUi, EAppUi, ELogLevelLowest,_L("Command:%d closed?:%d Fore?:%d BackLight?:%d"), aCommand , IsCaseClosedL(), IsForegroundL(), IsLcdBackLightOffL());

	// 幚峴晹
	switch (aCommand)
		{
		
	//	嫮惂廔椆
	case EEikCmdExit:
		{
		ExitL(KLaReturnOnHookUid);
		break;
		}
	
	//	惓忢廔椆
	case ESmbMusicAPSinglePlayerCmdExitPlayer:
		{
		ExitL(KLaReturnErrNoneUid);
		break;
		}
	
	//	僋儕傾僉乕廔椆
	case ESmbMusicAPSinglePlayerCmdClearExitPlayer:
		{
		ExitL(KLaReturnClearUid);
		break;		
		}
	
	//	僄儔乕僐乕僪傪曉偟偨偄偑丄嫮惂廔椆偼偟偨偔側偄応崌
	case ESmbMusicAPSinglePlayerCmdReturnErrCodeExitPlayer:
		{
		ExitL(KLaReturnErrUid);
		break;
		}
	
	//	僄儔乕廔椆(HWAbort)
	case ESmbMusicAPSinglePlayerCmdErrExitPlayer:
		{
		ErrExitPlayerL();
		break;
		}
	
	//	儕僜乕僗奐曻拞+ListEnd廔椆
	case ESmbMusicAPSinglePlayerCmdSetExitPlayer:
		{
		ExitPlayerForListEndInDisconnectRsc();
		break;
		}
		
	//	僾儗僀儎奐巒
	case ESmbMusicAPSinglePlayerCmdStartPlayer:
		{
		PrepareToPlayerL();
		break;	
		}
		
	//	ClearPlayContext姰椆
	case ESmbMusicAPSinglePlayerCmdClearPlayContextComplete:
		{
		ClearPlayContextCompleteL();
		break;
		}
		
	//	儕僜乕僗Disconnect張棟廔椆
	case ESmbMusicAPSinglePlayerCmdDisconnectCompleted:
		{
		DisconnectRscCompletedL();
		break;
		}

	//	嬋Item嶌惉姰椆
	case ESmbMusicAPSinglePlayerCmdCreateSongItemComplete:
		{
		CreateSongItemCompleteL();
		break;
		}
	
	//	SetPlayContext張棟
	case ESmbMusicAPSinglePlayerCmdSetPlayContext:
		{
		SetPlayContextL();
		break;	
		}
	
	//	嵞惗棜楌婰榐姰椆
	//	ADD824
	case ESmbMusicAPSinglePlayerCmdRecordPlayReportComplete:
		{
		RecordPlayReportCompleteL();
		break;		
		}

	default:
		{	
		// 尰嵼傾僋僥傿僽側 View 偵懳墳偡傞 Command 偵懳偟丆
		// 僐儅儞僪張棟傪埶棅丏
		if(iCommand != NULL
		   && iCommand->HandleCommandL(aCommand))
			{
			return;
			}
			
		}
		}
	}

/**
 *	堦嬋嵞惗僾儗僀儎乕忬懺曄峏捠抦帪偺張棟
 *
 *	@see 仺HandleCommandL
 *	@param	TInt	aState
 *	@param	TInt	aCause
 *	@return	void
 */
void CSmbMusicAPSinglePlayerAppUi::HandlePlayerEventL(TSmbMusicAPSinglePlayerState aState)
	{
	TInt command = ESmbMusicAPSinglePlayerCmdDisable;
	
	TInt numberOfPlayerState = sizeof(KRefTable)/sizeof(KRefTable[0]);
	
	for(TInt i = 0; i <numberOfPlayerState; i++)
		{
		if(aState == KRefTable[i].iKey)
			{
			command = KRefTable[i].iCommand;
			break;
			}
		}

	if(ESmbMusicAPSinglePlayerCmdCannotPlay == command)
		{
		ReleaseRscForPauseL();
		}
		
	HandleCommandL(command);
	}


/**
 *	傾僾儕働乕僔儑儞偺慜柺/屻柺曄壔捠抦帪偺張棟
 *
 *	@param	TBool	慜柺/攚柺(ETrue:慜柺)
 *	@return void
 */
void CSmbMusicAPSinglePlayerAppUi::HandleForegroundEventL(TBool aForeground)
	{
	SmbMusicAPSinglePlayerLog::OutputLog(KAppUi, EAppUi, ELogLevelLowest,_L("Goto?(%d) / Fore?(%d) / Case?(%d) / backLight?(%d)"), aForeground, IsForegroundL(), IsCaseClosedL(),IsLcdBackLightOffL());
	
	if( EFalse == aForeground )	//BackGround偵峴偭偨
		{
		//ADD-S D_82400007238
		iAsyncState->SetIsForeground(EFalse);
		//ADD-S D_82400007238
		//ADD-S D_82400000750
		if(CSmbMusicAPSinglePlayerView::ESelection == View()->DiarogPattern() || EFalse != iAsyncState->IsUserPlayConfirm())
			{
			CloseSakDialogsL();
			}
		//ADD-E D_82400000750
		StartDisconnectRscL();
		}
	else	//	ForeGround偵側偭偨
		{
		//ADD-S D_82400007238
		iAsyncState->SetIsForeground(ETrue);
		//ADD-E D_82400007238
		if(EFalse != View()->IsShowDialog())
			{
			SetSilentKeys(EFalse);	//	僉乕壒傪ON偵偡傞(nop@PTX810)
			}
		}
	
	 // 昁偢恊僋儔僗偺儊僜僢僪傪屇傃弌偡帠丅
	CSmbAfAppUi::HandleForegroundEventL(aForeground);
	}
    
/**
 *	傾僾儕嫞崌丒儕僜乕僗嫞崌傑傢傝偺僀儀儞僩捠抦帪張棟
 *	@TODO	傾僾儕働乕僔儑儞嫞崌僼儗乕儉儚乕僋娭楢張棟偺嶍彍
 *	@param	TInt aInt	儕僜乕僗嫞崌傑傢傝偺僀儀儞僩偺ID
 *	@return void
 */
 void CSmbMusicAPSinglePlayerAppUi::HandleResourceEventL(TSmbMusicAPSinglePlayerAppRscEvent aEvent)
 	{
 	switch(aEvent)
 		{
	case ERscNG:

⌨️ 快捷键说明

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