smbmusicaplibmwfunc.cpp

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

CPP
1,300 行
字号
	//僼傽僀儖柤偺挿偝傪庢摼偡傞
	TInt len = aFileName.Length();
	//僼傽僀儖柤偑巜掕偝傟偰偄側偄応崌丄僄儔乕傪曉偡
	if(len <= 0)
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber13;
		_LIT(KMusicAPLibMWFunc13, "CSmbMusicAPLibMWFunc::GetImage() [ErrArg]:illegal File Name. Length = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc13, len);

		return KErrArgument;
		}

	//搉偝傟偨aFileName丄aStatus傪儊儞僶乕曄悢偵愝掕偡傞
	TRAPD(error, iFileName = HBufC::NewL(len));
	if(KErrNone != error)
		{
		//儘僌傪弌椡
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber14;
		_LIT(KMusicAPLibMWFunc14, "CSmbMusicAPLibMWFunc::GetImage() [ErrAlloc]:NewL() Failed. error = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc14, error);

		return error;
		}

	//僼傽僀儖柤傪僐僺乕偡傞
	*iFileName = aFileName;

	//夋憸斣崋傪曐帩偡傞
	iImageIndex = aIndex;

//  ADD-S PTX824 k3-sugimoto
	//  夋憸僼傽僀儖庢摼(僠僃僢僋娷傓)
	TInt ret = GetImageAfterCheck();
	if (ret != KErrNone)
		{
		delete iFileName;
		iFileName = NULL;

		return ret;
		}
//  ADD-E PTX824 k3-sugimoto

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

	//夋憸僼傽僀儖惗惉懸偪忬懺偵擖傞
//  MDOFIY-S PTX824 k3-sugimoto
	SetState(ESmbMusicAPLibWaitCreateFile);
//  MDOFIY-E PTX824 k3-sugimoto

	//僋儔僀傾儞僩Status傪曐帩偟丄梫媮傪Pending偡傞
	aStatus = KRequestPending;
	iClientStatus = &aStatus;

	return KErrNone;
	}


//@@TRK10436懳墳	Start
/**
 *  妝嬋僼傽僀儖偵娷傑傟傞夋憸僼傽僀儖傪巜掕偝傟偨僼傽僀儖柤偱惗惉偡傞
 *  @return	張棟寢壥
 **/
TInt CSmbMusicAPLibMWFunc::GetImageAfterCheck()
	{
	//嬋傾僀僥儉偺夋憸庢摼梫媮傪屇傃弌偡丟AO帺懱偺iStatus傪搉偡
// MODIFY-S PTX824 k3-sugimoto
#ifdef __SMBMUSICAPLIB_ENABLE_PTX810__
	TInt ret = iSongItem->Image(iImageType, iImageIndex, *iFileName, iStatus);
#else
	TInt ret = iSongItem->Image(iImageType, iImageIndex, *iFileName, iStatus, KSmbMusicAPLibImageFileMaxSize);
#endif
// MODIFY-E PTX824 k3-sugimoto
	if(KErrNone != ret)
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber15;
		_LIT(KMusicAPLibMWFunc15, "CSmbMusicAPLibMWFunc::GetImageAfterCheck() [ErrCall]:SongItem->Image() = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc15, ret);

		//惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄僄儔乕墳摎傪敪峴偡傞
		DeleteObjectsAndComplete(ret);
		return ret;
		}

	return KErrNone;
	}
//@@TRK10436懳墳	End

/**
 *  妝嬋僼傽僀儖偵娷傑傟傞夋憸僼傽僀儖傪CFbsBitmap宍幃偵曄姺屻丄巜掕偝傟偨僒僀僘偵儕僒僀僘偡傞
 *
 *  @param[in]		aItem				夋憸僼傽僀儖傪強桳偟偰偄傞妝嬋傾僀僥儉偺僆僽僕僃僋僩
 *  @param[in]		aType				夋憸庬暿(僕儍働僢僩夋憸(懸庴夋憸傪娷傓)丄壧帉夋憸)
 *  @param[in]		aDestinationSize	弌椡夋憸僒僀僘
 *  @param[in]		aIndex				夋憸斣崋巜掕
 *  @param[in,out]	aDstBitmap			惗惉偝傟偨Bitmap(僆儕僕僫儖僼傽僀儖偵儅僗僋偑娷傑傟偰偄側偄帪偼NULL傪曉偡)
 *  @param[in]		aStatus				旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
 *  @param[in]		aBeSpread			奼戝儕僒僀僘僼儔僌(僨僼僅儖僩:EFalse=奼戝偟側偄)
 *  @param[in]		aExType				奼挘僼儔僌(僨僼僅儖僩:AAA夋憸庢摼)
 *
 *  @return	張棟寢壥
 **/
//  MODIFY-S PTX824 k3-sugimoto
EXPORT_C TInt CSmbMusicAPLibMWFunc::GetImage(
		CSmbMusicMWLibSongItem& aItem,
		TSmbMusicAPLibImageType aType,
		TSize aDestinationSize,
		TInt aIndex,
		TSmbMusicAPLibImageBitmap& aDstBitmap,
		TRequestStatus& aStatus,
		TBool aBeSpread/*=EFalse*/,
		TInt aExType/*=ESmbMusicAPLibExTypeEnableAAA*/
		)
//  MODIFY-E PTX824 k3-sugimoto
	{
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
	TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber16;
	_LIT(KMusicAPLibMWFunc16, "CSmbMusicAPLibMWFunc::GetImage(aType:%d, aIndex:%d, Size.iWidth:%d, Size.iHeight:%d)");
	SmbMusicAPLibLog(logCode, ELogLevelLowest, KMusicAPLibMWFunc16, aType, aIndex, aDestinationSize.iWidth, aDestinationSize.iHeight);
#endif
	//aDstBitmap堷悢偵娷傑傟傞CFbsBitmap億僀儞僞偵Bitmap僆僽僕僃僋僩偑愝掕偝傟偰偄傞応崌丄僄儔乕傪曉偡
	if(NULL != aDstBitmap.iMainBitmap || NULL != aDstBitmap.iMaskedBitmap)
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber17;
		_LIT(KMusicAPLibMWFunc17, "CSmbMusicAPLibMWFunc::GetImage() [ErrArg]:DetBitmap Not Empty. ret = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc17, KErrArgument);

		return KErrArgument;
		}

	//巜掕偟偨弌椡夋憸僒僀僘偺崅偝偲暆傪庢摼偡傞
	TInt height	= aDestinationSize.iHeight;
	TInt width	= aDestinationSize.iWidth;

//  ADD-S PTX824 k3-sugimoto
	//  巜掕偟偨弌椡夋憸僒僀僘偑640*640偺斖埻傪挻偊傞応崌偼僄儔乕傪曉偡
	if((height > KSmbMusicAPLibVGALongLength) || (width > KSmbMusicAPLibVGALongLength) ||
	  ((height > KSmbMusicAPLibVGAShortLength) && (width > KSmbMusicAPLibVGAShortLength)))
//  ADD-E PTX824 k3-sugimoto
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber18;
		_LIT(KMusicAPLibMWFunc18, "CSmbMusicAPLibMWFunc::GetImage() [ErrArg]:Image Size Bigger than VGA. width = %d, height = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc18, width, height);

		return KErrNotSupported;
		}

	//尰嵼偺帪崗傪庢摼偡傞
    TTime time;
    time.HomeTime();
    TDateTime dateTime = time.DateTime();

	//尰嵼帪崗傪惗惉偡傞僼傽僀儖柤偵偮偗傞
	TFileName name;
	name.Format(KAPLibFileNameFormat, &KAPLibImageFileName,
				dateTime.Hour(), dateTime.Minute(), dateTime.Second(), dateTime.MicroSecond());

	//儐僯乕僋側夋憸僼傽僀儖柤傪巜掕偟偰夋憸僼傽僀儖傪惗惉偡傞
	TInt ret = GetImage(aItem, aType, aIndex, name, aStatus, aExType);
	if(KErrNone != ret)
		{
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber19;
		_LIT(KMusicAPLibMWFunc19, "CSmbMusicAPLibMWFunc::GetImage() [ErrCall]:GetImage(ImageFile) = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc19, ret);

		return ret;
		}

	//弌椡Bitmap偲弌椡僒僀僘丄奼戝儕僒僀僘僼儔僌傪儊儞僶乕曄悢偵曐懚偡傞
	iDstBitmap	= &aDstBitmap;
//  MODIFY-S PTX824 k3-sugimoto
	iDestSize.iSize		= aDestinationSize;
	iDestSize.iSpread	= aBeSpread;
//  MODIFY-E PTX824 k3-sugimoto

	//忬懺傪ESmbMusicAPLibWaitCreateFileNextConvertResize偵僙僢僩偡傞
//  MODIFY-S PTX824 k3-sugimoto
	SetState(ESmbMusicAPLibWaitCreateFileNextConvertResize);
//  MODIFY-S PTX824 k3-sugimoto

	return KErrNone;
	}

/**
 *  夋憸僼傽僀儖偺庢摼傪僉儍儞僙儖偡傞
 *  @return	張棟寢壥
 **/
EXPORT_C TInt CSmbMusicAPLibMWFunc::CancelGetImage()
	{
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
	TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber20;
	_LIT(KMusicAPLibMWFunc20, "CSmbMusicAPLibMWFunc::CancelGetImage() State = %d");
	SmbMusicAPLibLog(logCode, ELogLevelLowest, KMusicAPLibMWFunc20, State());
#endif

	TSmbMusicAPLibMWFuncState curState = State();

	//尰嵼偺忬懺偵傛偭偰丄張棟偑堎側傞
	switch(curState)
		{
		//忬懺偑ESmbMusicAPLibIdle偺応崌丄旕摨婜張棟偑婛偵姰椆偟偨働乕僗偑偁傞
		case ESmbMusicAPLibIdle:
			{
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber21;
			_LIT(KMusicAPLibMWFunc21, "CSmbMusicAPLibMWFunc::CancelGetImage() [In Idle State]: ret = %d");
			SmbMusicAPLibLog(logCode, ELogLevelLowest, KMusicAPLibMWFunc21, KErrCompletion);
#endif

			return KErrCompletion;
			}
		//ESmbMusicAPLibWaitImageInfoRes偺応崌
		case ESmbMusicAPLibWaitImageInfoRes:
			{
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber22;
			_LIT(KMusicAPLibMWFunc22, "CSmbMusicAPLibMWFunc::CancelGetImage() [ErrState]:State Not Supported. State = %d");
			SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc22, curState);

			//懳墳忬懺偱側偄応崌偼丄僄儔乕傪曉偡
			return KErrNotSupported;
			}
		//忬懺偑ESmbMusicAPLibWaitCreateFileNextConvertResize庒偟偔偼ESmbMusicAPLibWaitCreateFile偺応崌
		case ESmbMusicAPLibWaitCreateFileNextConvertResize:
		case ESmbMusicAPLibWaitCreateFile:
			{
			//嬋傾僀僥儉偺CancelImage傪屇傃弌偡
			TInt ret = iSongItem->CancelImage();
			if(KErrNone != ret)
				{
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
				TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber23;
				_LIT(KMusicAPLibMWFunc23, "CSmbMusicAPLibMWFunc::CancelGetImage() [ErrCall]:SongItem->CancelImage() = %d");
				SmbMusicAPLibLog(logCode, ELogLevelLowest, KMusicAPLibMWFunc23, ret);
#endif

				//夋憸僼傽僀儖傪嶍彍偡傞
				DeleteFile();
				}
			}
			break;
		//忬懺偑ESmbMusicAPLibWaitConvertResizeRes偺夋憸曄姺偺応崌
		case ESmbMusicAPLibWaitConvertResizeRes:
			{
			//夋憸曄姺偺僉儍儞僙儖梫媮傪屇傃弌偡
			iImageFunc->CancelConvertImage();

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

			//攝楍偺拞偺Bitmap忣曬傪嶍彍偡傞
 			DeleteBitmapArray();
 			}
			break;

		default:
			//儘僌傪弌椡
			TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber24;
			_LIT(KMusicAPLibMWFunc24, "CSmbMusicAPLibMWFunc::CancelGetImage() [ErrState]:Invalid State = %d");
			SmbMusicAPLibLog(logCode, ELogLevelHighest, KMusicAPLibMWFunc24, curState);

			return KErrGeneral;
		}

	//AO傪僉儍儞僙儖偡傞
	Cancel();

	//惗惉偟偨僆僽僕僃僋僩傪嶍彍偟丄旕摨婜梫媮偺僉儍儞僙儖傪姰椆偡傞
 	DeleteObjectsAndComplete(KErrCancel);

	return KErrNone;
	}


//  ADD-S PTX824 k3-sugimoto
	/**
	 *  巜掕偟偨庬暿偺夋憸忣曬傪庢摼偡傞
	 *  @param[in]		aItem		忣曬庢摼懳徾偺嬋傾僀僥儉
	 *	@param[in]		aTargetType	庢摼偟偨偄夋憸忣曬偺庬暿(僕儍働僢僩/壧帉)
	 *  @param[out]		aTypeInfo	庢摼偝傟偨屄暿夋憸忣曬偺曐帩椞堟
	 *	@param[in,out]	aStatus		旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
 	 *  @param[in]		aExType		奼挘僼儔僌(僨僼僅儖僩:AAA夋憸庢摼)
	 *  @return	張棟寢壥
	 **/
EXPORT_C TInt CSmbMusicAPLibMWFunc::GetImageTypeInfo(
		CSmbMusicMWLibSongItem& aItem,
		TSmbMusicAPLibImageType& aTargetType,
		TSmbMusicAPLibImageTypeInfo& aTypeInfo,
		TRequestStatus& aStatus,
		TInt aExType/*=ESmbMusicAPLibExTypeEnableAAA*/
		)
	{
#ifdef __SMBMUSICAPLIB_ENABLEALLLOG__
	TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber25;
	_LIT(KMusicAPLibMWFunc25, "CSmbMusicAPLibMWFunc::GetImageTypeInfo(ImageType:%d)");
	SmbMusicAPLibLog(logCode, ELogLevelLowest, KMusicAPLibMWFunc25, aTargetType);
#endif
	if (State() != ESmbMusicAPLibIdle)
		{	//  壗偐張棟拞偩偭偨応崌
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber26;
		_LIT(KMusicAPLibMWFunc26, "CSmbMusicAPLibMWFunc::GetImageTypeInfo() [ErrState]:Not Idle State. State = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc26, State());

		return KErrInUse;
		}

	if (aTypeInfo.iImageInfo.Count() > 0)
		{	//  僨乕僞奿擺攝楍偑嬻偠傖側偐偭偨応崌
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber27;
		_LIT(KMusicAPLibMWFunc27, "CSmbMusicAPLibMWFunc::GetImageTypeInfo() [ErrArg]:Image Array Count Not Zero = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc27, aTypeInfo.iImageInfo.Count());

		return KErrArgument;
		}

	if ((aTargetType != ESmbMusicAPLibImageTypeJacket) &&
		(aTargetType != ESmbMusicAPLibImageTypeLyric))
		{	//  夋憸庬暿偑僕儍働僢僩丒壧帉偺偳偪傜偱傕側偐偭偨
		TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWFunc | EMusicAPLibLocationNumber28;
		_LIT(KMusicAPLibMWFunc28, "CSmbMusicAPLibMWFunc::GetImageTypeInfo() [ErrArg]:Illegal ImageType = %d");
		SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWFunc28, aTargetType);

		return KErrArgument;
		}

	TInt result = iAnalyzeItem -> GetImageTypeInfo(aItem, aTargetType, aExType, aTypeInfo, iStatus);

⌨️ 快捷键说明

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