smbmusicapmainplayerimageview.cpp

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

CPP
1,793
字号
/* Copyright (C) 2006-2007 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPMainPlayerImageView.cpp
//
// Description:
//	儈儏乕僕僢僋儊僀儞僾儗僀儎
//	夋憸昞帵夋柺價儏乕僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅				|曄峏幰			|撪梕
//---------------------------------------------------------------------------
//2006/06/05		|SEMCJ嶳壀		|怴婯嶌惉
//2006/07/09		|SEMCJ嶳壀		|摨婜僄儞僕儞/僒乕僶偲偺IF晹傪暘棧丒廋惓
//2006/07/10		|SEMCJ嶳壀		|夋憸庢摼張棟偺摦嶌妋擣偑偱偒偨偺偱儅乕僕
//2006/07/17		|SEMCJ嶳壀		|傾僀僐儞僉儍僢僔儏懳墳
//2006/07/18		|SDNA嶳壀		|
//2006/07/25		|SDNA嶳壀		|No Image偲Not Supported偺応崌暘偗傪廋惓
//2006/07/25		|SDNA嶳壀		|夋憸僒僀僘丒僼傽僀儖僒僀僘偺僠僃僢僋
//2006/07/25		|SDNA嶳壀		|夋柺慗堏丒PopUp(僕儍働僢僩夋憸梡丄壧帉夋憸梡)偺廋惓
//2006/07/25		|SDNA嶳壀		|僨乕僞BOX曐懚傾僾儕偐傜栠偭偰偒偨働乕僗偺廋惓
//2006/07/25		|SDNA嶳壀		|曐懚愭庬暿偺廋惓
//2006/07/25		|SDNA嶳壀		| temp file偺嶍彍張棟廋惓
//2006/07/25		|SDNA嶳壀		| SmbMM偺廋惓
//2006/08/03		|K3戝嫶			|抂枛奐暵傪捠抦偡傞僀儞僞僼僃乕僗傪捛壛
//2006/08/08		|SDNA嶳壀		|CGulIcon惗惉帪偺CFbsBitmap偺強桳尃埾忳傪廋惓
//2006/08/28		|SDNA嶳壀		|X-Dcm-Move忣曬偍傛傃X-Dcm-Additional忣曬愝掕偵懳墳
//2006/09/07		|K3戝嫶			|HandleBatteryLowPauseL()偑曉傝抣傪曉偡傛偆偵奼挘偝傟偨偙偲偵懳墳
//2006/09/13		|K3戝嫶			|PreparePlay拞偺掅揹埑嬋掆巭偵懳墳偡傞偨傔丄僀儞僞僼僃乕僗偑奼挘偝傟偨偙偲偵懳墳
//2007/05/17		|SEMCJ暯壀		|UIQ-1535懳墳
//2007/10/01		|SEMCJ暯壀		|D_82400016158懳墳

#include "SmbMusicAPMainPlayerImageView.h"

#include <fjlacommon.h>
#include <FJWcdmaMpKeys.h>

#include <SmbCommonDef.h>
#include <SmbAfWordingFormatter.h>
#include <Photo.mbg>
#include <DataBox.mbg>
#include <Music.mbg>
#include <SmbAfWording.rsg>

#include <FjAfEnv.h>
#include <FjAfVerticalLayout.h>
#include <SmbMusicAPMainPlayerExternalInterface.h>
#include <SmbMusicAPSongInfoExternalInterface.h>
#include <SmbDbxAppInterface.h>
#include "SmbMusicAPMainPlayerAppUi.h"
#include <e32debug.h>

#include <SmbMusicAPMainPlayer.rsg>
#include "SmbMusicAPMainPlayer.hrh"
#include "SmbMusicAPLibImageDef.h"
#include "SmbMusicAPMainPlayerUtility.h"

USING_NAMESPACE_SEMCJ
USING_NAMESPACE_DCM

SEMCJ_NAMESPACE_BEGIN

const TAfViewParam KSmbMusicAPMainPlayerImageViewParam =
	{
	ESmbMusicAPMainPlayerImageViewId,			// iViewId
//	R_MUSIC_MAINPLAYER_IMAGE_TITLE,				// iTitleResId
	0,											// iTitleResId
	R_MUSIC_MAINPLAYER_IMAGE_KEYGUIDANCE		// iKeyGuidanceResId
	};

//乽夋憸側偟乿僀儊乕僕偺撉傒崬傒梡
_LIT(KSkonMusicMbmNoImageFileName, "Z:\\WcdmaMp\\Media\\Image\\Music.mbm" );

//2006.10.16 TRK#11474
//夋憸撉崬傒乮揥奐拞乯僟僀傾儘僌偺昞帵抶墑帪娫
//const TInt KLoadingDialogDelayTime = 1000000;	// 1sec
  const TInt KLoadingDialogDelayTime = 500000;	// 0.5sec
//const TInt KLoadingDialogDelayTime = 0;	// 0sec

////////////////////////////////////////////////////////////////////////////////
// 夋憸昞帵夋柺
////////////////////////////////////////////////////////////////////////////////
/**
 * 僀儞僗僞儞僗惗惉
 *
 * @param[in]		aPlayerEnv				儊僀儞僾儗僀儎婎杮晹娐嫬僋儔僗
 * @param[in]		aSyncEngine				摨婜僒乕僶I/F僋儔僗
 * @return									夋憸昞帵夋柺僋儔僗僀儞僗僞儞僗
 */
CSmbMusicAPMainPlayerImageView* CSmbMusicAPMainPlayerImageView::NewL(MSmbMusicAPMainPlayerEnv& aPlayerEnv, CSmbMusicAPSyncEngine& aSyncEngine)
	{
    // 僆僽僕僃僋僩傪嶌惉偡傞
	CSmbMusicAPMainPlayerImageView* self = new(ELeave) CSmbMusicAPMainPlayerImageView(KSmbMusicAPMainPlayerImageViewParam, aPlayerEnv, aSyncEngine);
    // 僋儕乕儞僫僢僾僗僞僢僋丗PushL(self)
	CleanupStack::PushL(self);
    // 僐儞僗僩儔僋僞
	self->ConstructL();
    // 僋儕乕儞僫僢僾僗僞僢僋丗Pop(self)
	CleanupStack::Pop();
	return self;
	};

/**
 * 僐儞僗僩儔僋僞
 *
 * @param[in]		aViewParam				夋柺峔抸梡僷儔儊乕僞
 * @param[in]		aPlayerEnv				儊僀儞僾儗僀儎婎杮晹娐嫬僋儔僗
 * @param[in]		aSyncEngine				摨婜僒乕僶I/F僋儔僗
 */
CSmbMusicAPMainPlayerImageView::CSmbMusicAPMainPlayerImageView(const TAfViewParam& aViewParam, MSmbMusicAPMainPlayerEnv& aPlayerEnv, CSmbMusicAPSyncEngine& aSyncEngine)
	: CSmbMusicAPMainPlayerViewBase(aViewParam, aPlayerEnv, aSyncEngine)
	, iFs(CEikonEnv::Static()->FsSession())
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView | 00;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::CSmbMusicAPMainPlayerImageView()");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt);
#endif
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPMainPlayerImageView::~CSmbMusicAPMainPlayerImageView()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView | 10;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::~CSmbMusicAPMainPlayerImageView()");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt);
#endif

	// 夋憸僨乕僞傪儕僙僢僩
	// 傾僀僐儞僉儍僢僔儏傪嶍彍
	delete iIconCache;
	
	// 乽夋憸側偟乿傾僀僐儞傪嶍彍
	delete iNoImageIcon;
	
	iSyncModel = 0;
	
	iArrayJacket.Reset();
	iArrayJacket.Close();
	iArrayLyric.Reset();
	iArrayLyric.Close();

//ADD-S TRK7502 2006/09/26 kobayashi
	// Bitmap僨乕僞傪徚嫀偡傞
	if(NULL != iBitmap)
		{
		delete iBitmap->iMainBitmap;
		delete iBitmap->iMaskedBitmap;
		delete iBitmap;
		}
//ADD-E TRK7502 2006/09/26 kobayashi

	delete iImageFunc;

	//2006.10.16 TRK#11474
	// 夋憸撉崬傒僞僀儅乕傪嶍彍偡傞
	DeleteLoadingTimer();
	}

/**
 * 僙僇儞僪僐儞僗僩儔僋僞
 */
void CSmbMusicAPMainPlayerImageView::ConstructL()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView | 20;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::ConstructL()");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt);
#endif

	//2006.10.20 TRK#11919
	iAppUi = static_cast<CSakAppUi*>(CAfEnv::Static()->EikEnv().EikAppUi());

	// 儕僜乕僗偐傜暥帤楍傪撉傒崬傓	
    HBufC*	imageFilePath = CEikonEnv::Static()->AllocReadResourceL(R_MUSIC_MAINPLAYER_IMAGE_FILE_PATH);
    CleanupStack::PushL(imageFilePath);

	// 夋憸僼傽僀儖曐懚愭偺僨傿儗僋僩儕傪嶌惉偡傞
	TInt result = iFs.MkDir(imageFilePath->Des());
	if (result != KErrNone && result != KErrAlreadyExists)	// 嶌惉晄壜偺応崌
		{
		// 傕偆堦搙挧愴偡傞
		result =  iFs.MkDir(imageFilePath->Des());
		}
	CleanupStack::PopAndDestroy(imageFilePath);
	
	if (result != KErrNone && result != KErrAlreadyExists)	// 嶌惉晄壜偺応崌
		{
		// 儕乕僽張棟
		User::Leave(result);
		}

	// 摨婜僒乕僶僐儞僩儘乕儔傪庢摼偡傞
	iSyncModel = iPlayerEnv.FilterSyncServerCtrl();

	//夋憸壛岺僋儔僗傪惗惉偡傞
	TRAPD(error, iImageFunc = CSmbMusicAPLibImageFunc::NewL());
	if(KErrNone != error)
		{
		TInt code = CLASS_CODE_CSmbMusicAPMainPlayerImageView | 25;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::ConstructL() CSmbMusicAPLibImageFunc::NewL() Leave:%d");
		SmbMusicAPMainPlayerUtility::OutputLog(CAfEnv::Static()->Log(), code, ELogLevelHighest, KLogFmt, error);
		PANIC(9300000);
		}
	
	//2006.10.16 TRK#11474
	// 夋憸撉崬傒僞僀儅乕傪惗惉偡傞
	SetupLoadingTimer();
	}

/**
 * 價儏乕僐儞僥僫弶婜壔帪張棟
 */
void CSmbMusicAPMainPlayerImageView::DoConstructContainerL()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView | 30;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::DoConstructContainerL()");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt);
#endif

	// 儕僜乕僗偐傜暥帤楍傪撉傒崬傓	
    	HBufC*	imagePath = CEikonEnv::Static()->AllocReadResourceL(R_MUSIC_MAINPLAYER_IMAGE_PATH);
    	CleanupStack::PushL(imagePath);
	// 傾僀僐儞僉儍僢僔儏傪嶌惉偡傞
	iIconCache = CSmbMusicAPLibIconCache::NewL(imagePath->Des());
	CleanupStack::PopAndDestroy(imagePath);

	// 昤夋帪偵昁梫偲側傞Icon傪帠慜偵儘乕僪偟偰偍偔
	// 
	iIconCache->IconL(EMbmPhotoParts_commo_0, EMbmPhotoParts_commo_0m);
	iIconCache->IconL(EMbmPhotoParts_commo_1, EMbmPhotoParts_commo_1m);
	iIconCache->IconL(EMbmPhotoParts_commo_2, EMbmPhotoParts_commo_2m);
	iIconCache->IconL(EMbmPhotoParts_commo_3, EMbmPhotoParts_commo_3m);
	iIconCache->IconL(EMbmPhotoParts_commo_4, EMbmPhotoParts_commo_4m);
	iIconCache->IconL(EMbmPhotoParts_commo_5, EMbmPhotoParts_commo_5m);
	iIconCache->IconL(EMbmPhotoParts_commo_6, EMbmPhotoParts_commo_6m);
	iIconCache->IconL(EMbmPhotoParts_commo_7, EMbmPhotoParts_commo_7m);
	iIconCache->IconL(EMbmPhotoParts_commo_8, EMbmPhotoParts_commo_8m);
	iIconCache->IconL(EMbmPhotoParts_commo_9, EMbmPhotoParts_commo_9m);
	iIconCache->IconL(EMbmPhotoParts_commo_slash, EMbmPhotoParts_commo_slashm);

	//乽夋憸側偟乿傾僀僐儞
	CFbsBitmap* noImageBitmap = new(ELeave) CFbsBitmap();
	CleanupStack::PushL(noImageBitmap);
	User::LeaveIfError(noImageBitmap->Load(KSkonMusicMbmNoImageFileName, EMbmMusicMc_no_image));
	iNoImageIcon = 	CGulIcon::NewL(noImageBitmap, NULL);
	CleanupStack::Pop(noImageBitmap);

	// 僉乕僈僀僟儞僗偺僜僼僩2僉乕偵乽曐懚乿傪捛壛偡傞丏
	CSkonKeyGuidance* keyGuidance = static_cast<CSkonKeyGuidance*>(KeyGuidance());
//	CSkonKeyGuidance* keyGuidance = STATIC_CAST(CSkonKeyGuidance*, KeyGuidance());
	if(NULL!=keyGuidance)
		{
		HBufC* buf = (CEikonEnv::Static())->AllocReadResourceLC(R_SMB_AF_STR_SFT092);
		keyGuidance->SetKeyInfoL(ESkonKeyGuidanceSoftKeyRight, *buf, NULL, NULL, EImageCmdConfirmSaveImage);
		CleanupStack::PopAndDestroy(buf);
		// 僉乕僈僀僟儞僗偺乽曐懚乿僉乕傪昞帵偝偣側偄(僨僼僅儖僩)
		keyGuidance->MakeVisibleKey(ESkonKeyGuidanceSoftKeyRight, EFalse);
		}
	}

/**
 * 價儏乕傾僋僥傿僽姰椆帪偺僐乕儖僶僢僋娭悢撪張棟
 *
 * @param[in]		aViewId				屇傃弌偟尦價儏乕ID
 * @param[in]		aCustomMessageId	儊僢僙乕僕ID
 * @param[in]		aCust				儊僢僙乕僕僶僢僼傽
 * @leave			res					僼僅乕僇僗愝掕偵幐攕偟偨応崌
 */
void CSmbMusicAPMainPlayerImageView::DoViewActivatedImplL(const TVwsViewId& /*aViewId*/, TUid aCustomMessageId, const TDesC8& aCustomMessage)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView | 40;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::DoViewActivatedImplL(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, aCustomMessageId);
#endif

	iImageRequest = EFalse;
	
	//2006.10.16 TRK#11474
	ResetLoadingTimer();

	//婲摦僷儔儊乕僞傪僠僃僢僋偡傞
	// 儘乕僇儖價儏乕愗懼偺応崌
	if(KSmbMusicAPMainPlayerChangeViewMsgUid==aCustomMessageId)
		{
#ifdef __DEBUG_LOG_MAINPLAYER__
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView | 41;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::DoViewActivatedImplL(%d) - KSmbMusicAPMainPlayerChangeViewMsgUid");
		SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, aCustomMessageId);
#endif
		//2006.10.01 TRK#9721
		// 夋憸忣曬庢摼嵪傒偺応崌
// Change-S PTX-824懳墳(UIQ-1287) 暯壀
//		if (iHasImageInfo != EFalse)
		if (EFalse != iHasJacketImageInfo || EFalse != iHasLyricImageInfo)
// Change-E PTX-824懳墳(UIQ-1287) 暯壀
			{
			ClearImage(EFalse);
			}
		if (aCustomMessage != (TDesC8)KNullDesC8)
			{
			// 儊僢僙乕僕僷儔儊乕僞傪撪晹偵僉儍僢僔儏偡傞
			const TSmbMusicAPMainPlayerPrmImageDisp* param = reinterpret_cast<const TSmbMusicAPMainPlayerPrmImageDisp*>(aCustomMessage.Ptr());
			iStartParam = *param;
// Change-S PTX-824懳墳(UIQ-1287) 暯壀
			if (ESmbMusicAPMainPlayerImageKindJacket == iStartParam.kind)
				{
				iHasJacketImageInfo = EFalse;
				}
			else
				{
				iHasLyricImageInfo = EFalse;
				}
//			iHasImageInfo = EFalse;
// Change-E PTX-824懳墳(UIQ-1287) 暯壀
			iTotalCount = 0;
			iIndex = 0;
			iStoreFlag = EFalse;
			}
		else
			{
			return;
			}
		}
	// 僨乕僞俛俷倃曐懚傾僾儕偐傜栠偭偰偒偨応崌
	// 巕傾僾儕偑惓忢偱廔椆偟丄杮傾僾儕偵惓忢廔椆僀儀儞僩偑敪峴偝傟偨応崌
	else if(KLaReturnErrNoneUid == aCustomMessageId)
		{
#ifdef __DEBUG_LOG_MAINPLAYER__
		TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView | 42;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::DoViewActivatedImplL(%d) - KLaReturnErrNoneUid");
		SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, aCustomMessageId);
#endif
		
        if(aCustomMessage != (TDesC8)KNullDesC8)
			{
        	// 僨乕僞BOX曐懚傾僾儕偺曉傝抣傪庢摼偡傞
			const TSmbDbxFolderSelectReturnParam* param;
			param = reinterpret_cast<const TSmbDbxFolderSelectReturnParam *>(aCustomMessage.Ptr());
			if(ESmbDbxReturnErrNone==param->iError)
				{
				// 夋憸僨乕僞傪徚嫀偡傞
				//ClearImage(ETrue);
				// 惓忢廔椆
				iPlayerEnv.DialogManager().ShowConfirmModelessDialogL(R_MUSIC_MAINPLAYER_IMAGE_CONFIRM, this);
				}
            }
        else
	        {
	        }
		return;
		}
	// 巕傾僾儕偑僋儕傾僉乕/廔僉乕偱廔椆偟偨応崌
	else if(KLaReturnClearUid == aCustomMessageId || KLaReturnOnHookUid == aCustomMessageId)

⌨️ 快捷键说明

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