smbmusicaplibmwfunc.cpp

来自「索爱手机代码」· C++ 代码 · 共 1,300 行 · 第 1/4 页

CPP
1,300 行
字号
/**
 *  夋憸僼傽僀儖惗惉屻丄夋憸曄姺(Decode)傪峴偆
 **/
void CSmbMusicAPLibMWFunc::CompleteCreateFileNextConvertResize()
	{
	TInt result(iStatus.Int());
	if (iImageType == ESmbMusicMWLibImageTypeAAA)
		{	//  尰嵼庢摼拞偺夋憸偑AAA夋憸偩偭偨応崌
		if (result != KErrNone)
			{	//  AAA夋憸偺庢摼偑僄儔乕偩偭偨応崌
			//  僕儍働僢僩夋憸庢摼傪帋傒傞
			iImageType = ESmbMusicMWLibImageTypeJacket;

			result = GetImageAfterCheck();
			if (result == KErrNone)
				{
				//  旕摨婜梫媮傪僗僞乕僩偡傞乮SetActive偡傞乯
				Start();
				//  夋憸僼傽僀儖惗惉懸偪忬懺偵擖傞
				SetState(ESmbMusicAPLibWaitCreateFileNextConvertResize);

				return;
				}
			}
		}

	if ((result == KErrNotFound) ||
		(result == KErrNotSupported) ||
		(result == KErrOverflow))
		{	//  嬋傾僀僥儉偵夋憸偑側偄丄旕懳墳夋憸僼僅乕儅僢僩丄嵟戝僼傽僀儖僒僀僘僆乕僶乕偺応崌
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber41;
		_LIT(KMusicAPLibMWFunc41, "CSmbMusicAPLibMWFunc::CompleteCreateFileNextConvertResize() [Image Not Found or Not Supported or Overflow]: Status = %d");
		SmbMusicAPLibLog(logCode, ELogLevelNormal, KMusicAPLibMWFunc41, result);
#endif
		//惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮傪姰椆偡傞
 		DeleteObjectsAndComplete(result);

 		return;
		}
	else if(result != KErrNone)
		{
		//  姰椆僐乕僪偑懠偺僄儔乕抣偵側偭偰偄傞応崌丄僋儔僀傾儞僩偵偦偺僄儔乕傪捠抦偡傞
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber42;
		_LIT(KMusicAPLibMWFunc42, "CSmbMusicAPLibMWFunc::CompleteCreateFileNextConvertResize() [ErrStatus]:iStatus = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc42, result);

		//巜掕偟偨夋憸僼傽僀儖柤偺僼傽僀儖偑婛偵懚嵼偡傞応崌
		//崱尰嵼偼丄偦偆偄偆働乕僗偑側偄憐掕偱偁傞
		if(result != KErrAlreadyExists)
			{
			//偦偺埲奜偺僄儔乕偺応崌丄夋憸僼傽僀儖傪嶍彍偡傞
			DeleteFile();
			}

		//惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮傪姰椆偡傞
 		DeleteObjectsAndComplete(result);

		return;
		}

	//弌椡夋憸僒僀僘傪愝掕
//  MODIFY-S PTX824 k3-sugimoto
	RArray<TSmbMusicAPLibImageSizeInfo> sizeArray(1);
//  MODIFY-E PTX824 k3-sugimoto
	sizeArray.Append(iDestSize);

	TInt ret = iImageFunc->ConvertImage(*iFileName, sizeArray, iDstBitmapArray, iStatus);
	if(KErrNone != ret)
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber43;
		_LIT(KMusicAPLibMWFunc43, "CSmbMusicAPLibMWFunc::CompleteCreateFileNextConvertResize() [ErrCall]:ImageFunc->ConvertImage() = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc43, ret);

		//夋憸僼傽僀儖傪嶍彍偡傞
		DeleteFile();

		//惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮傪姰椆偡傞
 		DeleteObjectsAndComplete(ret);

		//巊梡偟偨Array傪僋儘乕僘偡傞
		sizeArray.Close();

		return;
		}

	//旕摨婜梫媮傪僗僞乕僩偡傞乮SetActive偡傞乯
	Start();

	//ESmbMusicAPLibWaitConvertResizeRes忬懺偵愝掕偡傞
	SetState(ESmbMusicAPLibWaitConvertResizeRes);

	//巊梡偟偨Array傪僋儘乕僘偡傞
	sizeArray.Close();
	}

/**
 *  夋憸曄姺姰椆捠抦傪梫媮懁偵搳偘傞
 **/
void CSmbMusicAPLibMWFunc::CompleteConvertResize()
	{
	//旕摨婜墳摎偺姰椆僐乕僪偑僄儔乕偺応崌丄張棟拞巭捠抦傪僋儔僀傾儞僩偵搳偘傞
	if(KErrNone != iStatus.Int())
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber44;
		_LIT(KMusicAPLibMWFunc44, "CSmbMusicAPLibMWFunc::CompleteConvertResize() [ErrStatus]:iStatus = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc44, iStatus.Int());

		//夋憸僼傽僀儖傪嶍彍偡傞
		DeleteFile();

		//惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮傪姰椆偡傞丟僄儔乕僐乕僪傕偦偺傑傑僋儔僀傾儞僩偵搉偡
 		DeleteObjectsAndComplete(iStatus.Int());

		return;
		}

	//庢摼偟偨Bitmap傪墳摎梡堷悢偵僙僢僩偡傞
	iDstBitmap->iMainBitmap = iDstBitmapArray[0]->iMainBitmap;
	iDstBitmapArray[0]->iMainBitmap = NULL;
	iDstBitmap->iMaskedBitmap = iDstBitmapArray[0]->iMaskedBitmap;
	iDstBitmapArray[0]->iMaskedBitmap = NULL;

	//Array偱帩偭偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
	iDstBitmapArray.ResetAndDestroy();

	//惗惉偟偨夋憸僼傽僀儖傪僨儕乕僩偡傞
	DeleteFile();

	//惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮傪姰椆偡傞
 	DeleteObjectsAndComplete(KErrNone);
	}

/**
 *  夋憸忣曬庢摼姰椆捠抦傪梫媮懁偵搳偘傞
 **/
void CSmbMusicAPLibMWFunc::CompleteGetImageInfo()
	{
	//惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮傪姰椆偡傞丟僄儔乕僐乕僪偼偦偺傑傑僋儔僀傾儞僩偵搉偡
 	DeleteObjectsAndComplete(iStatus.Int());
	}

/**
 *  旕摨婜梫媮傪奐巒偡傞(AO傪Active偵僙僢僩偡傞)
 **/
void CSmbMusicAPLibMWFunc::Start()
	{
	//傕偟枹夝寛偺梫媮偑懚嵼偡傞帪丄偦偺梫媮傪Cancel偡傞
	Cancel();

	//Active偵愝掕
	SetActive();
	}

/**
 *  惗惉偟偨僥儞億儔儕乕夋憸僼傽僀儖傪嶍彍偡傞
 **/
void CSmbMusicAPLibMWFunc::DeleteFile()
	{
	RFs fs;

	//僼傽僀儖僒乕僶偵愙懕偡傞
	TInt ret = fs.Connect();
	if(KErrNone != ret)
		{
		//儘僌傪弌椡
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber45;
		_LIT(KMusicAPLibMWFunc45, "CSmbMusicAPLibMWFunc::DeleteFile() [ErrFile]: fs.Connect() = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc45, ret);

		return;
		}

	//巜掕偝傟偨僼傽僀儖僷僗偵惗惉偟偨夋憸僼傽僀儖傪僨儕乕僩偡傞
	ret = fs.Delete(*iFileName);
	if((KErrNone != ret) && (KErrNotFound != ret))
		{
		//僼傽僀儖嶍彍幐攕偺儘僌傪弌椡
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber46;
		_LIT(KMusicAPLibMWFunc46, "CSmbMusicAPLibMWFunc::DeleteFile() [ErrFile]: fs.Delete() = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc46, ret);
		}

	//僼傽僀儖僙僢僔儑儞傪僋儘乕僘偡傞
	fs.Close();
	}

/**
 *  僋儔僗忬懺傪愝掕偡傞
 *  @param[in]	aState	愝掕偡傞忬懺抣
 **/
void CSmbMusicAPLibMWFunc::SetState(TSmbMusicAPLibMWFuncState aState)
	{
	iState = aState;
	}

/**
 *  僋儔僗忬懺傪庢摼偡傞
 *  @return	尰嵼偺僋儔僗忬懺
 **/
CSmbMusicAPLibMWFunc::TSmbMusicAPLibMWFuncState CSmbMusicAPLibMWFunc::State()
	{
	return iState;
	}

/**
 *  惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮傪姰椆偡傞
 *  @param[in]	aCode	姰椆僐乕僪
 **/
void CSmbMusicAPLibMWFunc::DeleteObjectsAndComplete(TInt aCode)
	{
	//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
	delete iFileName;
	iFileName = NULL;

	//僋儔僀傾儞僩偺Bitmap椞堟傪巜偡億僀儞僞傪NULL偵僙僢僩偡傞
	iDstBitmap = NULL;

	if(NULL != iClientStatus)
		{
		//僋儔僀傾儞僩偺AO偵姰椆傪捠抦偡傞
		User::RequestComplete(iClientStatus, aCode);
		//僋儔僀傾儞僩偺Status傪NULL偵僙僢僩偡傞
		iClientStatus = NULL;
		}

	//傾僀僪儖忬懺偵愝掕偡傞
	SetState(ESmbMusicAPLibIdle);
	}

/**
 *  攝楍偺拞偺Bitmap忣曬傪嶍彍偡傞
 **/
void CSmbMusicAPLibMWFunc::DeleteBitmapArray()
	{
	//Bitmap忣曬傪嶍彍偡傞
	TSmbMusicAPLibImageBitmap* tmp = NULL;
	TInt count = iDstBitmapArray.Count();
	for(TInt i = 0; i < count; i++)
		{
		tmp = iDstBitmapArray[i];
		delete tmp->iMainBitmap;
		delete tmp->iMaskedBitmap;
		}
	iDstBitmapArray.ResetAndDestroy();
	}


//  ADD-S AAA懳墳
/**
 *  庢摼偡傞夋憸庬暿傪敾掕偡傞
 *  @param[in]	aType	庢摼偟偨偄夋憸庬暿
 *  @param[in]	aIndex	庢摼偟偨偄夋憸偺僀儞僨僢僋僗
 *  @param[in]	aType	奼挘庬暿
 *  @return	張棟寢壥
 **/
TInt CSmbMusicAPLibMWFunc::DecideImageType(TSmbMusicAPLibImageType aType, TInt& aIndex, TInt aExType)
	{
	if (aType == ESmbMusicAPLibImageTypeLyric)
		{	//  庢摼懳徾偑壧帉夋憸偺応崌
		iImageType = ESmbMusicMWLibImageTypeLylic;
		return KErrNone;
		}
	else if (aType != ESmbMusicAPLibImageTypeJacket)
		{	//  庢摼懳徾偑僕儍働僢僩夋憸埲奜偺応崌
		return KErrArgument;
		}
		

	if (aExType == ESmbMusicAPLibExTypeEnableAAA)
		{	//  AAA夋憸庢摼
		//  嬋傾僀僥儉偐傜僐儞僥儞僣偺僼傽僀儖僼僅乕儅僢僩傪庢摼
		TSmbMusicMWLibFileFormat mwFormat(ESmbMusicMWLibFileFormatOther);
		TInt result = iSongItem -> Format(mwFormat);
		if (result != KErrNone)
			{	//  僼傽僀儖僼僅乕儅僢僩偺庢摼偵幐攕
			//  儘僌
			//  AAA夋憸偑偁傞壜擻惈傕偁傞偺偱1枃栚巜掕側傜
			//  AAA夋憸庢摼偵挧愴偟偰傒傞丅
			if (aIndex == 1)
				{	//  庢摼僀儞僨僢僋僗偑1枃栚
				iImageType = ESmbMusicMWLibImageTypeAAA;
				return KErrNone;
				}
			}

		if ((mwFormat == ESmbMusicMWLibFileFormatMtpModeWMA) ||		//  WMA僼傽僀儖(MTP儌乕僪揮憲)
			(mwFormat == ESmbMusicMWLibFileFormatMemoryModeWMA))	//  WMA僼傽僀儖(儊儌儕儌乕僪揮憲)
			{	//  僐儞僥儞僣偺僼傽僀儖僼僅乕儅僢僩偑WMA偺応崌
			if (aIndex == 1)
				{	//  庢摼僀儞僨僢僋僗偑1枃栚
				//  AAA夋憸庢摼傪幚峴
				iImageType = ESmbMusicMWLibImageTypeAAA;
				return KErrNone;
				}
			else
				{	//  僀儞僨僢僋僗偑1埲奜偺応崌
				//  AAA1枃丄僕儍働僢僩1枃偑MAX偺憐掕側偺偱僕儍働僢僩夋憸庢摼幚峴
				iImageType = ESmbMusicMWLibImageTypeJacket;
				aIndex = 1;
				return KErrNone;
				}
			}
		}

	if (aIndex == 1)
		{
		//  1枃栚偼僕儍働僢僩夋憸
		iImageType = ESmbMusicMWLibImageTypeJacket;
		}
	else
		{
		//  2枃栚埲崀偼懸庴夋憸
		iImageType = ESmbMusicMWLibImageTypeStill;
		//  1枃栚偼僕儍働僢僩夋憸側偺偱Index傪僨僋儕儊儞僩偡傞
		aIndex--;
		}

	return KErrNone;
	}
//  ADD-E AAA懳墳
// end of SmbMusicAPLibMWFunc.cpp
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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