smbmusicapmainplayerimageview.cpp

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

CPP
1,793
字号
	}
//ADD-E TRK7502 2006/09/26 kobayashi

/**
 * 夋憸僼傽僀儖傪曐懚偡傞丏
 * 
 * @param[in]		aShowDialog		曐懚妋擣僟僀傾儘僌昞帵僼儔僌丏(ETrue: 昞帵偡傞 / EFalse: 昞帵偟側偄)
 */
void CSmbMusicAPMainPlayerImageView::HandleSaveImageFileL(TBool aShowDialog)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |130;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::HandleSaveImageFileL(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, aShowDialog);
#endif

	// 曐懚妋擣僟僀傾儘僌昞帵偺応崌丆曐懚妋擣僟僀傾儘僌傪昞帵偡傞丏
	if (aShowDialog)
		{
// 2006.09.12 TRK#6838,8041,8964
//	    HBufC*	baseMessage = CEikonEnv::Static()->AllocReadResourceL(R_SMB_AF_STR_MSG126);
//	    CleanupStack::PushL(baseMessage);
//		CSkonCombinedText* dlogText = CreateDialogMessageLC(baseMessage->Des(), iImageInfo.iFileName);
//		iPlayerEnv.DialogManager().ShowSelectionModelessDialogL(R_MUSIC_MAINPLAYER_IMAGE_SELECTION, this, NULL, dlogText);
//	    CleanupStack::Pop();
//	    delete baseMessage;
		// TRK#6838,8041,8964
		TInt dlogResId = R_MUSIC_MAINPLAYER_IMAGE_SELECTION;
		if(ESmbMusicAPMainPlayerImageKindJacket==iStartParam.kind)
			{
			dlogResId = iIndex==0 ? R_MUSIC_MAINPLAYER_JACKET_IMAGE_SELECTION : R_MUSIC_MAINPLAYER_IMAGE_SELECTION;
			}
		else
			{
			dlogResId = R_MUSIC_MAINPLAYER_RYLIC_IMAGE_SELECTION;
			}
		iPlayerEnv.DialogManager().ShowSelectionModelessDialogL(dlogResId, this, NULL, NULL);
		}
	// 曐懚幚峴偺応崌
	else
		{
		// 婲摦僷儔儊乕僞(僇僗僞儉儊僢僙乕僕)傪嶌惉偡傞
		// 僼傽僀儖曐懚傾僾儕働乕僔儑儞婲摦僷儔儊乕僞傪惗惉
		TSmbDbxFolderSelectStartParam* dbxFolderSelectStartParam = new TSmbDbxFolderSelectStartParam();

		CleanupStack::PushL(dbxFolderSelectStartParam);
		// 僼傽僀儖庬暿傪儅僀僺僋僠儍偵愝掕
		dbxFolderSelectStartParam->SetFileType(ESmbDbxPictureFile);
		// 僼僅儖僟庢摼尦庬暿傪i儌乕僪偵愝掕
		// 曇廤尦僼傽僀儖奿擺愭亖僨乕僞BOX 偺応崌丂i儌乕僪丄僨僐儊僺僋僠儍丄儐乕僓僼僅儖僟
		// 曇廤尦僼傽僀儖奿擺愭亖杮懱奼挘儊儌儕丄奜晹儊儌儕 偺応崌丂僨僐儊僺僋僠儍丄僨乕僞岎姺丄儐乕僓僼僅儖僟
		dbxFolderSelectStartParam->SetFileStoringType(ESmbDbxImodeFolder|ESmbDbxDecoMailFolder|ESmbDbxUserFolder);
		
		// 奜晹儊儌儕慖戰傪杮懱慖戰乮僨乕僞BOX乯偵愝掕
		dbxFolderSelectStartParam->SetExtSelection(ESmbDbxDatabox);
// Change-S PTX-824懳墳(TRK-1164/CQid-1170) 暯壀
		// 曐懚儌乕僪傪忋彂偒儌乕僪乮儊儌儕僼儖帪偵嶍彍傾僾儕傪婲摦偡傞乯偵愝掕.
		dbxFolderSelectStartParam->SetSaveMode(ESmbDbxDeleteSave);
		//2006.10.15 TRK#11591
		// 曐懚儌乕僪傪曐懚儌乕僪乮梕検晄懌偺応崌偼廔椆偡傞乯偵愝掕.
		//dbxFolderSelectStartParam->SetSaveMode(ESmbDbxSave);
// Change-E PTX-824懳墳(TRK-1164/CQid-1170)丂暯壀
		
		// 曐懚懳徾僼傽僀儖偺僼儖僷僗傪愝掕
		dbxFolderSelectStartParam->SetRegistFileName(*iFileName);
		// 僆儕僕僫儖僼傽僀儖柤傪愝掕
		if(0<iImageInfo.iFileName.Length()
		//2006.10.18 僼傽僀儖柤挿偼俁俇僶僀僩埲撪
		&& EMainPlayerImageViewMaxFileNameLength>=iImageInfo.iFileName.Length())
			{
			dbxFolderSelectStartParam->SetRegistOrgName(iImageInfo.iFileName);
			}
		// 娗棟梡僞僀僩儖傪愝掕乮僆儕僕僫儖僼傽僀儖柤傪娗棟僞僀僩儖偲偡傞応崌偼愝掕偟側偄乯
		//	dbxFolderSelectStartParam->SetRegistTitle();
		// 嶌惉擔帪傪愝掕乮曐懚擔帪傪偦偺傑傑愝掕偡傞応崌偼愝掕偟側偔偰傛偄乯
		//	TTime createTime;
		//	createTime.HomeTime();
		//	dbxFolderSelectStartParam->SetRegistCreateDate(createTime);
		
		// TRK#5281
		// SEMC_AP_Music條
		// 杮審丄庢摼尦偑乽i儌乕僪乿偲側偭偰偄側偄偨傔丄
		// 乽miniSD傊堏摦乿偑敿婸搙偵側偭偰偍傝傑偡丅
		// 帠嬈幰巇條偵埲壓偺婯掕偑偛偞偄傑偡丅
		// MusicPlayer_ImDfor06_2ndVer0.9.0.doc
		// 5.4.1.1. 夋憸昞帵/曐懚婡擻
		// 乽堏摦婡撪傊偺曐懚埲崀偵偮偄偰偼丄i儌乕僪宱桼偱庢摼偟偨僨乕僞憡摉偺傕偺偲偟偰庢傝埖偆偙偲乿
		// 曐懚AP偱偼丄屇傃弌偟AP偵偰愝掕偝傟偨庢摼尦傾僾儕働乕僔儑儞庬暿傪
		// 庢摼尦庬暿偵曄姺偟丄僐儞僥儞僣娗棟偵搊榐偟偰偍傝傑偡丅

		// 偮偒傑偟偰偼丄庢摼尦傪乽i儌乕僪乿偲偡傞偨傔偵丄曐懚AP偺婲摦僷儔儊乕僞
		// 丂4.1.1.11.庢摼尦傾僾儕働乕僔儑儞庬暿愝掕(SetRegistSourceAp)
		// 偵偰ESmbDbxBrowserSource傪偛巜掕婅偄傑偡丅

		// 庢摼尦傾僾儕働乕僔儑儞庬暿傪愝掕
		dbxFolderSelectStartParam->SetRegistSourceAp(ESmbDbxBrowserSource);
		
		// 僟僂儞儘乕僪尦URL傪愝掕乮僼儖妝嬋僼傽僀儖偐傜愗傝弌偟偨応崌偼枹愝掕偱傛偄丠乯
		//	dbxFolderSelectStartParam->SetRegistURL();
		// 嵞惗惂尷側偟偵愝掕(僼儖妝嬋偼DRM僐儞僥儞僣偼拝怣壒偵愝掕偱偒側偄偨傔屌掕)
		dbxFolderSelectStartParam->SetRegistLimitation(ESmbDbxLimitNone);
		// 僷乕僜僫儖僨乕僞戅旔忣曬傪愝掕
		dbxFolderSelectStartParam->SetRegistTakeShelter(ETrue);
		// 奿擺傾僾儕ID傪愝掕
		//	dbxFolderSelectStartParam->SetRegistAppUid(CEikonEnv::Static()->EikAppUi()->Application()->AppDllUid());
		// 嵞攝晍幆暿巕傪愝掕
		//dbxFolderSelectStartParam->SetRegistDistribution(ETrue);	// 夋憸僼傽僀儖偺幆暿巕
		
		// X-Dcm-Move忣曬偍傛傃X-Dcm-Additional忣曬愝掕
		dbxFolderSelectStartParam->SetXDcmMoveAndAdditional(iImageInfo.iDCMMove, iImageInfo.iDCMAdditional);
	
		//2006.07.19 嶳壀
		/**< 僶僀儞僨傿儞僌忣曬偺桳柍 */
		//	dbxFolderSelectStartParam->iBindingFlag;

	    //姰椆億僢僾傾僢僾旕昞帵愝掕丅
		// 2006.09.12 TRK#6838,8041,8964
		dbxFolderSelectStartParam->SetDisableFinishedPopup();

		// 暅婣愭傪愝掕
		TUid viewUid = TUid::Uid(ESmbMusicAPMainPlayerImageViewId);
		dbxFolderSelectStartParam->SetReturnView(CEikonEnv::Static()->EikAppUi()->Application()->AppDllUid(), viewUid);
		TSmbDbxFolderSelectStartParamBuf param(*dbxFolderSelectStartParam);

		// 僨乕僞BOX僼傽僀儖曐懚傾僾儕傪婲摦偡傞
		iPlayerEnv.BasisPartFuncInterface().StartChildAppL(KSmbDbxFolderSelectAppUid, KSmbDbxFolderSelectViewUid, KSmbDbxFolderSelectMsgUid, param);

		CleanupStack::PopAndDestroy(dbxFolderSelectStartParam);	// dbxFolderSelectStartParam
		}
	}

/**
 * 夋憸僼傽僀儖傪嶍彍偡傞丏
 */
void CSmbMusicAPMainPlayerImageView::DeleteImageFile(void)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |140;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::DeleteImageFile()");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt);
#endif
	
	if(NULL==iFileName)
		{
		return;
		}
	
	// 摨偠僼傽僀儖柤偺僼傽僀儖偑偁傞偐偳偆偐傪妋擣偡傞
	// 僼傽僀儖傪僆乕僾儞偡傞
	RFile	file;
	TInt	ret = KErrNone;
	
	ret = file.Open(iFs, *iFileName, EFileRead);
	if(KErrNone != ret)
		{
		// 僼傽僀儖偑懚嵼偟側偄
		return;
		}
	
	// 偙偙偱僼傽僀儖偼僋儘乕僘偡傞
	file.Close();
	
	// 僼傽僀儖嶍彍
	TInt result = iFs.Delete(*iFileName);
	}		

/**
 * 梫媮姰椆
 *
 * @param[in]		aKind				梫媮庬暿
 * @param[in]		aResult				張棟寢壥
 * @param[in]		aResponse			墳摎僋儔僗偺嶲徠乮忣曬庢摼梡乯
 */
void CSmbMusicAPMainPlayerImageView::RequestComplete(TSmbMusicAPMainPlayerRequest 							aKind, 
													 TInt 													aResult, 
													 MSmbMusicAPMainPlayerFilterSyncServerProcessResponse&	aResponse)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |150;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::RequestComplete(%d, %d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, aKind, aResult);
#endif
	
	switch(aKind)
		{
// Change-S PTX-824懳墳(UIQ-1287)丂暯壀
//		case EImageRequestGetImageInfo:
		case EImageRequestGetJacketImageInfo:
		case EImageRequestGetLyricImageInfo:
// Change-E PTX-824懳墳(UIQ-1287)丂暯壀
			{
			if(KErrNone!=aResult)
				{
				TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |151;
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::HandleImageEventL(%d) - GetImageInfo Error");
				SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelHigh, KLogFmt, aResult);
// Add-S PTX-824 D_82400016158懳墳 暯壀 2007.10.01
				if (KErrPermissionDenied == aResult)
					{
					iRetryGetImage = ETrue;
					break;
					}
// Add-E PTX-824 D_82400016158懳墳 暯壀 2007.10.01
				//2006.10.01 TRK#10393
				iImageErr = aResult;
				ShowImageL(NULL, NULL, iTotalCount, iIndex, EFalse);
				}
			else
				{
#ifdef __DEBUG_LOG_MAINPLAYER__
				TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |152;
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::HandleImageEventL(%d) - GetImageInfo OK");
				SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, aResult);
#endif
// Change-S PTX-824懳墳(UIQ-1287)丂暯壀
				if (EImageRequestGetJacketImageInfo == aKind)
					{
					iArrayJacket.Reset(); 
					aResponse.GetResultSongImageInfo(iArrayJacket, ESmbMusicAPSyncEngineImageTypeJacket);
					iHasJacketImageInfo = ETrue;
					}
				else
					{
					iArrayLyric.Reset();
					aResponse.GetResultSongImageInfo(iArrayLyric, ESmbMusicAPSyncEngineImageTypeLyric);
					iHasLyricImageInfo = ETrue;
					}
//				iArrayJacket.Reset(); 
//				iArrayLyric.Reset();
//				aResponse.GetResultSongImageInfo(iArrayJacket, iArrayLyric);
//
//				iHasImageInfo = ETrue;

				// 夋憸忣曬(ImageInfo)庢摼偟偨偨傔丆嵞搙HandleGetImageFile傪屇傃弌偡
				HandleGetImageFile(EFalse);
// Change-E PTX-824懳墳(UIQ-1287)丂暯壀
				}
			}
			break;
		case EImageRequestGetImage:
			{
			if(KErrNone!=aResult)
				{
				TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |153;
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::HandleImageEventL(%d) - GetImage Error");
				SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelHigh, KLogFmt, aResult);
// Add-S PTX-824 D_82400016158懳墳 暯壀 2007.10.01
				if (KErrPermissionDenied == aResult)
					{
					iRetryGetImage = ETrue;
					break;
					}
// Add-E PTX-824 D_82400016158懳墳 暯壀 2007.10.01
				//2006.10.01 TRK#10393
				iImageErr = aResult;
				ShowImageL(NULL, NULL, iTotalCount, iIndex, EFalse);
				}
			else
				{
#ifdef __DEBUG_LOG_MAINPLAYER__
				TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |154;
				_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::HandleImageEventL(%d) - GetImage OK");
				SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, aResult);
#endif
				
				//夋憸庢摼偺姰椆
				// 庢摼夋憸僗儁僢僋偺妋擣
				TInt width = 0;
				TInt height = 0;
				TInt ret = CheckImageSpecL(*iFileName, width, height);
				switch(ret)
					{
					// 惓忢側夋憸偺応崌
					case KErrNone:
						{
						iImageErr = KErrNotFound;
						if(ESmbMusicAPMainPlayerImageKindJacket==iStartParam.kind)
							{
							iTotalCount = iArrayJacket.Count();
							if(iIndex < iTotalCount)
								{
								iImageInfo = iArrayJacket[iIndex];
								iImageErr = KErrNone;
								}
							}
						else
							{
							iTotalCount = iArrayLyric.Count();
							if(iIndex < iTotalCount)
								{
								iImageErr = KErrNone;
								iImageInfo = iArrayLyric[iIndex];
								}
							}
						iStoreFlag = iImageInfo.iStoreFlag;

#ifdef __DEBUG_LOG_MAINPLAYER__
						TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |155;
						_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::HandleImageEventL(%d) - CheckImageSpecL OK %d %d %d %d %d");
						SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, ret, width, height, iTotalCount, iIndex, iStoreFlag);
#endif
// Change-S PTX-824懳墳(UIQ-1535)
// 弅彫張棟偼嫟捠Lib偑傗偭偰偔傟傞偺偱丄嶍彍
//						//DEL-S TRK7502 2006/09/25 kobayashi
//						//ShowImageL(*iFileName, width, height, iTotalCount, iIndex, iStoreFlag);
//						//DEL-E TRK7502 2006/09/25 kobayashi
//
//						//ADD-S TRK7502 2006/09/25 kobayashi
//						// 夋憸昞帵僒僀僘傪妋擣偡傞
//						// MP-04-001
//						//丒夋憸傪埲壓偺傛偆偵偟偰昞帵偡傞
//						//丂-夋憸偑夋柺撪偵擺傑傞応崌丗僙儞僞儕儞僌偟偰昞帵(夋憸偺奼戝偼偟側偄)
//						//丂-夋憸偑夋柺撪偵擺傑傜側偄応崌丗僙儞僞儕儞僌偟偰昞帵(傾僗儁僋僩斾傪堐帩偟偰弅彫昞帵)
//						// 夋憸昞帵僒僀僘傪挷惍乮弅彫乯偡傞
//						TInt imageWidth = width;
//						TInt imageHeight = height;
//						TReal realWidth = static_cast<TReal>(width);
//						TReal realHeight = static_cast<TReal>(height);
//						// 墶暆偑夋柺撪偵擺傑傜側偄応崌
//						if(KSmbMusicAPLibVGAShortLength<imageWidth)
//							{
//							// 傾僗儁僋僩斾傪堐帩偟偰崅偝傪寁嶼
//							realHeight = realHeight * static_cast<TReal>(KSmbMusicAPLibVGAShortLength)/realWidth;
//							imageWidth  = KSmbMusicAPLibVGAShortLength;
//							imageHeight = static_cast<TInt>(realHeight);
//							if (imageHeight == 0)
//								{
//								imageHeight = 1;
//								}
//							}
//						// 廲暆偑夋柺撪偵擺傑傜側偄応崌
//						// 仸夋憸僒僀僘僠僃僢僋偟偰偄傞偺偱偙偺働乕僗偼側偄偼偢偩偑
//						// 丂彨棃丄僗僋儕乕儞傪墶偵偟偰昞帵偡傞偙偲傪憐掕偟偰懳墳偟偰偍偔
//						if(KSmbMusicAPLibVGALongLength<imageHeight)
//							{
//							// 傾僗儁僋僩斾傪堐帩偟偰墶暆傪寁嶼
//							realWidth = realWidth * static_cast<TReal>(KSmbMusicAPLibVGALongLength)/realHeight;
//							imageWidth  = static_cast<TInt>(realWidth);
//							imageHeight = KSmbMusicAPLibVGALongLength;
//							if (imageWidth == 0)
//								{
//								imageWidth = 1;
//								}
//							}
//						HandleBitmapDataL(imageWidth, imageHeight);
						HandleBitmapDataL(KSmbMusicAPLibVGAShortLength, KSmbMusicAPLibVGALongLength, ETrue);
// Change-E PTX-824懳墳(UIQ-1535)
						//ADD-E TRK7502 2006/09/25 kobayashi
						}
						break;

					// 僒億乕僩奜(僗儁僢僋奜乯夋憸偺応崌
					case KErrNotSupported:	// Not supported
						{
#ifdef __DEBUG_LOG_MAINPLAYER__
						TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerImageView |156;
						_LIT(KLogFmt, "CSmbMusicAPMainPlayerImageView::HandleImageEventL(%d) - CheckImageSpecL NotSupported");
						SmbMusicAPMainPlayerUtility::OutputLog(iAfEnv.Log(), logCode, ELogLevelNormal, KLogFmt, ret);
#endif

⌨️ 快捷键说明

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