smbmusicapmainplayerappui.cpp

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

CPP
1,625
字号
	// 儘乕僇儖價儏乕愗懼偺偲偒
	if (aViewId.iAppUid == KSmbMusicAPMainPlayerUid)
		{
		//_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::LaAppChangeL(0x%08x)[change view.]");
		//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13002, ELogLevelNormal, KLogFmt, aViewId.iAppUid.iUid);

		// 寢壥偼敾掕偣偢丄僼儔僌傪偍偲偡
		iChangingViewFlag = EFalse;

		// 愗懼偑廔椆偟偨偺偱丄僼儔僌傪棊偲偡
		iDoExtMemoryChangeStateFlag = EFalse;
		}
	else if (aViewId.iAppUid == KSmbMusicAPSubPlayerUid)
		{// 僒僽僾儗僀儎乕偺応崌
#ifndef __SMBMUSICAP_PTX824_DEF__
		// 僒僽僾儗僀儎乕忬懺曄峏
		ChangeSubPlayerState(ESmbEventLaAppChangeL);
#endif
		if (aResult != KErrNone)
			{
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::LaAppChangeL(0x%08x, %d)[SmbMusicAPSubPlayer start failed.]");
			SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13003, ELogLevelHighest, KLogFmt, aViewId.iAppUid.iUid, aResult);

			// 傾僾儕嫮惂廔椆
			ChangeSubPlayerState(ESmbEventLaAppChangeL);
			ExitAppL(ESmbMusicAPMainPlayerExitSubPlayerStartFailed);
			}

		if (iRequestExitAppFlag != EFalse) // == ETrue
			{// 傾僾儕廔椆偑梫媮偝傟偰偄偨応崌
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::LaAppChangeL(0x%08x, %d)[Delay ExitAppL()]");
			SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13083, ELogLevelHigh, KLogFmt, aViewId.iAppUid.iUid, aResult);

			ChangeSubPlayerState(ESmbEventLaAppChangeL);
			ExitAppL(iDelayExitReason);
			}

#ifdef __SMBMUSICAP_PTX824_DEF__
// PTX824懳墳
// ADD-S 2007.03.29 倝傾僾儕婲摦拞偺僾儗僀儎乕婲摦嫅斲偺僠僃僢僋捛壛
		// 怴婯PA偵偰壒妝僾儗僀儎乕偲偺摨帪摦嶌偑嬛巭丄
		// 妿偮懸偪庴偗i傾僾儕偺旕妶惈幚峴拞埲奜 偺応崌丄婲摦嫅斲偲偡傞丅
		TSmbPGIAppliDeniedMultiApp app = SmbPGIAppli::IAppliDeniedMultiAppL(iAfEnv.PropAgent());
		if ( (ESmbPGIAppliDeniedMultiAppMusic & app) &&
		    PGPropAgentIAppli::StatusL(iAfEnv.PropAgent()) != EPGIAppliStatusDeactiveLauncher
		   )
			{
			// 僾儗僀儎乕婲摦嫅斲偺応崌
			// 僒僽僾儗僀儎乕偵捠抦
			ChangeSubPlayerState(ESmbEventLaAppChangeL);
			TSmbMusicAPSyncEngineAppSyncInfo syncInfo;
			syncInfo.iParam1 = ESmbMusicAPPlayerDeniedMultiIAppl;
			iSyncEngine->UpdateDisplayInfo(syncInfo);
			// 億僢僾傾僢僾昞帵屻偵僾儘僌儔儉廔椆偡傞丅
			iDialogManager->ShowWarningModelessDialogL(R_DL_MUSIC_MAIN_BASE_DENIED_IAPPLI, this);
			return;
			}
// ADD-E 2007.03.29 倝傾僾儕婲摦拞偺僾儗僀儎乕婲摦嫅斲偺僠僃僢僋捛壛
#endif

#ifdef __SMBMUSICAP_PTX824_DEF__
// Add 2007.04.13 SD_Bind儕僜乕僗嫞崌懳墳
		iRscMgr = CSmbMusicAPMainPlayerRscMgr::NewL();
		// SD儕僜乕僗偺庢摼
		iRscMgr->RequestAllocResourceL();
// Add End 2007.04.13 SD_Bind儕僜乕僗嫞崌懳墳
#endif

#ifndef __SMBMUSICAP_PTX824_DEF__
		CompleteBootSubPlayerL();
#endif
		}
	else if (aViewId.iAppUid == KSmbMusicAPFileMgrUid)
		{// 婲摦愭偑儈儏乕僕僢僋僼傽僀儖娗棟傾僾儕偺応崌
		if (aResult == KErrNone)
			{// 惓忢婲摦偺応崌
			//_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::LaAppChangeL(0x%08x)[SmbMusicAPFileMgr start.]");
			//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13004, ELogLevelHigh, KLogFmt, aViewId.iAppUid.iUid);

			// 婲摦惉岟偺応崌偼帺傾僾儕廔椆
			ExitAppL(ESmbMusicAPMainPlayerExitExclusiveAppStart);
			}
		else
			{
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::LaAppChangeL(0x%08x, %d)[SmbMusicAPFileMgr start failed.]");
			SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13005, ELogLevelHighest, KLogFmt, aViewId.iAppUid.iUid, aResult);

			// 婲摦偵幐攕偟偨偨傔丄攔懠婲摦忬懺傪尦偵栠偡
			iExclusiveStartState = ESmbNotRunningExclusiveStart;  // 旕憖嶌拞
			}
		}
	else if (aViewId.iAppUid == iRunningChildApp)
		{// 巕傾僾儕婲摦
		if (aResult == KErrNone)
			{// 婲摦惉岟偺応崌
			if (iRequestEndAppFlag != EFalse) // == ETrue
				{// 廔椆梫媮偑偝傟偰偄偨応崌
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::LaAppChangeL(0x%08x)[Child app start & end.]");
				SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13006, ELogLevelLowest, KLogFmt, aViewId.iAppUid.iUid);

				DoEndChildAppL();
				}
			else
				{// 傑偩廔椆梫媮偝傟偰偄側偄応崌
				//_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::LaAppChangeL(0x%08x)[Child app start.]");
				//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13007, ELogLevelLowest, KLogFmt, aViewId.iAppUid.iUid);

				// EndApp()懄嵗幚峴僼儔僌傪棫偰傞
				iAcceptEndAppFlag = ETrue;
				}
			}
		else
			{// 婲摦幐攕偺応崌
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::LaAppChangeL(0x%08x, %d)[Child app start failed.]");
			SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13008, ELogLevelHighest, KLogFmt, aViewId.iAppUid.iUid, aResult);

			NotifyChildAppEndL();
			}
		}
	}

/**
 * 僐儅儞僪幚峴娭悢
 *
 * (CEikAppUi偱virtual偱掕媊)
 *
 * @param[in] aCommand 僐儅儞僪ID
 * @leave CSmbMusicAPMainPlayerAppUi::ExitAppL()
 * @leave MSmbMusicAPMainPlayer::HandleCommandL()
 */
void CSmbMusicAPMainPlayerAppUi::HandleCommandL(TInt aCommand)
	{
	//_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::HandleCommandL(0x%08x)[start]");
	//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13037, ELogLevelNormal, KLogFmt, aCommand);

	switch (aCommand)
		{
	case EEikCmdExit:
		ExitAppL(ESmbMusicAPMainPlayerExitNormal);
		break;  // never come here, because Exit leaves.
// Delete 2007.04.19 婲摦帪偺傾僾儕掅揹埑僠僃僢僋偼嶍彍偺偨傔
//	case ESmbMusicAPMainPlayerBasisCmdExitStartBatteryFailed:
//		// 婲摦帪廔椆
//		ExitAppL(ESmbMusicAPMainPlayerExitStartBatteryFailed);
//		break;
// Delete End 2007.04.19 婲摦帪偺傾僾儕掅揹埑僠僃僢僋偼嶍彍偺偨傔
	case ESmbMusicAPMainPlayerBasisCmdShowDbConstructingDialog:
		// DB峔抸拞僟僀傾儘僌昞帵
		ShowDbConstructingDialogL();
		break;
// PTX824懳墳
// ADD-S 2007.03.29
	case ESmbMusicAPMainPlayerBasisCmdExitIAppliDenied:
		// 婲摦嫅斲
		ExitAppL(ESmbMusicAPMainPlayerExitIAppliDenied);
		break;
// ADD-E 2007.03.29

// Add 2007.04.13 SD_Bind儕僜乕僗嫞崌懳墳
	case ESmbMusicAPMainPlayerBasisCmdExitSDBindRsc:
		iDelayExitReason = ESmbMusicAPMainPlayerExitRscMgrAppReq;
		ExitAppL(ESmbMusicAPMainPlayerExitRscMgrAppReq);
		break;
// Add End 2007.04.13 SD_Bind儕僜乕僗嫞崌懳墳
	
	default:
		{// 僀儀儞僩攝怣
		// 僉乕僈僀僟儞僗偐傜偺僐儅儞僪埲奜偼偙偙偵偙側偄偼偢偺偨傔丄儐乕僓乕僉乕憖嶌梷惂拞偼僐儅儞僪偺幚峴傕梷惂偡傞
		// 僐儅儞僪偵傛偭偰梷巭懳徾偑曄傢傞応崌丄奺價儏乕偱懳墳偟偰傕傜偆偐丄僐儅儞僪ID偺怳傝曽傪寛掕偟丄
		// 梷惂懳徾偲側傞傕偺偺斖埻傪寛傔傟偽傛偄
		if (CanUseKey() == EFalse)
			{
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::HandleCommandL(0x%08x)[ignore user command]");
			SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13037, ELogLevelLow, KLogFmt, aCommand);

			break;
			}

		MSmbMusicAPMainPlayerEventHandler* handler = ActiveEventHandler();
		if (handler != NULL)
			{
			// 曉傝抣偼摿偵棙梡偟側偄
			MSmbAfCommandBase::TSmbAfCmdIdResponse response = handler->HandleCommandL(aCommand);
			}
		}
		break;
		}
	}

/**
 * 摨婜僄儞僕儞夝曻捠抦
 *
 * 夝曻梫媮庴怣屻丄奺價儏乕偱昁偢堦夞偩偗捠抦偑棃傞偙偲傪慜採偲偟偰偄傞丅
 *
 * @param[in] aView 價儏乕
 */
void CSmbMusicAPMainPlayerAppUi::CompleteRequestReleaseSyncEngine(CSmbMusicAPMainPlayerViewBase* /* aView */)
	{
#ifdef _SMBMUSICAPMAINPLAYER_SYNCSERVER_ACCESS_LOG
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::CompleteRequestReleaseSyncEngine()[%d]");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13009, ELogLevelHigh, KLogFmt, iReleaseAccessSyncEngineCount);
	//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13009, ELogLevelLowest, KLogFmt, iReleaseAccessSyncEngineCount);
#endif

	// 姰椆梫媮暘丄僨僋儕儊儞僩
	--iReleaseAccessSyncEngineCount;

	// 梫媮偑偦傠偭偨
	if (iReleaseAccessSyncEngineCount == 0)
		{
		TInt error = iSyncEngine->ResponseReleaseSyncServer(KErrNone);

		// 尦偵栠偡
		iReleaseAccessSyncEngineCount = 0;
		iReleaseAccessSyncEngineProcessingFlag = EFalse;

		iHasSyncServerFlag = iSyncEngine->HasSyncServer();

		// 僼僅傾僌儔僂儞僪忬懺偺応崌丄摨婜僒乕僶傾僋僙僗尃偺嵞庢摼傪峴偆
		if ((iForegroundFlag != EFalse) && (IsAccessSyncEngine() == EFalse))
			{
#ifdef _SMBMUSICAPMAINPLAYER_SYNCSERVER_ACCESS_LOG
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::CompleteRequestReleaseSyncEngine()[reget access syncengine]");
			SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13080, ELogLevelHigh, KLogFmt);
#endif

			// 僼僅傾僌儔僂儞僪忬懺偐偮摨婜僒乕僶傾僋僙僗尃傪帩偭偰偄側偄応崌丄嵞庢摼傪梫媮偡傞
			iAccessSyncEngineFunc->GetAccessSyncEngine(this);
			}

#ifdef _SMBMUSICAPMAINPLAYER_SYNCSERVER_ACCESS_LOG
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::CompleteRequestReleaseSyncEngine()[SyncEngine release complete = %d]");
		SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13010, ELogLevelHigh, KLogFmt, error);
#endif
		}
	}

/**
 * 僾儘僷僥傿僄乕僕僃儞僩偺曄峏捠抦庴怣
 *
 * 僾儘僷僥傿僄乕僕僃儞僩僒乕僶忋偺僨乕僞偑曄峏偝傟偨偲偒偵屇傃弌偝傟傞丅
 * 尰嵼傾僋僥傿僽側價儏乕偵娭楢偡傞僀儀儞僩僴儞僪儔傊攝怣偡傞丅
 *
 * @param[in] aWatcher 僾儘僷僥傿僄乕僕僃儞僩丒僀儀儞僩僆僽僕僃僋僩
 * @param[in] aUid 曄峏偝傟偨僨乕僞偺UID
 * @param[in] aData 捠抦偝傟偨僨乕僞
 */
void CSmbMusicAPMainPlayerAppUi::OnChangeL(CPGPropAgentWatcher& aWatcher, TUid aUid, TInt aData)
	{
	// 僀儀儞僩攝怣張棟
	switch (aUid.iUid)
		{
	case KPGSOMusicAPPlayerStateUidValue:   // 儈儏乕僕僢僋僾儗僀儎乕偺忬懺
		{
		//_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::OnChangeL(uid=0x%08x)[KPGSOMusicAPPlayerStateUidValue, %d]");
		//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13038, ELogLevelNormal, KLogFmt, aUid.iUid, aData);

		// 怴偟偄抣偺庢摼
		iPlayerState = TSmbPGMusicAPPlayerState(aData);

		// 廔椆張棟拞偵曄壔偟偨応崌偼丄僒僽僾儗僀儎乕偐傜偺惓忢廔椆捠抦
		if (iPlayerState == ESmbPGMusicAPPlayerStateEnding)
			{
			//_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::OnChangeL(uid=0x%08x)[exit request from subplayer]");
			//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13039, ELogLevelHigh, KLogFmt, aUid.iUid);

			ExitAppL(ESmbMusicAPMainPlayerExitReqFromSubPlayer);
			}

// Delete 2007.06.21 拞堜 僒僽僾儗僀儎乕偺婲摦姰椆捠抦傪忬懺曄峏捠抦偵曄峏
//		// 撪晹忬懺偑婲摦拞偵側偭偰偄傞忬懺偱丄旕嵞惗拞偵曄壔偟偨応崌丄僒僽僾儗僀儎乕偺婲摦偑姰椆偟偨偲傒側偡
//		if ((iPlayerState == ESmbPGMusicAPPlayerStateNotPlaying) && (iInternalState == ESmbStarting))
//			{
//			//_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::OnChangeL(uid=0x%08x)[subplayer change playerstate]");
//			//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13069, ELogLevelNormal, KLogFmt, aUid.iUid);
//
//			// 僒僽僾儗僀儎乕婲摦姰椆
//			// PA抣偑曄峏偝傟偨
//			ChangeSubPlayerState(ESmbEventMusicPaChange);
//			CompleteBootSubPlayerL();
//			break;
//			}
// Delete End 2007.06.21 拞堜 僒僽僾儗僀儎乕偺婲摦姰椆捠抦傪忬懺曄峏捠抦偵曄峏

		// 旕嵞惗拞傑偨偼嵞惗拞偺傒攝怣偡傞
		if ((iPlayerState == ESmbPGMusicAPPlayerStateNotPlaying) || (iPlayerState == ESmbPGMusicAPPlayerStatePlaying))
			{
			UpdateMuteStateL();

			// 慡偰偺僀儀儞僩僴儞僪儔傊攝怣
			for (TInt i = 0; i < ESmbMusicAPMainPlayerNumberOfViews; i++)
				{
				MSmbMusicAPMainPlayerEventHandler* eventHandler = iViews[i]->EventHandler();
				if (eventHandler != NULL)
					{
					eventHandler->HandleMusicAPPlayerStateChangedL(iPlayerState);
					}
				}
			}
		}
		break;

	case KPGStatusCaseClosedUidValue:       // 杮懱奐暵忬懺
		{
		//_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::OnChangeL(uid=0x%08x)[KPGStatusCaseClosedUidValue, %d]");
		//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13040, ELogLevelNormal, KLogFmt, aUid.iUid, aData);

		iCaseCloseFlag = aData;

		// 抂枛僋儘乕僘帪丄儌乕僟儖僟僀傾儘僌傪暵偠傞
		if (iCaseCloseFlag != EFalse)  // == ETrue
			{
			iDialogManager->CloseDialogsWhenCaseClosed();
			}
		// 抂枛偑奐偐傟偨偲偒丄儊僀儞僾儗僀儎乕偑嵟慜柺偱僌儘乕僶儖僟僀傾儘僌偑昞帵偝傟偰偄傞応崌丄
		// 摨婜僒乕僶傾僋僙僗尃偺庢摼傪峴偆
		else
			{// 抂枛僆乕僾儞偺応崌
			// 仸拲堄仸
			// 敾掕暘偼ViewBase偐傜僐僺乕偟偰偒偨傕偺
			RPGPropAgent& propAgent = iAfEnv.PropAgent();
			if (SmbPGMenu::MainMenuStateL(propAgent) == ESmbPGMainMenuOpenDialog)
				{// 僌儘乕僶儖億僢僾傾僢僾偑昞帵偝傟偰偄傞
				// 乽僞僗僋儊僯儏乕傪彍偄偨嵟慜柺偵嫃傞傾僾儕働乕僔儑儞偺UID乿偺栤偄崌傢偣偺偨傔丄FrontAppL()偱偼側偔丄TopAppL()傪棙梡偡傞
				if (PGPropAgentLaServer::TopAppL(propAgent) == KSmbMusicAPMainPlayerUid)

⌨️ 快捷键说明

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