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

📄 smbmusicapsyncservercontentsplaysonginfomanager.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		p = iPlaySong[i];
		if((p->iSongItem.iIndex == aSongItem.iIndex) && (p->iSongItem.iListHandle == aSongItem.iListHandle))
			{
//@@TRK10861	Add	Start
			if(EFalse == p->iPlayInfo)
				{
				//傑偩忣曬偑搊榐偝傟偰偄側偄
				return EFalse;
				}
//@@TRK10861	Add	End

			//婛偵強桳偟偰偄傞偺偱傾僀僥儉傪曉偡
			aTotalPlayTime 	= p->iTotalPlayTime;
			if(NULL != p->iArtistTitle)
				{
				aArtistTitle = *(p->iArtistTitle);
				}
			else
				{
				//暥帤偑側偄応崌
				aArtistTitle   	= KNullDesC;
				}

			if(NULL != p->iAlbumTitle)
				{
				aAlbumTitle = *(p->iAlbumTitle);
				}
			else
				{
				//暥帤偑側偄応崌
				aAlbumTitle	= KNullDesC;
				}

			if(NULL != p->iSongTitle)
				{
				aSongTitle   	= *(p->iSongTitle);
				}
			else
				{
				//暥帤偑側偄応崌
				aSongTitle = KNullDesC;
				}
			//梫媮偝傟偨忣曬偼婛偵搊榐偝傟偰偄傞
			return ETrue;
			}
		}

	//梫媮偝傟偨忣曬偼傑偩偵搊榐偝傟偰偄側偄
	return EFalse;
	}

/**
 * 嵞惗嬋傾僀僥儉傪搊榐偡傞
 * @param [in]		aSongItem	嬋傾僀僥儉乮儕僗僩僴儞僪儖偲Index斣崋乯
 * @param [in]		aPlayItem	嬋傾僀僥儉
 * @return	側偟
 **/
void CSmbMusicAPSyncServerContentsPlaySongInfoManager::SetPlaySongItem(TSmbMusicAPSyncEngineItemIndex& aSongItem, CSmbMusicMWLibMusicItem* aPlaySongItem)
	{
	TPlaySongInfoStr* p = NULL;
	TInt cnt = iPlaySong.Count();
	if(cnt > 0)
		{
		p = iPlaySong[0];
		//嵟怴偺搊榐忣曬偲斾妑偡傞
		if(CheckItem(p->iSongItem, aSongItem))
			{
			//婛偵搊榐偝傟偰偄傟偽丒丒丒
			//偦傕偦傕偙偙偵棃傞偙偲偼側偄
			TInt log = EMusicAPSyncServerClassNumber_ContentsPlaySongInfoManager | EMusicAPSyncServerLocationNumber02;
			_LIT(KContentsPlaySongInfoManager02, "SyncServerContentsPlaySongInfoManager::SetPlaySongItem Index = %d");
			SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KContentsPlaySongInfoManager02, aSongItem.iIndex);

			delete p->iItem;
			//捯咫傪崌傢偣傞偨傔偵屆偄傾僀僥儉傪嶍彍偟傑偟傚偆
			p->iItem = aPlaySongItem;
			return;
			}
		//屆偄忣曬偼嶍彍偡傞
		DeleteOldItem();
		}

	//傑偩傾僀僥儉偑搊榐偝傟偰偄側偄偺偱怴婯偵搊榐偡傞
	TRAPD(error, p = new(ELeave)TPlaySongInfoStr);
	if(KErrNone != error)
		{
		//傾僀僥儉偑搊榐偱偒側偄傛乣
		TInt log = EMusicAPSyncServerClassNumber_ContentsPlaySongInfoManager | EMusicAPSyncServerLocationNumber03;
		_LIT(KContentsPlaySongInfoManager03, "SyncServerContentsPlaySongInfoManager::SetPlaySongItem Leave = %d");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KContentsPlaySongInfoManager03, error);
//  MODIFY-S  [iKeeper(TRK):12221] 屆偄嵞惗嬋忣曬偑庢摼偝傟偰偄偨栤戣偺懳張
		//  偦傕偦傕僆僽僕僃僋僩惗惉偵幐攕偟偦傟埲崀偺張棟偑宲懕偱偒偦偆偵側偄偨傔PANIC偡傞
		PANIC(ESmbMusicAPSyncServerPanicNumber05);
//  MODIFY-E  [iKeeper(TRK):12221] 屆偄嵞惗嬋忣曬偑庢摼偝傟偰偄偨栤戣偺懳張
		}
	//嬋傾僀僥儉偺僆僽僕僃僋僩傪搊榐偡傞
	p->iItem 			= aPlaySongItem;
	//嬋傾僀僥儉忣曬乮儕僗僩僴儞僪儖丄Index乯傪搊榐偡傞
	p->iSongItem		= aSongItem;
	p->iArtistTitle		= NULL;
	p->iAlbumTitle		= NULL;
	p->iSongTitle		= NULL;
	p->iFile			= NULL;
	p->iTotalPlayTime 	= 0;
//@@TRK10861	Add	Start
	p->iPlayInfo		= EFalse;
	p->iImage		 	= EFalse;
//@@TRK10861	Add	End

//  MODIFY-S  [iKeeper(TRK):12221] 屆偄嵞惗嬋忣曬偑庢摼偝傟偰偄偨栤戣偺懳張
	error = iPlaySong.Insert(p, 0);
	if(error != KErrNone)
		{
		//傾僀僥儉偑搊榐偵幐攕偟傑偟偨丅
		TInt log = EMusicAPSyncServerClassNumber_ContentsPlaySongInfoManager | EMusicAPSyncServerLocationNumber08;
		_LIT(KContentsPlaySongInfoManager08, "SyncServerContentsPlaySongInfoManager::SetPlaySongItem Insert Error = %d");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KContentsPlaySongInfoManager08, error);
		//  傾僀僥儉偺曐帩偵幐攕偟偦傟埲崀偺張棟偑宲懕偱偒偦偆偵側偄偨傔PANIC偡傞
		PANIC(ESmbMusicAPSyncServerPanicNumber06);
		}
//  MODIFY-E  [iKeeper(TRK):12221] 屆偄嵞惗嬋忣曬偑庢摼偝傟偰偄偨栤戣偺懳張
	}

/**
 * 嵞惗嬋傾僀僥儉傪庢摼偡傞
 * @param [in]		aSongItem	嬋傾僀僥儉乮儕僗僩僴儞僪儖偲Index斣崋乯
 * @param [in,out]	aPlayItem	嬋傾僀僥儉
 * @return			張棟寢壥	ETrue丗庢摼惉岟/EFalse丗庢摼幐攕
 **/
CSmbMusicMWLibMusicItem* CSmbMusicAPSyncServerContentsPlaySongInfoManager::GetPlaySongItem(TSmbMusicAPSyncEngineItemIndex& aSongItem)
	{
	TPlaySongInfoStr* p;
	TInt cnt = iPlaySong.Count();
	for(TInt i = 0; i < cnt; i++)
		{
		p = iPlaySong[i];
		if(CheckItem(p->iSongItem, aSongItem))
			{
			//婛偵奩摉偡傞嬋傾僀僥儉偑搊榐偝傟偰偄傞
			return p->iItem;
			}
		}
	//傑偩嬋傾僀僥儉偑搊榐偝傟偰偄側偄
	return NULL;
	}

/**
 * 嵞惗嬋傾僀僥儉傪嶍彍偡傞
 * @param [in]		aListHandle	嬋傾僀僥儉偺儕僗僩僴儞僪儖
 * @param [in]		aIndex		嬋傾僀僥儉偺Index斣崋
 * @return	側偟
 **/
void CSmbMusicAPSyncServerContentsPlaySongInfoManager::DeletePlaySongItem(TInt aListHandle, TInt aIndex)
	{
	TSmbMusicAPSyncEngineItemIndex songItem;
	songItem.iListHandle = aListHandle;
	songItem.iIndex		 = aIndex;

	TPlaySongInfoStr* p;
	TInt cnt = iPlaySong.Count();
	for(TInt i = 0; i < cnt; i++)
		{
		p = iPlaySong[i];
		//巜掕偝傟偨傾僀僥儉偑娗棟忣曬偵偁傞偐専嶕偡傞
		TBool res = CheckItem(p->iSongItem, songItem);
		if(EFalse != res)
			{
			//摨偠傕偺偑偁傟偽嶍彍偡傞
			DeleteItem(i);
			break;
			}
		}
	}

/**
 * 僉儍僢僔儏偟偰偄傞僨乕僞傪攋婞偡傞乮儕僗僩僴儞僪儖傪NULL巜掕偵偡傞偲慡偰偺僨乕僞傪攋婞偡傞乯
 * @param[in] 	aHnadle	嶍彍懳徾偺儕僗僩僴儞僪儖
 * @return		側偟
 **/
void CSmbMusicAPSyncServerContentsPlaySongInfoManager::ClearPlaySongData(TInt* aHandle)
	{
	//尰嵼曐帩偟偰偄傞僨乕僞偺悢傪庢摼偡傞
	TInt cnt = iPlaySong.Count();
	if(NULL == aHandle)
		{
		//嶍彍懳徾偑嬋傾僀僥儉偺応崌偼慡偰偺僨乕僞傪嶍彍偡傞
		//慡偰偺僨乕僞傪攋婞偡傞
		for(TInt i = 0; i < cnt; i++)
			{
			DeleteItem(0);
			}
		}
	else
		{
		//巜掕偝傟偨儕僗僩偵娷傑傟傞慡偰偺僨乕僞傪嶍彍偡傞
		for(TInt i = cnt; i > 0; i--)
			{
			if(iPlaySong[i - 1]->iSongItem.iListHandle == *aHandle)
				{
				DeleteItem(i - 1);
				}
			}
		}
	}

/**
 * 俀偮偺傾僀僥儉偑堦抳偡傞偐傪挷傋傞
 * @param [in]		aSongItemA	嬋傾僀僥儉乮儕僗僩僴儞僪儖偲Index斣崋乯
 * @param [in]		aSongItemB	嬋傾僀僥儉乮儕僗僩僴儞僪儖偲Index斣崋乯
 * @return			張棟寢壥	ETrue丗堦抳/EFalse丗晄堦抳
 **/
TBool CSmbMusicAPSyncServerContentsPlaySongInfoManager::CheckItem(TSmbMusicAPSyncEngineItemIndex& aItem, TSmbMusicAPSyncEngineItemIndex& aSongItem)
	{
	if((aItem.iIndex == aSongItem.iIndex) && (aItem.iListHandle == aSongItem.iListHandle))
		{
		//堦抳
		return ETrue;
		}
	//晄堦抳
	return EFalse;
	}

/**
 * 屆偄忣曬傪嶍彍偡傞
 * @param	側偟
 * @return	側偟
 **/
void  CSmbMusicAPSyncServerContentsPlaySongInfoManager::DeleteOldItem()
	{
	TInt cnt = iPlaySong.Count();
	//曐懚偱偒傞嵟戝悢偵払偟偨応崌偼屆偄傕偺偐傜嶍彍偡傞
	if(KMaxPlaySongNumber == cnt)
		{
		//Index傪搉偡偺偱乭亅侾乭偡傞昁梫偑偁傞
		DeleteItem(KMaxPlaySongNumber - 1);
		}
	}

/**
 * 忣曬傪嶍彍偡傞
 * @param	嶍彍偡傞嵞惗嬋娗棟僨乕僞偺僀儞僨僢僋僗
 * @return	側偟
 **/
void  CSmbMusicAPSyncServerContentsPlaySongInfoManager::DeleteItem(TInt aIndex)
	{
	TPlaySongInfoStr* p = iPlaySong[aIndex];
	delete p->iArtistTitle;
	delete p->iAlbumTitle;
	delete p->iSongTitle;

	TInt res = KErrNone;
	//夋憸僼傽僀儖偑搊榐偝傟偰偄傟偽僼傽僀儖傕嶍彍偡傞
	if(NULL != p->iFile)
		{
		//僼傽僀儖僒乕僶偲僙僢僔儑儞傪奐偔
		RFs fs;
		fs.Connect();
		//夋憸僼傽僀儖傪嶍彍偡傞
		res = fs.Delete(*p->iFile);
//		if((KErrNone != res) && (KErrNotFound != res))
			{
			//憐掕奜偺僄儔乕抣側偺偱儘僌傪弌椡偟傑偡
			TInt log = EMusicAPSyncServerClassNumber_ContentsPlaySongInfoManager | EMusicAPSyncServerLocationNumber06;
			_LIT(KContentsPlaySongInfoManager06, "SyncServerContentsPlaySongInfoManager::DeleteItem Length = %d, res = %d");
			SmbMusicAPSyncServerLog(iLog, log, ELogLevelLowest, KContentsPlaySongInfoManager06, (*p->iFile).Length(), res);
			}
		//僼傽僀儖僒乕僶偲偺僙僢僔儑儞傪暵偠傞
		fs.Close();
//@@TRK8279	Add	Start
		//僼傽僀儖柤傪嶍彍偡傞
		delete p->iFile;
//@@TRK8279	Add	End
		}

	//惓忢宯偩偗偳儘僌偼弌偟偲偒傑偟傚偆
	TInt log = EMusicAPSyncServerClassNumber_ContentsPlaySongInfoManager | EMusicAPSyncServerLocationNumber00;
	_LIT(KContentsPlaySongInfoManager00, "SyncServerContentsPlaySongInfoManager::DeleteItem Index = %d");
	SmbMusicAPSyncServerLog(iLog, log, ELogLevelLowest, KContentsPlaySongInfoManager00, p->iSongItem.iIndex);

//@@TRK8279	Add	Start
	delete p->iItem;
//@@TRK8279	Add	End

	delete p;
	iPlaySong.Remove(aIndex);
	}

/**
 * 嵞惗嬋偵娷傑傟傞夋憸偺僼傽僀儖Name傪庢摼偡傞
 * @param	嶍彍偡傞嵞惗嬋娗棟僨乕僞偺僀儞僨僢僋僗
 * @return	僼傽僀儖柤
 **/
const TDesC* CSmbMusicAPSyncServerContentsPlaySongInfoManager::GetNextImageName()
	{
//@@TRK8279懳墳	Start
	TInt cnt = iPlaySong.Count();
	if(0 == cnt)
		{
		//傑偩壗傕搊榐偝傟偰偄側偄応崌
		return KSongImageName[0];
		}

	TPlaySongInfoStr* p = NULL;
	for(TInt i = 0; i < cnt; i++)
		{
		//怴偟偄搊榐忣曬偐傜僼傽僀儖柤傪専嶕偡傞
		p = iPlaySong[i];
		if(NULL != p->iFile)
			{
			//婛偵夋憸僼傽僀儖偑搊榐偝傟偰偄傟偽儖乕僾傪敳偗傞
			break;
			}
		}

//	if(NULL == p->iFile)
//		{
//		//傑偩壗傕搊榐偝傟偰偄側偄応崌
//		return KSongImageName[0];
//		}

	TInt j = 0;
	for(TInt i = 0; i < KMaxPlaySongImageNumber; i++)
		{
		for(j = 0; j <  cnt; j++ )
			{
			//怴偟偄搊榐忣曬偐傜僼傽僀儖柤傪専嶕偡傞
			p = iPlaySong[j];
			if(NULL != p->iFile)
				{
				//搊榐偝傟偰偄傞夋憸僼傽僀儖柤傪扵偡
				if(*(p->iFile) == *(KSongImageName[i]))
					{
					//婛偵巊梡偝傟偰偄傟偽儖乕僾傪敳偗傞
					j = cnt + 1;
					break;
					}
				}
			}
		//儖乕僾傪Break偡傞偙偲側偔敳偗偨傜j偼嵟戝抣偵側偭偰偄傞偼偢
		if(j == cnt)
			{
			//僼傽僀儖柤傪寛掕偡傞
			return KSongImageName[i];
			}
		}

	//偙偙偵棃傞僴僘偁傝傑偣傫乮懡暘乯丒丒丒
	TInt log = EMusicAPSyncServerClassNumber_ContentsPlaySongInfoManager | EMusicAPSyncServerLocationNumber01;
	_LIT(KContentsPlaySongInfoManager01, "SyncServerContentsPlaySongInfoManager::GetNextImageName()");
	SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KContentsPlaySongInfoManager01);

	return KSongImageName[0];
//@@TRK8279懳墳	End
	}

/**
 * 嵞惗帪偵惗惉偝傟傞嬋傾僀僥儉僀僥儗乕僞傪曐帩
 * @param[in]	aIterator	嵞惗嬋僀僥儗乕僞
 **/
void CSmbMusicAPSyncServerContentsPlaySongInfoManager::SetPlaySongIterator(CSmbMusicMWLibIterator* aIterator)
	{
	delete iPlaySongIterator;
	iPlaySongIterator = aIterator;
	}

//  ADD-S  [iKeeper(TRK):10184] 儗僕儏乕儉忣曬攋婞帪偵僀僥儗乕僞嶍彍傪捛壛
/**
 *  僀僥儗乕僞傪嶍彍偡傞
 */
void CSmbMusicAPSyncServerContentsPlaySongInfoManager::ClearPlaySongIterator()
	{
	delete iPlaySongIterator;
	iPlaySongIterator = NULL;
	}
//  ADD-E  [iKeeper(TRK):10184] 儗僕儏乕儉忣曬攋婞帪偵僀僥儗乕僞嶍彍傪捛壛


// end of SmbMusicAPSyncServerContentsPlaySongInfoManager.cpp
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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