⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbmusicapsyncservercontentsimagedatamanager.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPSyncServerContentsImageDataController.cpp
//
// Description:
//  傾僀僥儉嶍彍梫媮僒乕價僗
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅          |曄峏幰     	|撪梕
//--------------+---------------+----------------------------------------------
//2006/06/11	|娵壀			| 怴婯嶌惉
//2006/08/16	|K3悪杮			| [iKeeper(TRK):5472] 乽夋憸昞帵乿丄乽壧帉昞帵乿偺婸搙昞帵偑抶傟傞栤戣偺懳墳
//----PTX824----+---------------+----------------------------------------------
//2007/03/28	|K3悪杮			| [824iKeeper(TRK):811] 嵞惗嬋偲昞帵忣曬偑堦抳偟側偄栤戣偺懳墳
//2007/03/28	|K3悪杮			| PTX824懳墳
//2007/06/23	|K3悪杮			| AAA夋憸懳墳


#ifndef __SMBMUSICAPSYNCSERVERCONTENTSIMAGEDATAMANAGER_H__
#include "SmbMusicAPSyncServerContentsImageDataManager.h"
#endif	//  __SMBMUSICAPSYNCSERVERCONTENTSIMAGEDATAMANAGER_H__


#ifndef __E32ERR_H__
#include <e32err.h>	//  僄儔乕僐乕僪
#endif	//  __E32ERR_H__

#ifndef __F32FILE_H__
#include <f32file.h>
#endif	//  __F32FILE_H__


#ifndef __SMBMUSICMWLIBCLIENT_H__
#include <SmbMusicMWLibClient.h>	//  CSmbMusicMWLibPLItem
#endif	//  __SMBMUSICMWLIBCLIENT_H__


#ifndef	__SMBMUSICAPSYNCSERVERUTIL_H__
#include "SmbMusicAPSyncServerUtil.h"
#endif	//  __SMBMUSICAPSYNCSERVERUTIL_H__


USING_NAMESPACE_SEMCJ

/**
 * 僐儞僗僩儔僋僞
 * @param	側偟
 * @return	側偟
 */
CSmbMusicAPSyncServerContentsImageDataManager::CSmbMusicAPSyncServerContentsImageDataManager(DCM_NAMESPACE::RLog& aLog)
	: iLog(aLog)
	{
	}

/**
 * 僨僗僩儔僋僞
 * @param	側偟
 * @return	側偟
 */
CSmbMusicAPSyncServerContentsImageDataManager::~CSmbMusicAPSyncServerContentsImageDataManager()
	{
	//  曐帩偟偰偄傞僉儍僢僔儏偺慡嶍彍
	AllClear();
	iImageInfo.Close();

/**
//  仸仸夋憸僼傽僀儖偼摨婜僒乕僶偱偼娗棟偟傑偣傫仸仸
	//夋憸僼傽僀儖傪嶍彍偟傑偡
	TImageControllerImageStr* imagestr;
	cnt = iImage.Count();
	for(TInt i = 0; i < cnt; i++)
		{
		imagestr = iImage[0];
		//僼傽僀儖傪惗惉偟偰偄傟偽嶍彍偡傞
		if(NULL != imagestr->iFile)
			{
			//僼傽僀儖僒乕僶偲僙僢僔儑儞傪奐偔
			RFs fs;
			fs.Connect();
			//夋憸僼傽僀儖傪嶍彍偡傞
			fs.Delete(*imagestr->iFile);
			//僼傽僀儖僒乕僶偲偺僙僢僔儑儞傪暵偠傞
			fs.Close();
			delete imagestr->iFile;
			}

		delete imagestr;
		iImage.Remove(0);
		}

	iImage.ResetAndDestroy();
	iImage.Close();
//  仸仸夋憸僼傽僀儖偼摨婜僒乕僶偱偼娗棟偟傑偣傫仸仸
**/
	}

/**
 * [旕懳墳]妝嬋僼傽僀儖偵娷傑傟傞夋憸傪搊榐偡傞[旕懳墳]
 * @param [in]		aGetImageInfo	庢摼偟偨夋憸忣曬(嬋傾僀僥儉丄夋憸僞僀僾丄夋憸斣崋)
 * @param [in]		aFileName		夋憸僼傽僀儖偺惗惉僷僗(僼儖僷僗偱僼傽僀儖柤傪巜掕)
 * @return	側偟
 */
void CSmbMusicAPSyncServerContentsImageDataManager::SetImageL(
		TSmbMusicAPSyncEngineGetImageInfo& /*aImageInfo*/,
		const TDesC& /*aFile*/
		)
	{
/**
//  仸仸夋憸僼傽僀儖偼摨婜僒乕僶偱偼娗棟偟傑偣傫仸仸
	//夋憸娗棟梡峔憿懱傪惗惉偡傞
	TImageControllerImageStr* imagestr = new(ELeave)TImageControllerImageStr();
	CleanupStack::PushL(imagestr);
	//夋憸偺婎慴忣曬傪僐僺乕偡傞
	imagestr->iSongItem = aImageInfo;
	//僼傽僀儖柤奿擺椞堟傪惗惉偡傞
	HBufC* file = HBufC::NewL(aFile.Length());
	*file = aFile;
	imagestr->iFile = file;

	TInt cnt = iImage.Count();
	//曐帩偟偰偄傞夋憸忣曬偺僨乕僞偑梫椞傪挻偊偨傜屆偄傕偺偐傜嶍彍偡傞
	if(KMaxImageDataNumber < cnt)
		{
		TImageControllerImageStr* deleteItem;
		deleteItem = iImage[KMaxImageDataNumber];
		//僼傽僀儖僒乕僶偲僙僢僔儑儞傪奐偔
		RFs fs;
		fs.Connect();
		//夋憸僼傽僀儖傪嶍彍偡傞
		fs.Delete(*deleteItem->iFile);
		//僼傽僀儖僒乕僶偲偺僙僢僔儑儞傪暵偠傞
		fs.Close();
		delete deleteItem->iFile;
		delete deleteItem;
		iImage.Remove(KMaxImageDataNumber);

		//惓忢宯偩偗偳儘僌偼弌偟偲偒傑偟傚偆
		TInt log = EMusicAPSyncServerClassNumber_ContentsImageDataManager | EMusicAPSyncServerLocationNumber00;
		_LIT(KContentsImageDataManager00, "SyncServerContentsServiceGetImageInfo::SetImageL");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelLowest, KContentsImageDataManager00);

		}
	//攝楍偺愭摢偵搊榐偡傞
	iImage.Insert(imagestr, 0);

	CleanupStack::Pop(imagestr);
//  仸仸夋憸僼傽僀儖偼摨婜僒乕僶偱偼娗棟偟傑偣傫仸仸
**/
	}

/**
 * [旕懳墳]巜掕偝傟偨夋憸偑懚嵼偡傟偽庢摼偡傞[旕懳墳]
 * @param [in]		aGetImageInfo	庢摼偡傞夋憸忣曬(嬋傾僀僥儉丄夋憸僞僀僾丄夋憸斣崋)
 * @param [in]		aFileName		夋憸僼傽僀儖偺惗惉僷僗(僼儖僷僗偱僼傽僀儖柤傪巜掕)
 * @return			張棟寢壥		ETrue丗庢摼惉岟/EFalse丗庢摼幐攕
 */
TBool CSmbMusicAPSyncServerContentsImageDataManager::GetImage(
		TSmbMusicAPSyncEngineGetImageInfo& /*aImageInfo*/,
		const TDesC& /*aFile*/
		)
	{
/**
//  仸仸夋憸僼傽僀儖偼摨婜僒乕僶偱偼娗棟偟傑偣傫仸仸
	//曐帩偟偰偄傞夋憸悢傪挷傋傞
	TInt cnt = iImage.Count();
	TBool res = EFalse;
	for(TInt i = 0; i < cnt; i++)
		{
		//梫媮偝傟偨傾僀僥儉偺夋憸傪曐帩偟偰偄傞偐僠僃僢僋偡傞
		res = CheckImageItem(iImage[i]->iSongItem, aImageInfo);
		if(EFalse != res)
			{
			if(aFile == (*iImage[i]->iFile))
				{
				//巜掕偝傟偨僼傽僀儖柤傕摨偠側偺偱Ok偱曉偟傑偡
				return ETrue;
				}
			//巆擮側偑傜巜掕偝傟偨僼傽僀儖柤偑堘偆偺偱NG偱曉偟傑偡
			return EFalse;
			}
		}
//  仸仸夋憸僼傽僀儖偼摨婜僒乕僶偱偼娗棟偟傑偣傫仸仸
**/
	//巜掕偝傟偨傾僀僥儉偺夋憸偼帩偭偰偄傑偣傫
	return EFalse;
	}

/**
 *  嬋僼傽僀儖偵娷傑傟傞夋憸偺忣曬傪搊榐偡傞
 *  @param[in]	aSongItem	嬋傾僀僥儉(儕僗僩僴儞僪儖偲Index斣崋)
 *  @param[in]	aExType		奼挘僼儔僌
 *  @param[in]	aImageInfo	夋憸忣曬(僕儍働僢僩夋憸(懸庴夋憸傪娷傓)枃悢丄僕儍働僢僩夋憸忣曬偺攝楍(嵟戝3枃)丄
 *								壧帉夋憸枃悢丄壧帉夋憸忣曬偺攝楍(嵟戝7枃))
 *  @return	側偟
 **/
void CSmbMusicAPSyncServerContentsImageDataManager::SetImageInfoL(
		TSmbMusicAPSyncEngineItemIndex& aSongItem,
		TInt aExType,
		TSmbMusicAPSyncEngineImageInfoInSongItem& aImageInfo
		)
	{
	//傾僀僥儉偺Index忣曬傪僐僺乕偡傞
	TImageControllerImageInfoStr* itemindex = new(ELeave)TImageControllerImageInfoStr;
	CleanupStack::PushL(itemindex);
	itemindex->iSongItem = aSongItem;
	//夋憸忣曬傪僐僺乕偡傞
	itemindex->iInfo = new(ELeave)TSmbMusicAPSyncEngineImageInfoInSongItem;
	*itemindex->iInfo = aImageInfo;

	//  椉曽偺忣曬僙僢僩偝傟傞偺偱椉曽強帩僼儔僌ON
	itemindex -> iIsJacket	= ETrue;
	itemindex -> iIsLyric	= ETrue;

	itemindex -> iExType	= aExType;

	TInt cnt = iImageInfo.Count();
	//曐帩偟偰偄傞夋憸忣曬偺僨乕僞偑梫椞傪挻偊偨傜屆偄傕偺偐傜嶍彍偡傞
	if(KMaxImageDataNumber < cnt)
		{
		DeleteImageInfo(KMaxImageDataNumber);

		//惓忢宯偩偗偳儘僌偼弌偟偲偒傑偟傚偆
		TInt log = EMusicAPSyncServerClassNumber_ContentsImageDataManager | EMusicAPSyncServerLocationNumber01;
		_LIT(KContentsImageDataManager01, "SyncServerContentsServiceGetImageInfo::SetImageInfoL Delete Cache:%d");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelLowest, KContentsImageDataManager01, KMaxImageDataNumber);
		}
	//攝楍偺愭摢偵搊榐偡傞
	iImageInfo.InsertL(itemindex, 0);

	CleanupStack::Pop(itemindex);
	}

/**
 *  嬋僼傽僀儖偵娷傑傟傞夋憸偺忣曬傪庢摼偡傞
 *  @param[in]		aSongItem	嬋傾僀僥儉(儕僗僩僴儞僪儖偲Index斣崋)
 *  @param[in]
 *  @param[in,out]	aImageInfo	夋憸忣曬(僕儍働僢僩夋憸(懸庴夋憸傪娷傓)枃悢丄僕儍働僢僩夋憸忣曬偺攝楍(嵟戝3枃)丄
 *								壧帉夋憸枃悢丄壧帉夋憸忣曬偺攝楍(嵟戝7枃))
 *  @return	敾掕寢壥(ETrue:僉儍僢僔儏偑偁偭偨丄EFalse:僉儍僢僔儏偼側偐偭偨)
 **/
TBool CSmbMusicAPSyncServerContentsImageDataManager::GetImageInfo(
		TSmbMusicAPSyncEngineItemIndex& aSongItem,
		TInt aExType,
		TSmbMusicAPSyncEngineImageInfoInSongItem& aImageInfo
		)
	{
	TInt cnt = iImageInfo.Count();
	TImageControllerImageInfoStr*	p = NULL;
	//娗棟忣曬偺拞偐傜梫媮偝傟偨僨乕僞偑懚嵼偡傞偐傪僠僃僢僋偡傞
	for(TInt i = 0; i < cnt; i++)
		{
		p = iImageInfo[i];
		//儕僗僩僴儞僪儖偲Index偱傾僀僥儉傪扵偡
		if((p->iSongItem.iListHandle == aSongItem.iListHandle) && (p->iSongItem.iIndex == aSongItem.iIndex))
			{
			if (p -> iExType != aExType)
				{	//  奼挘僼儔僌偑堘偆応崌
				//  僉儍僢僔儏偲偺嵎堎偑敪惗偡傞偨傔僉儍僢僔儏柍偟偲敾掕偡傞
				DeleteImageInfo(i);
				return EFalse;
				}
			if ((p -> iIsJacket != EFalse) && (p -> iIsLyric != EFalse))
				{	//  僕儍働僢僩夋憸忣曬傪曐帩丄偐偮壧帉夋憸忣曬傕曐帩偺応崌
				//巜掕偝傟偨夋憸忣曬偑偁偭偨偺偱撪梕傪僐僺乕偡傞
				aImageInfo = *p->iInfo;
				//梫媮偝傟偨夋憸忣曬偑偁傝傑偟偨両両
				return ETrue;
				}
			else
				{	//  僕儍働僢僩夋憸忣曬偐丄壧帉夋憸忣曬偺偳偪傜偐偟偐側偐偭偨応崌
				//  怴偟偔庢摼傪峴偆偨傔偵僉儍僢僔儏傪僋儕傾偟忣曬柍偟傪曉偡
				DeleteImageInfo(i);
				return EFalse;
				}
			}
		}
	//巆擮側偑傜梫媮偝傟偨夋憸忣曬偼偁傝傑偣傫偱偟偨
	return EFalse;
	}

/**
 * 巜掕偝傟偨傾僀僥儉偑堦抳偟偰偄傞偐傪斾妑偡傞
 * @param[in]	aGetImageInfo	庢摼偡傞夋憸忣曬(嬋傾僀僥儉丄夋憸僞僀僾丄夋憸斣崋)
 * @param[in]	aGetImageInfo	庢摼偡傞夋憸忣曬(嬋傾僀僥儉丄夋憸僞僀僾丄夋憸斣崋)
 * @return	張棟寢壥(ETrue丗堦抳/EFalse丗晄堦抳)
 */
TBool CSmbMusicAPSyncServerContentsImageDataManager::CheckImageItem(
		TSmbMusicAPSyncEngineGetImageInfo& aImageInfoA,
		TSmbMusicAPSyncEngineGetImageInfo& aImageInfoB
		)
	{
	//梫媮偝傟偰偄傞夋憸庬暿傪妋擣偡傞
	if(aImageInfoA.iImageType != aImageInfoB.iImageType)
		{
		return EFalse;
		}
	//梫媮偝傟偰偄傞夋憸偺Index傪妋擣偡傞
	if(aImageInfoA.iIndex != aImageInfoB.iIndex)
		{
		return EFalse;
		}
	//梫媮偝傟偰偄傞傾僀僥儉偺Index傪妋擣偡傞
	if(aImageInfoA.iSongItem.iIndex != aImageInfoB.iSongItem.iIndex)
		{
		return EFalse;
		}
	//梫媮偝傟偰偄傞傾僀僥儉偑強懏偡傞儕僗僩傪妋擣偡傞
	if(aImageInfoA.iSongItem.iListHandle != aImageInfoB.iSongItem.iListHandle )
		{
		return EFalse;
		}
	return ETrue;
	}

//  ADD-S  [iKeeper(TRK):5472] 乽夋憸昞帵乿丄乽壧帉昞帵乿偺婸搙昞帵偑抶傟傞栤戣偺懳墳
/**
 *  嬋僼傽僀儖偵娷傑傟傞夋憸悢傪庢摼偡傞
 *
 *  @param[in]	aSongItem	嬋傾僀僥儉(儕僗僩僴儞僪儖偲Index斣崋)
 *  @param[in]	aExType		奼挘僼儔僌
 *  @param[out]	aImageCount	夋憸悢
 *
 *  @return	張棟寢壥(ETrue:庢摼惉岟丄EFalse:庢摼幐攕)
 */
TBool CSmbMusicAPSyncServerContentsImageDataManager::GetImageCount(
		TSmbMusicAPSyncEngineItemIndex& aSongItem,
		TInt aExType,
		TSmbMusicAPSyncEngineImageCountInSongItem& aImageCount
		)
	{
	TInt count = iImageInfo.Count();
	TImageControllerImageInfoStr* stImgInfo(NULL);

	//娗棟忣曬偺拞偐傜梫媮偝傟偨僨乕僞偑懚嵼偡傞偐傪僠僃僢僋偡傞
	for(TInt i = 0; i < count; i++)
		{
		stImgInfo = iImageInfo[i];
		TSmbMusicAPSyncEngineItemIndex item = stImgInfo -> iSongItem;
		//儕僗僩僴儞僪儖偲Index偱傾僀僥儉傪扵偡
		if ((item.iListHandle == aSongItem.iListHandle) &&
			(item.iIndex == aSongItem.iIndex))
			{
			if (stImgInfo -> iExType != aExType)
				{	//  庢摼帪偺奼挘僼儔僌偑堘偆応崌
				//  惓偟偄忣曬偑庢摼偱偒側偄偨傔庢摼幐攕偲偡傞

⌨️ 快捷键说明

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