smbmusicapmainplayerstateplay.cpp

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

CPP
1,678
字号
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPMainPlayerStatePlay.cpp
//
// Description: 
//	儈儏乕僕僢僋僾儗僀儎乕嵞惗宯偺忬懺僋儔僗
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅			|曄峏幰 	|撪梕
//--------------+-----------+----------------------------------------------
//2006/06/07	|K3拞堜		| 弶斉儕儕乕僗

/// 忬懺僋儔僗
/**
 * @file SmbMusicAPMainPlayerStatePlay.cpp
 *
 * 儈儏乕僕僢僋僾儗僀儎乕嵞惗宯偺忬懺僋儔僗
 */


//////////////////////////////////////////////////////////
//#define __SKIP_GETIMAGE__			// 摦嶌晄椙偺偨傔僗僉僢僾
//#define __SKIP_NOTIFY_INDEX__		// 摦嶌晄椙偺偨傔僗僉僢僾
#define __SKIP_ASSERT__
//////////////////////////////////////////////////////////

#include "SmbMusicAPMainPlayerPlayDebug.h"

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

#ifndef FJPGBASIC_H__
#include <FjpgBasic.h>
#endif

#ifndef FJPGBASICSTATUS_H__
#include <FjpgBasicStatus.h>
#endif

#ifndef FJPGBASICLASERVER_H__
#include <FjpgBasicLaServer.h>
#endif

#ifndef __SMBPGMENU_H__
#include <SmbPGMenu.h>
#endif

#ifndef FJPGKEYSOUNDBACKLIGHTS_H__
#include <FjpgKeySoundBackLight.h>
#endif

#ifndef FJLACOMMON_H__
#include <Fjlacommon.h>
#endif

#ifndef __SMBMUSICAPPLAYERCOMMONDEF_H__
#include "SmbMusicAPPlayerCommonDef.h"
#endif

#ifndef __SMBMUSICAPMAINPLAYEREXTERNALINTERFACE_H__
#include <SmbMusicAPMainPlayerExternalInterface.h>
#endif

#ifndef __SMBMUSICAPSONGINFOEXTERNALINTERFACE_H__
#include <SmbMusicAPSongInfoExternalInterface.h>
#endif

#ifndef __SmbMusicAPMainPlayerStatePlay_H__
#include "SmbMusicAPMainPlayerStatePlay.h"
#endif

#ifndef __SMBMUSICAPMAINPLAYERUTILITY_H__
#include "SmbMusicAPMainPlayerUtility.h"
#endif

#ifndef __SMBMUSICAPMAINPLAYERDIALOGMANAGER_H__
#include "SmbMusicAPMainPlayerDialogManager.h"
#endif

#ifndef __SMBMUSICAPMAINPLAYERAPPBASISPARTFUNCINTERFACE_H__
#include "SmbMusicAPMainPlayerBasisPartFuncInterface.h"
#endif

#ifndef __SMBMUSICAPMAINPLAYERAPPUI_H__
#include "SmbMusicAPMainPlayerAppUi.h"
#endif

#ifndef __SMBAFWORDING_RSG__
#include <SmbAfWording.rsg>
#endif

SEMCJ_NAMESPACE_BEGIN
USING_NAMESPACE_DCM

#include <SmbMusicAPMainPlayer.RSG>


#include <Music.mbg>


/**
 * 嵞惗夋柺偺僉乕僀儀儞僩懳墳昞
 */

const TSmbMusicAPMainPlayerStateKeyEvent	KSmbMusicAPMainPlayerStateKeyPlay[] =
	{
		{//  0.寛掕
		EWcdmaMpKeySelect,									// iKeyCode
		ESmbMusicAPMainPlayerStateKeyUse,					// 張棟偁傝
		CSmbMusicAPMainPlayerStatePlay::ProcKeyDecideL,		// iShortPressFunc
		NULL,												// iLongPressFunc
		NULL												// iRepeatFunc
		},
		{//  1.僜僼僩1
		EWcdmaMpKeyMail,									// iKeyCode
		ESmbMusicAPMainPlayerStateKeyUse,					// 張棟偁傝
		CSmbMusicAPMainPlayerStatePlay::ShowSubMenuL,		// iShortPressFunc
		NULL,												// iLongPressFunc
		NULL												// iRepeatFunc
		},
		{//  2.僜僼僩2
		EWcdmaMpKeyIMode,									// iKeyCode
		ESmbMusicAPMainPlayerStateKeyUse,					// 張棟偁傝
		CSmbMusicAPMainPlayerStatePlay::ChangePlayPictureL,	// iShortPressFunc
		NULL,												// iLongPressFunc
		NULL												// iRepeatFunc
		},
		{//  3.僜僼僩3
		EWcdmaMpKeyMenu,									// iKeyCode
		ESmbMusicAPMainPlayerStateKeyUnUse,					// 旕徚旓
		NULL,												// iShortPressFunc
		NULL,												// iLongPressFunc
		NULL												// iRepeatFunc
		},
		{//  5.Clear
		EWcdmaMpKeyClear,									// iKeyCode
		ESmbMusicAPMainPlayerStateKeyUse,					// 張棟偁傝
		CSmbMusicAPMainPlayerStatePlay::ChangeFilterViewL,	// iShortPressFunc
		NULL,												// iLongPressFunc
		NULL												// iRepeatFunc
		},
		{//  6.忋
		EWcdmaMpKeyUp,										// iKeyCode
		ESmbMusicAPMainPlayerStateKeyUse,					// 張棟偁傝
		CSmbMusicAPMainPlayerStatePlay::ProcKeyUpL,			// iShortPressFunc
		NULL,												// iLongPressFunc
		NULL												// iRepeatFunc
		},
		{//  7.壓
		EWcdmaMpKeyDown,									// iKeyCode
		ESmbMusicAPMainPlayerStateKeyUse,					// 張棟偁傝
		CSmbMusicAPMainPlayerStatePlay::ProcKeyDownL,		// iShortPressFunc
		NULL,												// iLongPressFunc
		NULL												// iRepeatFunc
		},
		{//  8.塃
		EWcdmaMpKeyRight,									// iKeyCode
		ESmbMusicAPMainPlayerStateKeyUse,					// 張棟偁傝
		CSmbMusicAPMainPlayerStatePlay::ProcKeyRight,		// iShortPressFunc
		CSmbMusicAPMainPlayerStatePlay::ProcKeyLongRight,	// iLongPressFunc
		NULL												// iRepeatFunc
		},
		{//  9.嵍
		EWcdmaMpKeyLeft,									// iKeyCode
		ESmbMusicAPMainPlayerStateKeyUse,					// 張棟偁傝
		CSmbMusicAPMainPlayerStatePlay::ProcKeyLeft,			// iShortPressFunc
		CSmbMusicAPMainPlayerStatePlay::ProcKeyLongLeft,		// iLongPressFunc
		NULL												// iRepeatFunc
		},
		{// 13.廔榖
		EWcdmaMpKeyOnHook,									// iKeyCode
		ESmbMusicAPMainPlayerStateKeyUnUse,					// 旕徚旓
		NULL,												// iShortPressFunc
		NULL,												// iLongPressFunc
		NULL												// iRepeatFunc
		},
		{// 28.儘僢僋
		EWcdmaMpKeyLock,									// iKeyCode
		ESmbMusicAPMainPlayerStateKeyUnUse,					// 旕徚旓
		NULL,												// iShortPressFunc
		NULL,												// iLongPressFunc
		NULL												// iRepeatFunc
		}
	};

/**
 * 僀儞僗僞儞僗惗惉
 * @param[in] aMusicAPMainPlayerEnv 儊僀儞僾儗僀儎乕娐嫬
 * @param[in] aMusicSyncEngine 摨婜僄儞僕儞
 * @param[in] aSelectView 専嶕宯價儏乕
 */
CSmbMusicAPMainPlayerStatePlay::CSmbMusicAPMainPlayerStatePlay(MSmbMusicAPMainPlayerEnv& aPlayerEnv,
								 RLog& aLog, RPGPropAgent& aPropAgent, CSmbMusicAPMainPlayerPlayView* aView
								  ) : CSmbMusicAPMainPlayerStateBase(aPlayerEnv, aLog, aPropAgent, aView)

	{

	}


/**
* 僨僗僩儔僋僞
*/
CSmbMusicAPMainPlayerStatePlay::~CSmbMusicAPMainPlayerStatePlay()
	{
	}

//==============================================================================================
//
// Query儊僜僢僪
//
//
//==============================================================================================

/**
 * 忬懺傪幆暿偡傞Enum抣偺庢摼
 *
 * @return 忬懺傪幆暿偡傞TSmbMusicAPMainPlayerPlayStatus宆偺抣
 */
TSmbMusicAPMainPlayerPlayStatus CSmbMusicAPMainPlayerStatePlay::PlayStatus()
	{
	return ESmbMusicAPMainPlayerPlayPlaying;
	}



//==============================================================================================
//
//  ViewActivated娭楢儊僜僢僪
//
//
//==============================================================================================

/**
 * 價儏乕愗懼偊傪梫媮偝傟偨偲偒偺張棟
 * Y: public
 * Y: DoViewActivatedImplL()偐傜屇偽傟傞丅
 * Y: 撪梕僠僃僢僋嵪傒乮View僋儔僗偐傜嶍彍)
 */
void CSmbMusicAPMainPlayerStatePlay::ChangeViewFromFilterViewL()
	{
	if (ESmbMusicAPMainPlayerPlayProcNone == iView->iProc)
		{
		//僄儞僕儞傊偺梫媮偑敪峴偝傟偰偄側偄応崌
		
		iView->iProc = ESmbMusicAPMainPlayerPlayProcEngUse;
		
// PTX824懳墳
// Change 2007.03.07
//		// 夋憸枃悢傪庢摼
//		iView->iCmd->GetImageNumber(iView->iPlayList);
		// 嵞惗嬋忣曬傪庢摼
		iView->ReqGetPlayInfoL();
// Change End 2007.03.07
		
		}
	else
		{
		//僄儞僕儞傊偺梫媮傪敪峴偟偰偄傞応崌
		
		// 嵞惗拞偺応崌偼價僕儏傾儔僀僓乕傪奐巒偡傞丅(嵞惗忬懺屌桳偺張棟)
		iView->iDrawer->RestartVisualizerL();
		}
	}


/**
 * 嵞惗忬懺偱嬻偺嵞惗儕僗僩傪巜掕偝傟偨偲偒偺張棟
 * Y: public
 * Y: DoViewActivatedImplL()偐傜屇偽傟傞丅
 * Y: 弶婜忬懺偱掆巭偟偨忬懺偵偡傞丅
 * Y: 嵞惗拞偺応崌偵偼嵞惗傪掆巭偡傞
 * Y: 掆巭拞偺応崌偵偼儕僕儏乕儉忣曬傪攋婞偡傞丅
 * Y: 撪梕僠僃僢僋嵪傒乮View僋儔僗偐傜嶍彍)
 */
void CSmbMusicAPMainPlayerStatePlay::ChangedEmptySongListL()
	{
	//儅僫乕儌乕僪嵞惗偺僼儔僌傪儕僙僢僩
	iPlayerEnv.SetMannerModePlayingStateL(EFalse);	// 2006.10.25
		
	if (EFalse != iView->iFailState)
		{//嵞惗晄壜嬋僗僉僢僾拞偺応崌
		
		ChangedEmptySongListInFailSkipL();
		
		}
	else
		{//嵞惗晄壜嬋僗僉僢僾拞偱偼側偄捠忢偺嵞惗忬懺偺応崌
		
		//僕儍働僢僩夋憸偺儕儕乕僗
// PTX824懳墳
// Del 2007.03.28
//		iView->iDrawer->ReleaseJacketPictureL(EFalse);			// TRK:11836  2006.10.24
// Del End 2007.03.28
// del 2007.08.18
//		iView->iDrawer->ReleaseJacketPictureL(ETrue);			// TRK:11836  2006.10.24
		
		//嵞惗掆巭梫媮偺敪峴
		iView->iCmd->PlayStop();				// 2006.10.01  TRK:10286
		
		//掆巭偺Notification帪偵儕僕儏乕儉忣曬偺攋婞偺張棟傪峴偆傛偆偵僼儔僌傪僙僢僩偡傞丅
		iView->iPauseResumeCancel = ETrue;

		//昞帵偺峏怴
		iView->iPlayList.iListHandle = iView->iReqPlayList.iListHandle;
		iView->iPlayList.iIndex      = iView->iReqPlayList.iIndex;
		
		TInt ret = iView->iCmd->UpdateDisplayInfo(ESmbMusicAPPlayerChangePlayViewEvent, iView->iPlayList, iView->iReqPlayList.iShuffle);
		
		if (KErrNone != ret)
			{//昞帵偺峏怴偱僄儔乕偑敪惗偟偨応崌
			
			_LIT(KLogFmt, "CSmbMusicAPMainPlayerStatePlay::ChangedEmptySongListL UpdateDisplayInfo err=%d");
			SmbMusicAPMainPlayerUtility::OutputLog(iLog, 201006, ELogLevelHigh, KLogFmt, ret);
			
			User::Leave(ret);
			}
		}
	}

/**
 * 嵞惗晄壜嬋僗僉僢僾張棟忬懺偱嬻偺嵞惗儕僗僩傪巜掕偝傟偨偲偒偺張棟
 * Y: ChangedEmptySongListL()偺僾儔僀儀乕僩娭悢
 * Y: 撪梕僠僃僢僋嵪傒乮View僋儔僗偐傜嶍彍)
 * Y: private
 */
void CSmbMusicAPMainPlayerStatePlay::ChangedEmptySongListInFailSkipL()
	{
	//嵞惗晄壜嬋偺僗僉僢僾張棟拞偱偁傞偙偲傪帵偡僼儔僌傪僋儕傾
	iView->iFailState = EFalse;
	
	if (NULL != iView->iPeriodic)
		{// 僗僉僢僾懸偪僞僀儅乕偑愝掕偝傟偰偄傞偺応崌
		
		//僗僉僢僾懸偪僞僀儅偺僋儕傾
		delete iView->iPeriodic;
		iView->iPeriodic = NULL;
		
		//僕儍働僢僩夋憸偺儕儕乕僗
// PTX824懳墳
// Del 2007.03.28
//		iView->iDrawer->ReleaseJacketPictureL(EFalse);			// TRK:11836  2006.10.24
// Del End 2007.03.28
// del 2007.08.18
//		iView->iDrawer->ReleaseJacketPictureL(ETrue);			// TRK:11836  2006.10.24
		
		//億乕僘偐傜偺嵞奐傪僉儍儞僙儖偡傞僼儔僌傪僙僢僩偡傞丅
		iView->iPauseResumeCancel = ETrue;
		
		//嵞惗偺掆巭梫媮傪敪峴偡傞丅
		iView->iCmd->PlayStop();				// 2006.10.01  TRK:10286
		
		}
	else 
		{// 僗僉僢僾懸偪僞僀儅乕偑愝掕偝傟偰偄側偄応崌
		
		//梫媮偺敪峴忬嫷偺庢摼
		iView->iCmd->GetRequestKind(iView->iProckind, iView->iInfokind);
		
		if (ESmbMusicAPMainPlayerReqPlayNext == iView->iProckind)
			{// 嬋憲傝梫媮敪峴嵪傒偺応崌
			
			iView->iFial2Idle = ETrue;
			iView->iNotifyFial2Idle = ETrue;
			}
		else
			{//嬋憲傝梫媮偑傑偩敪峴偝傟偰偄側偄応崌
			
			if (ESmbMusicAPMainPlayerReqGetPlayTime == iView->iProckind)
				{// 嵞惗帪娫庢摼拞偺応崌
				
				//嵞惗帪娫庢摼傪僉儍儞僙儖偡傞僼儔僌傪僙僢僩
				iView->iCancelTimeGet = ETrue;
				}
			if (ESmbMusicAPMainPlayerReqNone != iView->iInfokind)
				{//壗傜偐偺忣曬庢摼偺梫媮傪敪峴拞偺応崌
				
				//梫媮偺僉儍儞僙儖傪峴偆丅
				iView->iCmd->CancelAction();
				}
			
			//僕儍働僢僩夋憸偺儕儕乕僗
// PTX824懳墳
// Del 2007.03.28
//			iView->iDrawer->ReleaseJacketPictureL(EFalse);			// TRK:11836  2006.10.24
// Del End 2007.03.28
// del 2007.08.18
//			iView->iDrawer->ReleaseJacketPictureL(ETrue);			// TRK:11836  2006.10.24
			
			//億乕僘偐傜偺嵞奐傪僉儍儞僙儖偡傞僼儔僌傪僙僢僩偡傞丅
			iView->iPauseResumeCancel = ETrue;
			
			//嵞惗偺掆巭梫媮傪敪峴偡傞丅
			iView->iCmd->PlayStop();				// 2006.10.01  TRK:10286
			}
		}
	}//end of ChangedEmptySongListInFailSkipL()


/**
 * 嵞惗晄壜嬋僗僉僢僾張棟忬懺偱嵞惗嬋曄峏傪偝傟偨偲偒偺張棟
 *
 * Y: private
 * Y: StartPlayListInPlayingL()偐傜iFailState==true偺忦審壓偱屇偽傟傞
 *
 * @param[in] aSongInfo 嵞惗儕僗僩忣曬
 * @param[in] aAllShuffle 慡嬋僔儍僢僼儖巜掕乮ETrue:慡嬋僔儍僢僼儖乯
 */
void CSmbMusicAPMainPlayerStatePlay::ChangeSongInFailSkip(TSmbMusicAPSyncEngineItemIndex aSongInfo, TBool aAllShuffle)
	{
		
	iView->iPlayList = aSongInfo;
	iView->iAllShuffle = aAllShuffle;
	iView->iFailState = EFalse;
	
	if (NULL != iView->iPeriodic)
		{// 僗僉僢僾懸偪忬懺偺応崌
		 //  僞僀儅乕偼RespGetPlayInfoL()偱張棟庬暿偑嵞惗晄壜嬋僗僉僢僾偵側偭偰偄偨偲偒偵惗惉丒奐巒偝傟傞丅

⌨️ 快捷键说明

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