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

📄 smbmusicapsonginfoappui.cpp

📁 索爱手机代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPSongInfoAppUi.cpp
//
// Description:
//	儈儏乕僕僢僋梡徻嵶忣曬昞帵傾僾儕働乕僔儑儞UI僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅				|曄峏幰			|撪梕
//---------------------------------------------------------------------------
//2006/04/17		|SEMCJ嬥岝		|怴婯嶌惉
//2006/10/03		|SEMCJ憊		|USAT REFRESH偱IMODER EF偑彂偒姺偊傜傟偨応崌丄徻嵶忣曬昞帵傾僾儕偼懄嫮惂廔椆偟丄恊傊暅婣偡傞張棟傪捛壛(i-keeper TRK No.10769懳墳)
//2006/10/16		|SEMCJ憊		|張棟拞僟僀傾儘僌偱丄僋儕傾僉乕墴壓偵傛傞傾僾儕廔椆張棟傪捛壛(i-keeper TRK No.11477懳墳)
//2006/10/18		|SEMCJ憊		|MusicMW儔僀僽儔儕DB丄庒偟偔偼儈儏乕僕僢僋僐儞僥儞僣娗棟偺DB攋懝帪偵徻嵶忣曬昞帵傪嫮惂廔椆偡傞張棟傪捛壛(i-keeper TRK No.11686懳墳)
//2007/04/06		|SEMCJ汭弐		|徻嵶忣曬曇廤偺捛壛
//2007/08/13		|SEMCJ汭弐		|張棟拞僟僀傾儘僌偱丄僋儕傾僉乕偵傛傞傾僾儕廔椆張棟偱偼丄僋儕傾僉乕偑抁墴壓偱偁傞忦審傪捛壛(CQ D_82400010707懳墳)
//2007/08/14		|SEMCJ汭弐		|僾儗僀儕僗僩偺忣曬昞帵婡擻偺懳墳

#ifndef __SMBAFENV_H__
#include <SmbAfEnv.h>
#endif

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

#ifndef __SMBPGSTRATEGYPLUGINIF_H__
#include <SmbPGStrategyPluginIF.h>
#endif //SMBPGSTRATEGYPLUGINIF_H__

#ifndef FJUSIMACCESS_H__
#include <FJUsimAccess.h>
#endif

#ifndef __SMBPGMUSIC_H__
#include <SmbPGMusic.h>
#endif

#ifndef FJPGBASICCONTENTS_H__
#include <FjpgBasicContents.h>
#endif

#include "SmbMusicAPSongInfoAppUi.h"
#include "SmbMusicAPSongInfoDocument.h"
#include "SmbMusicAPSongInfoDetailCmd.h"
#include "SmbMusicAPSongInfoURLCmd.h"
#include "SmbMusicAPSongInfoExternalInterface.h"

//ADD-S 汭弐 徻嵶忣曬曇廤偺捛壛
#include "SmbMusicAPSongInfoEditCmd.h"
//ADD-E 汭弐

//ADD-S 汭弐 僾儗僀儕僗僩偺忣曬昞帵婡擻偺懳墳
#include "SmbMusicAPSongInfoPlayListCmd.h"
//ADD-E 汭弐

USING_NAMESPACE_SEMCJ
///////////////////////////////////////////////////////////////////////////////
/**
 * 僐儞僗僩儔僋僞
 *
 * @param[in]		aLog	儘僌僒乕僶偺僙僢僔儑儞
 */
CSmbMusicAPSongInfoAppUi::CSmbMusicAPSongInfoAppUi(RLog& aLog)
	:iLog(aLog)
	,iProgressDialogFlag(EFalse)	//TRK11477
	{
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPSongInfoAppUi::~CSmbMusicAPSongInfoAppUi()
	{
	// View 傪嶍彍偡傞慜偵 View 娗棟僒乕價僗偵捠抦偡傞
	iAfEnv.HandleBeginningAppUiDestroy();
	iViews.ResetAndDestroy();
	iCmds.ResetAndDestroy();
	iVCTable.ResetAndDestroy();
	delete iPropAgentWatcher;
	//	delete iRscMgrAppClient;
	}

/**
 * 2僼僃乕僘僐儞僗僩儔僋僞
 */
void CSmbMusicAPSongInfoAppUi::ConstructL()
	{
	//儀乕僗僐儞僗僩儔僋僞
	CSmbAfAppUi::BaseConstructL();

	//埲壓丄價儏乕丒僐儅儞僪僋儔僗惗惉偵昁梫側僋儔僗偺惗惉
	//嫞崌僼儗乕儉儚乕僋惗惉
// 	TRAPD(error, iRscMgrAppClient = CSmbRscMgrAppClient::NewL(this, this));
// 	if(KErrNone != error)
// 		{
// 		//儘僌弌椡
// 		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo021, ELogLevelHighest, error, KSmbMusicAPSongInfoLogNewErr);
// 		//儕乕僽張棟
// 		User::Leave(error);
// 		}

//ADD-S 憊 TRK10769
	//僾儘僷僥傿僄乕僕僃儞僩傪庢摼
	RPGPropAgent& propAgent = iAfEnv.PropAgent();
	
	//僾儘僷僥傿僄乕僕僃儞僩娔帇傾僀僥儉
	const TUid KPAWatcherUids[] = 
		{
		{KPGSOUsimRefreshTypeUidValue},		//USIM Refresh 庬暿
//ADD-S 憊 TRK11686
		{KPGSOMusicMWLibDBRecoverUidValue},	//MusicMW儔僀僽儔儕DB儕僇僶儕乕忣曬
		{KPGMusicContentsRecoverUidValue}	//儈儏乕僕僢僋僐儞僥儞僣儕僇僶儕乕忣曬
//ADD-E TRK11686		
		};
		
	//娔帇屄悢	
	TInt const KPAWatcherItemNum = sizeof(KPAWatcherUids) / sizeof(KPAWatcherUids[0]);

	//僾儘僷僥傿僄乕僕僃儞僩Watcher傪惗惉
	iPropAgentWatcher = CPGPropAgentWatcher::NewL(propAgent, this, KPAWatcherUids, KPAWatcherItemNum);
	
	//PA曄峏捠抦梫媮
	iPropAgentWatcher->RequestNotifyEventL();
		
//ADD-E 憊

	//埲壓丄價儏乕丒僐儅儞僪僋儔僗惗惉偵昁梫側僋儔僗偺庢摼
	//儌僨儖僋儔僗庢摼
	CSmbMusicAPSongInfoModel& model = static_cast<CSmbMusicAPSongInfoDocument*>(Document())->SongInfoModel();
	//僙僢僔儑儞偺愙懕傪峴偆
	model.ConnectMWSessionL();

	//儔儞僠儍乕僙僢僔儑儞偺庢摼
	RLauncherSession& launcher = iAfEnv.LauncherSession();

	//埲壓丄價儏乕丒僐儅儞僪僋儔僗偺惗惉偲娭楢晅偗
	//徻嵶忣曬昞帵夋柺價儏乕惗惉
	CSmbMusicAPSongInfoDetailView* detailview =
	  new(ELeave) CSmbMusicAPSongInfoDetailView(model, iLog, *this/*, *iRscMgrAppClient*/);

	RegistView(detailview);
	//徻嵶忣曬昞帵夋柺僐儅儞僪僋儔僗惗惉
	CSmbMusicAPSongInfoDetailCmd* detailcmd =
						new(ELeave) CSmbMusicAPSongInfoDetailCmd(*detailview, model, *this, launcher, iLog);
	RegistCmd(detailcmd);
	//價儏乕ID偲僐儅儞僪億僀儞僞偺昍晅偗
	//	TRAP(error, RegistVCRelationL(detailview->ViewId().iViewUid, *detailcmd));
	TRAPD(error, RegistVCRelationL(detailview->ViewId().iViewUid, *detailcmd));
	if(KErrNone != error)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo026, ELogLevelHighest, error, KSmbMusicAPSongInfoLogRegistVCRelationErr);
		//儕乕僽張棟
		User::Leave(error);
		}

	//URL昞帵夋柺價儏乕惗惉
	CSmbMusicAPSongInfoURLView* urlview =
						new(ELeave) CSmbMusicAPSongInfoURLView(model, iLog, *this);
	RegistView(urlview);
	//URL昞帵夋柺僐儅儞僪僋儔僗惗惉
	CSmbMusicAPSongInfoURLCmd* urlcmd =
						new(ELeave) CSmbMusicAPSongInfoURLCmd(*urlview, model, *this, launcher, iLog);
	RegistCmd(urlcmd);
	//價儏乕ID偲僐儅儞僪億僀儞僞偺昍晅偗
	TRAP(error, RegistVCRelationL(urlview->ViewId().iViewUid, *urlcmd));
	if(KErrNone != error)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo170, ELogLevelHighest, error, KSmbMusicAPSongInfoLogRegistVCRelationErr);
		//儕乕僽張棟
		User::Leave(error);
		}

	//URL昞帵夋柺偺搊榐
	TRAP(error, urlview->RegisterViewL());
	if(KErrNone != error)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo024, ELogLevelHighest, error, KSmbMusicAPSongInfoLogRegisterViewErr);
		//儕乕僽張棟
		User::Leave(error);
		}

	//徻嵶忣曬昞帵夋柺偺搊榐
	//(徻嵶忣曬昞帵夋柺傪RegistViewL偟偨屻偵偙偺ConstructL撪偱儕乕僽偡傞偲丄傾僾儕廔椆帪偵僷僯僢僋偡傞偨傔丄ConstructL偺嵟屻偱搊榐偡傞)
	TRAP(error, detailview->RegisterViewL());
	if(KErrNone != error)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo023, ELogLevelHighest, error, KSmbMusicAPSongInfoLogRegisterViewErr);
		//儕乕僽張棟
		User::Leave(error);
		}

//ADD-S 汭弐 徻嵶忣曬曇廤偺捛壛
	//Edit夋柺價儏乕惗惉
	CSmbMusicAPSongInfoEditView* editview =
						new(ELeave) CSmbMusicAPSongInfoEditView(model, iLog, *this);
	RegistView(editview);
	//Edit夋柺僐儅儞僪僋儔僗惗惉
	CSmbMusicAPSongInfoEditCmd* editcmd =
						new(ELeave) CSmbMusicAPSongInfoEditCmd(*editview, model, *this, launcher, iLog);
	RegistCmd(editcmd);
	//價儏乕ID偲僐儅儞僪億僀儞僞偺昍晅偗
	TRAP(error, RegistVCRelationL(editview->ViewId().iViewUid, *editcmd));
	if(KErrNone != error)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo247, ELogLevelHighest, error, KSmbMusicAPSongInfoLogRegistVCRelationErr);
		//儕乕僽張棟
		User::Leave(error);
		}

	//Edit夋柺偺搊榐
	TRAP(error, editview->RegisterViewL());
	if(KErrNone != error)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo248, ELogLevelHighest, error, KSmbMusicAPSongInfoLogRegisterViewErr);
		//儕乕僽張棟
		User::Leave(error);
		}
//ADD-E 汭弐

//ADD-S 汭弐 僾儗僀儕僗僩偺忣曬昞帵婡擻偺懳墳
	//playlist夋柺價儏乕惗惉
	CSmbMusicAPSongInfoPlayListView* playlistview =
						new(ELeave) CSmbMusicAPSongInfoPlayListView(iLog, *this);
	RegistView(playlistview);
	//PlayList夋柺僐儅儞僪僋儔僗惗惉
	CSmbMusicAPSongInfoPlayListCmd* playlistcmd =
						new(ELeave) CSmbMusicAPSongInfoPlayListCmd(*playlistview, model, *this, launcher, iLog);
	RegistCmd(playlistcmd);
	//價儏乕ID偲僐儅儞僪億僀儞僞偺昍晅偗
	TRAP(error, RegistVCRelationL(playlistview->ViewId().iViewUid, *playlistcmd));
	if(KErrNone != error)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo289, ELogLevelHighest, error, KSmbMusicAPSongInfoLogRegistVCRelationErr);
		//儕乕僽張棟
		User::Leave(error);
		}

	//playlist夋柺偺搊榐
	TRAP(error, playlistview->RegisterViewL());
	if(KErrNone != error)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo290, ELogLevelHighest, error, KSmbMusicAPSongInfoLogRegisterViewErr);
		//儕乕僽張棟
		User::Leave(error);
		}
//ADD-E 汭弐

	//僨僼僅儖僩偺價儏乕偲偟偰丄徻嵶忣曬昞帵夋柺傪搊榐偡傞
	//(徻嵶忣曬昞帵夋柺傪價儏乕僒乕僶傊嵟屻偵搊榐偡傞偨傔丄尰嵼偺僨僼僅儖僩價儏乕偵愝掕偡傞)
	TRAP(error, SetDefaultViewL(*detailview));
	if(KErrNone != error)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo179, ELogLevelHighest, error, KSmbMusicAPSongInfoLogSetDefaultViewErr);
		//儕乕僽張棟
		User::Leave(error);
		}
	}

/**
 * 僐儅儞僪僀儀儞僩偺庴怣
 *
 * @param[in]		aCommand	僐儅儞僪ID
 */
void CSmbMusicAPSongInfoAppUi::HandleCommandL(TInt aCommand)
	{
	if(EEikCmdExit == aCommand)
		{
		//廔榖僉乕埲奜偱偺廔椆
		TRAPD(error, ExitL(KLaReturnClearUid));
		if(KLeaveExit != error)
			{
			//Exit娭悢偼L偼晅偐側偄偑儕乕僽偵傛傝廔椆偟偰偄傞偨傔丄TRAP偡傞偲僉儍僢僠偟偰偟傑偆
			//偦偺偨傔丄惓忢偵廔椆偝偣傞嵺偺抣偱偁傞KLeaveExit埲奜偺偲偒偵儘僌弌椡偡傞傕偺偲偡傞
			//儘僌弌椡
			SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo029, ELogLevelHighest, error, KSmbMusicAPSongInfoLogExitErr);
			}
		//儕乕僽張棟(Exit娭悢偑Leave偵傛傝惓忢廔椆偟偰偄傞偨傔丄偦偺抣偺偲偒傕嵞搙儕乕僽偡傞)
		User::Leave(error);
		}
/*	else if(ECmdOnHookExit == aCommand)
		{
		//廔榖僉乕偵偰廔椆
		TRAPD(error, ExitL(KLaReturnOnHookUid));
		if(KLeaveExit != error)
			{
			//Exit娭悢偼L偼晅偐側偄偑儕乕僽偵傛傝廔椆偟偰偄傞偨傔丄TRAP偡傞偲僉儍僢僠偟偰偟傑偆
			//偦偺偨傔丄惓忢偵廔椆偝偣傞嵺偺抣偱偁傞KLeaveExit埲奜偺偲偒偵儘僌弌椡偡傞傕偺偲偡傞
			//儘僌弌椡
			SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo029, ELogLevelHighest, error, KSmbMusicAPSongInfoLogExitErr);
			}
		//儕乕僽張棟(Exit娭悢偑Leave偵傛傝惓忢廔椆偟偰偄傞偨傔丄偦偺抣偺偲偒傕嵞搙儕乕僽偡傞)
		User::Leave(error);
		}*/
	else if(ECmdReleaseCommand == aCommand)
		{
		CSmbMusicAPSongInfoCmdBase& activecmd = ActiveCommandL();
		activecmd.ReleaseCommand();
		}
	else
		{
		//傾僋僥傿僽側價儏乕偺僐儅儞僪僋儔僗偑張棟傪峴偆
		CSmbMusicAPSongInfoCmdBase& activecmd = ActiveCommandL();

		activecmd.HandleViewCommandL(aCommand);
		//偙偙偼奺僐儅儞僪偺HandleViewCommandL()偵偰儘僌弌椡偡傞偨傔TRAP仺儘僌偺嶌嬈偼晄梫
		}
	}

/**
 * 廔榖僉乕墴壓張棟
 */
void CSmbMusicAPSongInfoAppUi::HandleOnHookL()
	{
	//傾僋僥傿僽側價儏乕偺僐儅儞僪僋儔僗偑張棟傪峴偆
	CSmbMusicAPSongInfoCmdBase& activecmd = ActiveCommandL();
	//偙偙偼ActiveCommandL()偵偰儘僌弌椡偡傞偨傔TRAP仺儘僌偺嶌嬈偼晄梫
	activecmd.HandleViewOnHookL();
	//偙偙偼奺僐儅儞僪偺HandleViewOnHookL()偵偰儘僌弌椡偡傞偨傔TRAP仺儘僌偺嶌嬈偼晄梫
	}

/**
 * 懠傾僾儕婲摦屻張棟
 *
 * @param[in]		aViewId				價儏乕ID
 * @param[in]		aCustomMessageId		僇僗僞儉儊僢僙乕僕ID
 * @param[in]		aCause				StartApp偺寢壥梫場
 * @param[in]		aDetail				StartApp偺寢壥梫場偺徻嵶
 */
void CSmbMusicAPSongInfoAppUi::LaAppChangeL(const TVwsViewId& /*aViewId*/,
									TUid aCustomMessageId,
									TLaStartAppResultEvent::TCause aCause,
									TInt /*aDetail*/)
	{
	//儘乕僇儖愗傝懼偊偺応崌
	if(KSmbMusicAPSongInfoLocalUid == aCustomMessageId)
		{//壗傕張棟偟側偄偙偲
		return;
		}

	//婲摦偵幐攕偟偨傜儘僌弌椡
	if(TLaStartAppResultEvent::ELaStartAppSuccess != aCause)
		{
		switch(aCause)
			{
			case TLaStartAppResultEvent::ELaStartAppAlreadyExists :
			case TLaStartAppResultEvent::ELaStartAppSwitchByUser :
			case TLaStartAppResultEvent::ELaStartAppCancelByUser :
				{
				//儐乕僓乕憖嶌偵傛傝婲摦偟側偐偭偨偨傔丄僄儔乕偲偟側偄
				}
				break;

			case TLaStartAppResultEvent::ELaStartAppFailureCompetition :
			case TLaStartAppResultEvent::ELaStartAppFailureProtected :
			case TLaStartAppResultEvent::ELaStartAppFailureViewActivate :
			case TLaStartAppResultEvent::ELaStartAppFailure :
			default :
				{
				//儘僌弌椡
				SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo030, ELogLevelHighest, aCause, KSmbMusicAPSongInfoLogAppChangeErr);
				//偙偺娭悢屇傃弌偟帪偼丄惓忢丒堎忢偵娭傢傜偢廔椆偡傞偺偱丄ExitL偺廔椆張棟偵摑堦偡傞
				}
				break;
			}
		}
	}

/**
 * 傾僾儕働乕僔儑儞廔椆帪偺價儏乕偺栠傝愭愝掕
 *
 * @param[in]	aViewId		價儏乕ID

⌨️ 快捷键说明

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