smbmusicapmainplayerappui.cpp

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

CPP
1,625
字号
//	iViews[viewCount] = CSmbMusicAPMainPlayerPLSelectView::NewL(*this, *iSyncEngine, *iAsyncCommand);
	iViews[viewCount] = CSmbMusicAPMainPlayerPLSelectView::NewL(*this, *iSyncEngine, *iAsyncCommand, iOffScreen, iSkonGc);
// Mod-E PTX-824 D_82400013712懳墳 暯壀 2007.09.01
	iViews[viewCount]->SetBasisPartObserver(this);
	//__UHEAP_FAILNEXT(1);  // UT丗RegisterViewL()幐攕
	iViews[viewCount]->RegisterViewL();
	viewCount++;

	// 僶僀儕儞僈儖曄峏僆僽僓乕僶搊榐
//	iXLanguage = CXLanguage::NewL(&propAgent, ETrue, this);

	// PA娔帇傾僀僥儉
	const TUid KSmbMusicAPMainPlayerPAWatcheUids[] = 
		{
		{KPGStatusCaseClosedUidValue},                 // 杮懱奐暵忬懺
		{KPGBatteryUidValue},                          // 揹尮儗儀儖
		{KPGStatusBatteryStatusUidValue},              // 揹椡偲僶僢僥儕忬懺
		{KPGMannerModeUidValue},                       // 儅僫乕儌乕僪忬懺
		{KPGStatusEarphoneStatusUidValue},             // 僀儎儂儞憓敳忬懺
//		{KPGSOLcdBackLightStatusUidValue},             // LCD僶僢僋儔僀僩
//#ifndef __SYNCENGINE_STUB__
//		{KPGSOConnectMsCardUidValue},                  // 仐仐仐僨僶僢僌梡乮MS憓敳乯
//		{KPGSOConnectSdCardUidValue},                  // 仐仐仐僨僶僢僌梡乮SD憓敳乯
//#endif
		{KPGLaServerTopAppUidValue},                   // 嵟慜柺傾僾儕乮儊僯儏乕傪彍偔乯
		{KPGSOMusicMWLibStrgSyncStateUidValue},        // DB峔抸忬懺
		{KPGBatteryAlarmUidValue},                     // 掅揹埑80昩傾儔乕儉
		{KPGSOMusicAPPlayerStateUidValue},             // 儈儏乕僕僢僋僾儗僀儎乕偺忬懺
		{KPGSOMusicAPVPTSettingUidValue},              // VPT
		{KPGSOMusicAPRepeatSettingUidValue},           // 儕僺乕僩愝掕
		{KPGSOMusicAPPlayModeSettingUidValue},         // 嵞惗儌乕僪愝掕
		{KPGSOMusicAPEqualizerSettingUidValue},        // 僀僐儔僀僓愝掕
		{KPGSOMusicAPAVLSSettingUidValue},             // AVLS
		{KPGSOMusicAPBassSettingUidValue},             // BASS愝掕
		{KPGSOMusicAPDynamicNormalizerSettingUidValue},// Dynamic Normalizer
		{KPGSOMusicAPVolumeSettingUidValue},           // 壒検
		{KPGSOUSBStrgMgrStatusSyncUidValue},           // USB儅僗僗僩儗乕僕摨婜摦嶌忬懺(儊儌儕儌乕僪懳墳)
// 2007.04.16 PA搊榐姰椆屻幚憰
		{KPGSOMtpModeStatusUidValue},                  // MTP儌乕僪忬懺捠抦
		{KPGSOMusicMWLibLicenceUpdateEventUidValue},
		};
	TInt const KPAWatcheItemNum = sizeof(KSmbMusicAPMainPlayerPAWatcheUids) / sizeof(KSmbMusicAPMainPlayerPAWatcheUids[0]);

	// 曄壔僀儀儞僩庴怣梡偺僀儞僗僞儞僗傪惗惉偡傞
	//__UHEAP_FAILNEXT(1);  // UT丗CPGPropAgentWatcher惗惉幐攕
	iPropAgentWatcher = CPGPropAgentWatcher::NewL(propAgent, this, KSmbMusicAPMainPlayerPAWatcheUids, KPAWatcheItemNum);

// PTX824懳墳
// DEL-S 2007.03.07 K3拞堜 怴傾僾儕嫞崌懳墳
//	// 傾僾儕嫞崌娗棟僋儔僀傾儞僩偺惗惉
//	//__UHEAP_FAILNEXT(1);  // UT丗CSmbRscMgrAppClient惗惉幐攕
//	iRscMgrAppClient = CSmbRscMgrAppClient::NewL(this, this);
// DEL-E 2007.03.07 K3拞堜 怴傾僾儕嫞崌懳墳

	// 曄壔僀儀儞僩庴怣梫媮傪捠抦偡傞
	iPropAgentWatcher->RequestNotifyEventL();

// Add 2007.06.29
	iMemoryModeState = ESmbPGUSBStrgMgrStatusSyncDeact;
	iMTPModeState    = ESmbPGMtpModeStatusInitialValue;
	ResetMemoryMode();
// Add End 2007.06.29

// Add 2007.09.10
	iBacklight = ETrue;
// Add End 2007.09.10
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPMainPlayerAppUi::~CSmbMusicAPMainPlayerAppUi()
	{
	// 僾儘僷僥傿僄乕僕僃儞僩僂僅僢僠儍偺嶍彍
	// 偙傟埲忋PA曄峏捠抦傪庴偗庢傜側偄
	delete iPropAgentWatcher;

	// 尵岅娔帇偺嶍彍
//	delete iXLanguage;

	// Before delete view(s), notify App Ui destruction to CAfEnv.
	iAfEnv.HandleBeginningAppUiDestroy();

	// 奺價儏乕傪攋婞
	for (TInt i = ESmbMusicAPMainPlayerNumberOfViews-1; i >= 0; i--)
		{
		delete iViews[i];
		}

	// 僟僀傾儘僌儅僱乕僕儍偺嶍彍
	delete iDialogManager;

	// 摨婜僄儞僕儞張棟梫媮偺嶍彍
	delete iAccessSyncEngineFunc;
	delete iSetSyncEngineFunc;

	// 僼傿儖僞儕儞僌梡僐儞僩儘乕儔偺嶍彍
	delete iFilterSyncServerCtrl;

	// 摨婜僄儞僕儞偺嶍彍
	delete iSyncEngine;

	// 旕摨婜僐儅儞僪偺嶍彍
	delete iAsyncCommand;

// Add-S PTX-824 D_82400013712懳墳 暯壀 2007.09.01
	// 僆僼僗僋儕乕儞傪嶍彍偡傞
	delete iOffScreen;
	delete iSkonGc;
	delete iDev;
// Add-E PTX-824 D_82400013712懳墳 暯壀 2007.09.01
// PTX824懳墳
// DEL-S 2007.03.07 K3拞堜 怴傾僾儕嫞崌懳墳
//	// 傾僾儕嫞崌娗棟僋儔僀傾儞僩偺嶍彍
//	delete iRscMgrAppClient;
// DEL-E 2007.03.07 K3拞堜 怴傾僾儕嫞崌懳墳

#ifdef __SMBMUSICAP_PTX824_DEF__
// Add 2007.04.13 SD_Bind儕僜乕僗嫞崌懳墳
	// 儕僜乕僗儅僱乕僕儍偺嶍彍
	delete iRscMgr;
// Add End 2007.04.13 SD_Bind儕僜乕僗嫞崌懳墳
#endif

// Add 2008.08.15
#ifdef _KSMBMUSICAP_CPU_HIGH_
	iAfEnv.LauncherSession().ControlCPUSpeed(DCM_NAMESPACE::ELaCpuSpeedDefault);
#endif
// Add 2008.08.15
	}

#ifdef _KSMBMUSICAP_CPU_HIGH_
void CSmbMusicAPMainPlayerAppUi::ChangeCpuSpeed(TBool aChange)
	{
	iAfEnv.LauncherSession().ControlCPUSpeed((aChange == EFalse) ? DCM_NAMESPACE::ELaCpuSpeedDefault : DCM_NAMESPACE::ELaCpuSpeedHigh);
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::ChangeCpuSpeed speed=%d (0:Defaault 1:SpeedHigh)");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13084, ELogLevelHighest, KLogFmt, aChange);
	}
#endif

/**
 * 傾僾儕働乕僔儑儞偺廔椆弨旛
 *
 * 杮娭悢偼Leave帪偵傕屇偽傟傞丅
 */
void CSmbMusicAPMainPlayerAppUi::PrepareToExit()
	{
	//if (iAfEnv.Log().Handle() != KNullHandle)
	//	{
	//	_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::PrepareToExit()[start]");
	//	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13026, ELogLevelLowest, KLogFmt);
	//	}

	// 僾儘僷僥傿僄乕僕僃儞僩偵傾僋僙僗偡傞偨傔偺僙僢僔儑儞傪庢摼偡傞
//	CAfApplication* app = static_cast<CAfApplication*>(Application());
//	RPGPropAgent& propAgent = app->PropAgent();
	RPGPropAgent& propAgent = iAfEnv.PropAgent();

	// 嵞惗宲懕妋擣億僢僾傾僢僾昞帵忬懺傪弶婜忬懺偵愝掕
	TRAPD(err, SmbPGMusic::SetBatteryAlertPopupStateL(propAgent, ESmbPGMusicAPBatteryAlertPopupStateOff));
	if (err != KErrNone)
		{
		if (iAfEnv.Log().Handle() != KNullHandle)
			{// 儘僌僒乕僶偵愙懕偝傟偰偄傞応崌偺傒丄弌椡傪峴偆
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::PrepareToExit()[SetBatteryAlertPopupStateL() = %d]");
			SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13027, ELogLevelHighest, KLogFmt, err);
			}
		}

	// 儈儏乕僕僢僋僾儗僀儎乕偺忬懺傪枹婲摦偵愝掕
    TRAP(err, SmbPGMusic::SetMusicAPPlayerStateL(propAgent, ESmbPGMusicAPPlayerStateNotStarting));
    if (err != KErrNone)
    	{
		if (iAfEnv.Log().Handle() != KNullHandle)
			{// 儘僌僒乕僶偵愙懕偝傟偰偄傞応崌偺傒丄弌椡傪峴偆
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::PrepareToExit()[SetMusicAPPlayerStateL() = %d]");
			SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13028, ELogLevelHighest, KLogFmt, err);
			}
		}

	// 摨婜僄儞僕儞偺廔椆張棟傪屇傃弌偡
	if (iSyncEngineAppExitFlag == EFalse)
		{// AppExit()傪屇傃弌偟偰偄側偐偭偨応崌
		if (iSyncEngine != NULL)
			{
			iSyncEngine->AppExit();
			}
		iHasSyncServerFlag = EFalse;
		}

	// 嵟屻偵昁偢屇傃弌偡
#ifdef __SMBMUSICAP_PTX824_DEF__
// PTX824 APF
	CSmbAfAppUi::PrepareToExit();
#else
	CAfAppUi::PrepareToExit();
#endif
	}

/**
 * 儈儏乕僕僢僋僾儗僀儎乕偺廔椆
 *
 * @param[in] aReason 廔椆棟桼
 * @see TSmbMusicAPMainPlayerExitReason
 */
void CSmbMusicAPMainPlayerAppUi::ExitAppL(TSmbMusicAPMainPlayerExitReason aReason)
	{
	//_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::ExitAppL(%d)[start]");
	//SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13029, ELogLevelNormal, KLogFmt, aReason);

	// 僒僽僾儗僀儎乕婲摦拞偺偲偒偼丄傾僾儕廔椆傪抶墑偝偣傞
	if ((iSubPlayerState == ESmbSubPlayerStarting) || (iSubPlayerState == ESmbSubPlayerPaChange))
		{// 僒僽僾儗僀儎乕偑婲摦捈屻傕偟偔偼PA抣偺曄峏偺傒偺応崌
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::ExitAppL(%d)[delay]");
		SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13082, ELogLevelHigh, KLogFmt, aReason);

		iRequestExitAppFlag = ETrue;
		iDelayExitReason = aReason;

		return;
		}

// Add 2007.04.13 SD_Bind儕僜乕僗嫞崌懳墳
// Change 2007.06.07 拞堜
//	if (ESmbMusicAPMainPlayerExitRscMgrAppReq == iDelayExitReason)
	if (ESmbMusicAPMainPlayerExitRscMgrAppReq == iDelayExitReason ||
	    ESmbMusicAPMainPlayerExitRscMgrAppReqEXit == iDelayExitReason
	   )
// Change 2007.06.07 拞堜
		{
		// SD_Bind儕僜乕僗嫞崌敪惗帪
		// 僒僽僾儗僀儎乕偵捠抦
		TSmbMusicAPSyncEngineAppSyncInfo syncInfo;
		syncInfo.iParam1 = ESmbMusicAPPlayerDeniedMultiIAppl;
		iSyncEngine->UpdateDisplayInfo(syncInfo);

// Change 2007.06.07 拞堜
//		iDialogManager->ShowWarningModelessDialogL(R_DL_MUSIC_MAIN_BASE_RESOURCE_EXIT, this);
		if (ESmbMusicAPMainPlayerExitRscMgrAppReq == iDelayExitReason)
			{
			iDialogManager->ShowWarningModelessDialogL(R_DL_MUSIC_MAIN_BASE_RESOURCE_EXIT, this);
			}
// Delete 2007.09.04 億僢僾傾僢僾嶍彍
//		else
//			{
//			iDialogManager->ShowWarningModelessDialogL(R_DL_MUSIC_MAIN_BASE_RESOURCE_FORCE_EXIT, this);
//			}
// Delete End 2007.09.04 億僢僾傾僢僾嶍彍
		iDelayExitReason = ESmbMusicAPMainPlayerExitNormal;
// Change 2007.06.07 拞堜
		return;
		}
// Add End 2007.04.13 SD_Bind儕僜乕僗嫞崌懳墳

	if (iRunningChildApp != KNullUid)
		{
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::ExitAppL(%d)[remain child app 0x%x]");
		SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13084, ELogLevelNormal, KLogFmt, aReason, iRunningChildApp.iUid);

		// CancelHoldApp傪憲怣偟側偄忬懺偵偡傞
		// 仸拲堄仸
		// 偙偺僔乕働儞僗偵擖偭偨応崌丄嵟廔揑偵廔椆偡傞偙偲偵側傞偺偱丄摿偵忬懺傪尦偵栠偝側偄
		SetControlCommand(ESmbControlCommandNotSendCancelHoldApp);

		// 巕傾僾儕偵廔椆傪偐偗傞
		TInt childEndAppResult = KErrNone;
		if (iRunningChildApp == KSmbDbxFolderSelectAppUid)
			{// 僨乕僞BOX僼傽僀儖曐懚傾僾儕偺応崌
			// 仸拲堄仸
			// 僨乕僞BOX僼傽僀儖曐懚傾僾儕偺応崌偼丄摿庩側曽朄偱廔椆傪偐偗傞丅
			// 巕傾僾儕婲摦拞偺廔椆偺応崌偵偺傒嫋壜偝傟偰偄傞
			TLaEvent event;
			event.SetHeader(ELaEventEndAppNonUi, KSmbDbxFolderSelectAppUid);
#ifndef __SMBMUSICAP_PTX824_DEF__
			childEndAppResult = iAfEnv.LauncherSession().FireEvent(event);
#else
			childEndAppResult = iSmbAfEnv.SmbLaSession().FireEvent(event);
#endif
			}
		else
			{
#ifndef __SMBMUSICAP_PTX824_DEF__
			childEndAppResult = iAfEnv.LauncherSession().EndApp(iRunningChildApp);
#else
			childEndAppResult = iSmbAfEnv.SmbLaSession().EndApp(iRunningChildApp);
#endif
			}

		// 偙偺帪揰偱廔椆偑庴偗晅偗傜傟側偐偭偨応崌偼偳偆偟傛偆傕側偄
		if (childEndAppResult != KErrNone)
			{
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerAppUi::ExitAppL(%d)[failed EndApp %d]");
			SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), 13085, ELogLevelHighest, KLogFmt, aReason, childEndAppResult);

			User::Leave(childEndAppResult);
			}

		// 仸拲堄仸
		// 僒僽僾儗僀儎乕婲摦拞偺傾僾儕廔椆偲巕傾僾儕婲摦拞偺傾僾儕廔椆偼摨帪偵婲偙傝偊側偄偨傔丄嫟捠偺僼儔僌傪巊梡偟偰偄傞丅
		// 埲壓偺僼儔僌偼丄DoViewActivatedL()偺張棟偺拞偱嶲徠偝傟丄僼儔僌偑棫偭偰偄傞応崌偼嵞搙ExitAppL()傪屇傃弌偡丅
		// 偦偺嵺丄屇傃弌偡慜偵iRunningChildApp僼儔僌偼KNullUid偵弶婜壔偝傟偰偄側偗傟偽側傜側偄丅
		iRequestExitAppFlag = ETrue;
		iDelayExitReason = aReason;

		NotifyChildAppEndL();

		return;
		}

	// 儊僀儞僾儗僀儎乕偺廔椆偑妋掕偟偨帪揰偱丄僒僽僾儗僀儎乕偵廔椆僀儀儞僩傪憲怣偡傞
	TSmbMusicAPSyncEngineAppSyncInfo syncInfo;
	syncInfo.iParam1 = ESmbMusicAPPlayerAppExitEvent;// 儊僀儞僾儗僀儎乕偑廔椆張棟偵擖偭偨
	iSyncEngine->UpdateDisplayInfo(syncInfo);

	const TTimeIntervalMicroSeconds32 KSmbMusicAPMainPlayerWaitForExitSubPlayer = 700 * 1000;
	User::After(KSmbMusicAPMainPlayerWaitForExitSubPlayer);  // 僒僽僾儗僀儎乕偺椆僞僀儈儞僌偲崌傢偣傞

	// 偙偺張棟僔乕働儞僗偵擖偭偨帪揰偱丄PA偺娔帇傪拞抐偡傞丅
	// 偙偺張棟撪偱峴偆PA抣偺愝掕偵傛偭偰丄帺暘帺恎偑僀儀儞僩傪庴偗庢傜側偄傛偆偵偡傞偨傔丅
	iPropAgentWatcher->Cancel();

	// 僾儘僷僥傿僄乕僕僃儞僩僒乕僶偵傾僋僙僗偡傞偨傔偵僙僢僔儑儞傪庢摼

	if (aReason != ESmbMusicAPMainPlayerExitReqFromSubPlayer)
		{// 僒僽僾儗僀儎乕惓忢廔椆埲奜偺応崌

⌨️ 快捷键说明

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