smbmusicapmainplayerviewbase.cpp

来自「symbian」· C++ 代码 · 共 544 行 · 第 1/2 页

CPP
544
字号
void CSmbMusicAPMainPlayerViewBase::DoViewActivatedL(const TVwsViewId& aViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerViewBase::DoViewActivatedL(0x%08x)");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 14001, ELogLevelNormal, KLogFmt, aCustomMessageId.iUid);

	if (aCustomMessageId == KNullUid)
		{
		if (iPlayerEnv.BasisPartFuncInterface().IsRunningChildApp() != EFalse)  // == ETrue
			{
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerViewBase::DoViewActivatedL()[Child app abort.]");
			SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 14002, ELogLevelHigh, KLogFmt);

			// 廔椆捠抦
			iPlayerEnv.BasisPartFuncInterface().NotifyChildAppEndL();
			}

// PTX824懳墳
// ADD-S 2007.03.08 K3	拞堜
		if (iPlayerEnv.BasisPartFuncInterface().ExtMemoryProcessState() != ESmbMusicAPMainPlayerNotProcessing)
			{
			iPlayerEnv.BasisPartFuncInterface().DoExtMemoryChangeStateL();
			}
// ADD-E 2007.03.08 K3	拞堜

		// 婎杮揑偵丄儊僢僙乕僕ID偑NULL偺応崌偼壗傕偟偰偼側傜側偄
		return;
		}
	else if (aCustomMessageId == KLaReturnOnHookUid)
		{// OnHook僉乕墴壓偵傛傞巕傾僾儕廔椆偺応崌
		//_LIT(KLogFmt, "CSmbMusicAPMainPlayerViewBase::DoViewActivatedL()[Child app end (cause OnHook)]");
		//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 14004, ELogLevelHigh, KLogFmt);

		// 僨乕僞BOX婲摦拞偵奜晹儊儌儕憓敳屻丄OnHook僉乕傪墴壓偝傟偨偲偒偼偡偱偵嬋嵞惗偼掆巭偟偰偄傞偨傔丄
		// 偦偺傑傑廔椆僟僀傾儘僌傪昞帵偡傞偙偲側偔廔椆偱偒傞偺偱丄尰嵼偺幚憰偱戝忎晇
		// 壖偵奜晹儊儌儕憓敳屻偵嬋嵞惗偝傟偰偄傞忬懺偱OnHook僉乕傪墴壓偝傟偨帪偼丄偝傜偵偦偺忬懺偱
		// 奜晹儊儌儕傪憓敳偝傟傞偙偲傕峫偊傞偲丄尰嵼偺愝寁偱偺懳墳偼擄偟偄

		// CancelHoldApp傪憲怣偟側偄忬懺偵偡傞
		iPlayerEnv.BasisPartFuncInterface().SetControlCommand(ESmbControlCommandNotSendCancelHoldApp);

		iPlayerEnv.BasisPartFuncInterface().NotifyChildAppEndL(); // 儐乕僓憖嶌偵傛傞廔椆偺応崌偼偙偙偱僼儔僌傪棊偲偡乮巕婲摦拞偵廔椆梫媮偑偒偨応崌偼偙偙偱傾僾儕廔椆乯
		iPlayerEnv.BasisPartFuncInterface().ConfirmExitAppL();

		// 嫮惂CancelHoldApp()憲怣偑巜掕偝傟偰偄偨応崌偼偙偺僞僀儈儞僌偱憲怣偡傞
		TSmbMusicAPMainPlayerControlCommand controlCommand = iPlayerEnv.BasisPartFuncInterface().ControlCommand();
		if (controlCommand == ESmbControlCommandNotSendCancelHoldApp)
			{// CancelHoldApp()傪憲怣偟側偄忬懺偺傑傑偩偭偨応崌
			// 壗傕惂屼偟偰偄側偄忬懺偵栠偡
			iPlayerEnv.BasisPartFuncInterface().SetControlCommand(ESmbControlCommandNone);
			}
		else if (controlCommand == ESmbControlCommandForcedSendCancelHoldApp)
			{
			// CancelHoldApp()傪嫮惂憲怣偡傞忬懺偩偭偨応崌
			// 壗傕惂屼偟偰偄側偄忬懺偵栠偡
			iPlayerEnv.BasisPartFuncInterface().SetControlCommand(ESmbControlCommandNone);

			// 憲怣偡傞
			iPlayerEnv.BasisPartFuncInterface().CancelHoldAppEx();
			}

		// 偙偺帪揰偱ESmbControlCommandNone偱側偄応崌偼憐掕奜乮僐乕僨傿儞僌儈僗乯
		__ASSERT_DEBUG(iPlayerEnv.BasisPartFuncInterface().ControlCommand() == ESmbControlCommandNone, PANIC(9014003));
		}
	else if (aCustomMessageId == KLaReturnClearUid)
		{// 僋儕傾僉乕墴壓偵傛傞巕傾僾儕廔椆偺応崌
		//_LIT(KLogFmt, "CSmbMusicAPMainPlayerViewBase::DoViewActivatedL()[Child app end (cause ClearKey)]");
		//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 14005, ELogLevelHigh, KLogFmt);

		iPlayerEnv.BasisPartFuncInterface().NotifyChildAppEndL(); // 儐乕僓憖嶌偵傛傞廔椆偺応崌偼偙偙偱僼儔僌傪棊偲偡乮巕婲摦拞偵廔椆梫媮偑偒偨応崌偼偙偙偱傾僾儕廔椆乯
		if (iPlayerEnv.BasisPartFuncInterface().ExtMemoryProcessState() != ESmbMusicAPMainPlayerNotProcessing)
			{
			iPlayerEnv.BasisPartFuncInterface().DoExtMemoryChangeStateL();
			return;
			}
		}
	else if (aCustomMessageId == KLaReturnErrNoneUid)
		{// 惓忢廔椆乮僨乕僞BOX偺応崌偼曐懚惉岟乯
		iPlayerEnv.BasisPartFuncInterface().NotifyChildAppEndL(); // 儐乕僓憖嶌偵傛傞廔椆偺応崌偼偙偙偱僼儔僌傪棊偲偡乮巕婲摦拞偵廔椆梫媮偑偒偨応崌偼偙偙偱傾僾儕廔椆乯

		if (iPlayerEnv.BasisPartFuncInterface().ExtMemoryProcessState() != ESmbMusicAPMainPlayerNotProcessing)
			{
			if (aCustomMessage != KNullDesC8)
				{// 儊僢僙乕僕偑嬻偱側偄応崌
				// 僨乕僞BOX曐懚傾僾儕偺曉傝抣傪庢摼偡傞
				const TSmbDbxFolderSelectReturnParam* dbxParam = reinterpret_cast<const TSmbDbxFolderSelectReturnParam *>(aCustomMessage.Ptr());
				if (dbxParam->iError == ESmbDbxReturnErrNone)
					{// 惓忢廔椆偺応崌
					iPlayerEnv.BasisPartFuncInterface().SetDelayShowDialogL(R_MUSIC_MAINPLAYER_IMAGE_CONFIRM);
					}
				else
					{// 曐懚偵幐攕偟偨応崌
					_LIT(KLogFmt, "CSmbMusicAPMainPlayerViewBase::DoViewActivatedL()[ImageFile save failed = %d]");
					SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 14010, ELogLevelHighest, KLogFmt, dbxParam->iError);
					}
				}
			else
				{// 曐懚偑惉岟偟偨偵傕偐偐傢傜偢丄儊僢僙乕僕偑NULL偩偭偨応崌
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerViewBase::DoViewActivatedL()[aCustomMessage is NULL]");
				SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 14009, ELogLevelHighest, KLogFmt);
				}

			iPlayerEnv.BasisPartFuncInterface().DoExtMemoryChangeStateL();
			return;
			}
		}
	else if (aCustomMessageId == KLaReturnErrUid)
		{// 僄儔乕廔椆乮僨乕僞BOX偺応崌偼曐懚幐攕乯
		iPlayerEnv.BasisPartFuncInterface().NotifyChildAppEndL(); // 儐乕僓憖嶌偵傛傞廔椆偺応崌偼偙偙偱僼儔僌傪棊偲偡乮巕婲摦拞偵廔椆梫媮偑偒偨応崌偼偙偙偱傾僾儕廔椆乯

		if (iPlayerEnv.BasisPartFuncInterface().ExtMemoryProcessState() != ESmbMusicAPMainPlayerNotProcessing)
			{
			iPlayerEnv.BasisPartFuncInterface().DoExtMemoryChangeStateL();
			return;
			}
		}

	// 婲摦張棟
	iPlayerEnv.BasisPartFuncInterface().StartProcessingL(aViewId, aCustomMessageId, aCustomMessage);

	// 攈惗僋儔僗偺幚憰傊
	DoViewActivatedImplL(aViewId, aCustomMessageId, aCustomMessage);

//	// 奜晹儊儌儕億僢僾傾僢僾偺昞帵
//	if (aCustomMessageId == KSmbMusicAPMainPlayerExtMemoryChangeMsgUid)
//		{
//		// 昞帵偺傒偑栚揑偺偨傔丄曉傝抣偼嶲徠偟側偄
//		iPlayerEnv.BasisPartFuncInterface().EndProcessExtMemoryL();
//		}
	}

/**
 * 僉乕僀儀儞僩張棟
 *
 * OnHook僉乕偼偙偙偵偙側偄
 *
 * @param[in] aKeyEvent 僉乕僀儀儞僩
 * @param[in] aType 僉乕僐乕僪
 */
TKeyResponse CSmbMusicAPMainPlayerViewBase::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
	{
	// 僉乕僀儀儞僩僠僃僢僋偼ViewBase偱偼峴傢側偄
//	// 僉乕墴壓帪(EEventKeyDown)丒僉乕奐曻帪(EEventKeyUp)偼徚旓偟側偄
//	if (aType != EEventKey)
//		{
//		return EKeyWasNotConsumed;
//		}

	if (iPlayerEnv.CanUseKey() == EFalse)
		{
		//_LIT(KLogFmt, "CSmbMusicAPMainPlayerViewBase::OfferKeyEventL()[ignore key]");
		//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 14006, ELogLevelLow, KLogFmt);

		// 婲摦張棟拞偺応崌偼僉乕憖嶌偼丄OnHook僉乕埲奜傪庴偗晅偗側偄
		return EKeyWasConsumed;
		}

	// 攈惗僋儔僗偵張棟傪搉偡
	if (OfferKeyEventImplL(aKeyEvent, aType) == EKeyWasConsumed)
		{
		return EKeyWasConsumed;
		}


	// 僼儗乕儉儚乕僋偵搉偡
//	if (aType == EEventKey)
//		{
//		User::Leave(KErrNoMemory);  // UT
//		}

#ifdef __SMBMUSICAP_PTX824_DEF__
	return CSmbAfView::OfferKeyEventL(aKeyEvent, aType);
#else
	return CAfView::OfferKeyEventL(aKeyEvent, aType);
#endif
	}

/**
 * 婎杮晹傊偺捠抦愭傪愝掕偡傞
 *
 * @param[in] aBasisPartObserver 婎杮晹傊偺捠抦僆僽僓乕僶乮NULL傪搉偟偰偼側傜側偄乯
 */
void CSmbMusicAPMainPlayerViewBase::SetBasisPartObserver(MSmbMusicAPMainPlayerBasisPartObserver* aBasisPartObserver)
	{
	__ASSERT_DEBUG(aBasisPartObserver != NULL, PANIC(9014001));

	iBasisPartObserver = aBasisPartObserver;
	}

/**
 * 昤夋壜擻偐傪僠僃僢僋偟丄昤夋壜擻忬懺傪愝掕偡傞
 *
 *   價儏乕傾僋僥傿儀乕僩偺忬懺偱壓婰偺忦審偺応崌昤夋壜擻偲偡傞丅<BR>
 *   丒Foreground(ETrue)忬懺<BR>
 *   丒Foreground(EFalse)忬懺偱壓婰偺忬懺<BR>
 *     亅儊僀儞僾儗僀儎乕偑嵟慜柺<BR>
 *     亅儊僀儞儊僯儏乕昞帵忬懺偱僌儘乕僶儖億僢僾傾僢僾忬懺<BR>
 *       (ESmbPGMainMenuOpenDialog==SmbPGMenu::MainMenuStateL(propAgent))<BR>
 *
 * @return ETrue 昤夋壜擻
 * @return EFalse 昤夋晄壜
 */
TBool CSmbMusicAPMainPlayerViewBase::IsDrawableL()
	{
	// 嵟慜價儏乕偑帺暘偱側偄応崌
	if (iAfEnv.ActiveView() != this)
		{
		return EFalse;
		}

	// 嵟慜柺偺応崌
	if (iPlayerEnv.IsForeground() != EFalse)  // == ETrue
		{
		return ETrue;
		}

	// 僷僼僅乕儅儞僗偵栤戣偑偁傞傛偆側傜偽丄僾儘僷僥傿僄乕僕僃儞僩偵傾僋僙僗偟偰偄傞晹暘偼僉儍僢僔儏抣偱帩偨偣傞傛偆偵偡傞
	// 僌儘乕僶儖億僢僾傾僢僾偑昞帵偝傟偰偄傞忬懺偱丄堦斣慜偵偄傞傾僾儕偑儊僀儞僾儗僀儎乕偺応崌
	RPGPropAgent& propAgent = iAfEnv.PropAgent();

	if (SmbPGMenu::MainMenuStateL(propAgent) == ESmbPGMainMenuOpenDialog)
		{// 僌儘乕僶儖億僢僾傾僢僾偑昞帵偝傟偰偄傞
		//_LIT(KLogFmt, "CSmbMusicAPMainPlayerViewBase::IsDrawableL()[MainMenuStateL()]");
		//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 14007, ELogLevelLowest, KLogFmt);

		//_LIT(KLogFmt2, "CSmbMusicAPMainPlayerViewBase::IsDrawableL()[TopAppL() = %d]");
		//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 14008, ELogLevelLowest, KLogFmt2, PGPropAgentLaServer::TopAppL(propAgent));

		// 乽僞僗僋儊僯儏乕傪彍偄偨嵟慜柺偵嫃傞傾僾儕働乕僔儑儞偺UID乿偺栤偄崌傢偣偺偨傔丄FrontAppL()偱偼側偔丄TopAppL()傪棙梡偡傞
		if (PGPropAgentLaServer::TopAppL(propAgent) == KSmbMusicAPMainPlayerUid)
			{
			return ETrue;
			}
		}

	return EFalse;
	}

/**
 * 夋柺曄峏捠抦梡僀儀儞僩ID偐傜儘乕僇儖價儏乕ID偵曄姺偡傞
 *
 * @param[in] aChangeID 夋柺曄峏捠抦梡僀儀儞僩ID
 * @return 儘乕僇儖價儏乕ID
 */
TSmbMusicAPMainPlayerViewIds CSmbMusicAPMainPlayerViewBase::ChangeLocalViewId(TSmbMusicAPPlayerChangeViewEvent aEventId)
	{
	for (TInt i = 0; i < (sizeof(KSmbMusicAPMainPlayerChangeLocalViewId) / sizeof(KSmbMusicAPMainPlayerChangeLocalViewId[0])); i++)
		{
		if (aEventId == KSmbMusicAPMainPlayerChangeLocalViewId[i].iEventId)
			{
			if (KSmbMusicAPMainPlayerChangeLocalViewId[i].iLocalViewId != 0)
				{
				return KSmbMusicAPMainPlayerChangeLocalViewId[i].iLocalViewId;
				}
			else
				{// 0偺応崌偼丄尰嵼偺價儏乕ID傪曉偡
				return static_cast<TSmbMusicAPMainPlayerViewIds>(this->ViewId().iViewUid.iUid);
				}
			}
		}

	// 尒偮偐傜側偄応崌偼僐乕僨傿儞僌儈僗
	__ASSERT_DEBUG(EFalse, PANIC(9014002));

	// 尒偮偐傜側偐偭偨応崌
	return static_cast<TSmbMusicAPMainPlayerViewIds>(NULL);
	}

SEMCJ_NAMESPACE_END

// end of SmbMusicAPMainPlayerViewBase.cpp
/* Copyright (C) 2005-2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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