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

📄 smbmusicapsyncservercontentsplaysonginfomanager.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPSyncServerContentsPlaySongInfoManager.cpp
//
// Description:
//  傾僀僥儉嶍彍梫媮僒乕價僗
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅          |曄峏幰     |撪梕
//--------------+-----------+----------------------------------------------
//2006/06/11	|娵壀		| 怴婯嶌惉
//2006/09/11	|娵壀		| TRK8279懳墳
//2006/09/25	|K3悪杮		| [iKeeper(TRK):10184] 儗僕儏乕儉忣曬攋婞帪偵僀僥儗乕僞嶍彍傪捛壛
//2006/10/04	|娵壀		| [iKeeper(TRK):10861] 嵞惗嬋夋憸丄嵞惗嬋忣曬偺弴偱搊榐偟偨応崌偺懳張
//2006/10/13	|娵壀		| [iKeeper(TRK):11484] 僉儍僢僔儏僒僀僘傪係嬋仺俀嬋傊曄峏
//2006/10/30	|K3悪杮		| [iKeeper(TRK):12221] 屆偄嵞惗嬋忣曬偑庢摼偝傟偰偄偨栤戣偺懳張

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

#include <f32file.h>


#ifndef __SMBMUSICAPSYNCSERVERDEF_H__
#include <SmbMusicAPSyncServerDef.h>
#endif	//  __SMBMUSICAPSYNCSERVERDEF_H__

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


#ifndef __SMBMUSICAPSYNCSERVERCONTENTSPLAYSONGINFOMANAGER_H__
#include "SmbMusicAPSyncServerContentsPlaySongInfoManager.h"
#endif	//  __SMBMUSICAPSYNCSERVERCONTENTSIMAGEDATAMANAGER_H__

#ifndef __SMBMUSICAPSYNCSERVERINTERNALDEF_H__
#include "SmbMusicAPSyncServerInternalDef.h"
#endif

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

USING_NAMESPACE_SEMCJ

//嵞惗嬋偺僼傽僀儖柤攝楍
const TDesC* KSongImageName[KMaxPlaySongImageNumber] =
	{
	&KSmbMusicAPSyncServerPlaySongImage001,
	&KSmbMusicAPSyncServerPlaySongImage002,
//@@TRK11484懳墳	Del Start
//	&KSmbMusicAPSyncServerPlaySongImage003,
//	&KSmbMusicAPSyncServerPlaySongImage004
//@@TRK11484懳墳	Del Start
	};

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

/**
 * 僨僗僩儔僋僞
 * @param	側偟
 * @return	側偟
 **/
CSmbMusicAPSyncServerContentsPlaySongInfoManager::~CSmbMusicAPSyncServerContentsPlaySongInfoManager()
	{
	TPlaySongInfoStr* p = NULL;
	TInt cnt = iPlaySong.Count();
	for(TInt i = cnt; i > 0; i--)
		{
		p = iPlaySong[0];
		delete p->iArtistTitle;
		delete p->iAlbumTitle;
		delete p->iSongTitle;
		if(NULL != p->iFile)
			{
			//僼傽僀儖僒乕僶偲僙僢僔儑儞傪奐偔
			RFs fs;
			fs.Connect();
			//夋憸僼傽僀儖傪嶍彍偡傞
			fs.Delete(*p->iFile);
			//僼傽僀儖僒乕僶偲偺僙僢僔儑儞傪暵偠傞
			fs.Close();
			delete p->iFile;
			}
		delete p->iItem;
		delete p;
		iPlaySong.Remove(0);
		}
	iPlaySong.Close();
	delete iPlaySongIterator;
	}

/**
 * 戞2僼僃乕僘僐儞僗僩儔僋僞
 * @param	側偟
 * @return	側偟
 **/
void CSmbMusicAPSyncServerContentsPlaySongInfoManager::ConstructL()
	{
	//僼傽僀儖僒乕僶偲僙僢僔儑儞傪奐偔
	RFs fs;
	fs.Connect();
	//夋憸僼傽僀儖曐懚愭偺僨傿儗僋僩儕傪嶌惉偡傞
	TInt res = fs.MkDirAll(KSmbMusicAPSyncServerImageDir);
	if( (KErrNone != res) && (KErrAlreadyExists != res) )
		{
		//傕偆堦搙傗偭偰傒傑偡
		res = fs.MkDirAll(KSmbMusicAPSyncServerImageDir);
		}

	//偙偺僋儔僗偱巊梡偡傞僼傽僀儖偑婛偵懚嵼偡傟偽嶍彍偡傞乮Wins偱偼昁梫偲側傞張棟乯
	for(TInt i = 0; i < KMaxPlaySongImageNumber; i++)
		{
		//夋憸僼傽僀儖傪嶍彍偡傞
		fs.Delete(*KSongImageName[i]);
		}

	//僼傽僀儖僒乕僶偲偺僙僢僔儑儞傪暵偠傞
	fs.Close();
	}

/**
 * 嵞惗嬋偵娷傑傟傞夋憸傪搊榐偡傞
 * @param [in]		aSongItem	嬋傾僀僥儉乮儕僗僩僴儞僪儖偲Index斣崋乯
 * @param [in]		aFile		夋憸僼傽僀儖偺惗惉僷僗乮僼儖僷僗偱僼傽僀儖柤傪巜掕乯
 * @return			張棟寢壥
 **/
TInt CSmbMusicAPSyncServerContentsPlaySongInfoManager::SetPlaySongImage(TSmbMusicAPSyncEngineItemIndex& aSongItem ,const TDesC& aFile)
	{
	TPlaySongInfoStr* p = NULL;
	TInt log;
	//僼傽僀儖柤偺奿擺椞堟傪惗惉偡傞
	HBufC* file = NULL;
	TRAPD(error, file = HBufC::NewL(aFile.Length()));
	if(KErrNone != error)
		{
		//僼傽僀儖柤傪曐懚偱偒側偄応崌偼僼傽僀儖傪嶍彍偟傑偡

		RFs fs;
		fs.Connect();
		//夋憸僼傽僀儖傪嶍彍偡傞
		fs.Delete(aFile);
		//僼傽僀儖僒乕僶偲偺僙僢僔儑儞傪暵偠傞
		fs.Close();

		log = EMusicAPSyncServerClassNumber_ContentsPlaySongInfoManager | EMusicAPSyncServerLocationNumber04;
		_LIT(KContentsPlaySongInfoManager04, "SyncServerContentsPlaySongInfoManager::SetPlaySongImage Leave = %d");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KContentsPlaySongInfoManager04, error);
		return error;
		}

	*file = aFile;
	TInt cnt = iPlaySong.Count();
	for(TInt i = 0; i < cnt; i++)
		{
		p = iPlaySong[i];
		if((p->iSongItem.iIndex == aSongItem.iIndex) && (p->iSongItem.iListHandle == aSongItem.iListHandle))
			{
			//婛偵奩摉偡傞嬋忣曬偑搊榐偝傟偰偄傟偽僼傽僀儖柤傕搊榐偡傞
			p->iFile = file;
//@@TRK10861	Add	Start
			//夋憸搊榐嵪傒
			p->iImage = ETrue;
//@@TRK10861	Add	End
			return KErrNone;
			}
		}
	//傑偩嬋忣曬偑搊榐偝傟偰偄側偗傟偽怴婯偵捛壛偡傞
	TRAP(error, p = new(ELeave)TPlaySongInfoStr);
	if(KErrNone != error)
		{
		//僼傽僀儖柤傪曐懚偱偒側偄応崌偼僼傽僀儖傪嶍彍偟傑偡

		RFs fs;
		fs.Connect();
		//夋憸僼傽僀儖傪嶍彍偡傞
		TInt ret = fs.Delete(aFile);
		if((KErrNone != ret) && (KErrNotFound != ret))
			{
			log = EMusicAPSyncServerClassNumber_ContentsPlaySongInfoManager | EMusicAPSyncServerLocationNumber07;
			_LIT(KContentsPlaySongInfoManager07, "SyncServerContentsPlaySongInfoManager::SetPlaySongImage File delete errot = %d");
			SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KContentsPlaySongInfoManager07, ret);
			}
		//僼傽僀儖僒乕僶偲偺僙僢僔儑儞傪暵偠傞
		fs.Close();

		delete file;

		log = EMusicAPSyncServerClassNumber_ContentsPlaySongInfoManager | EMusicAPSyncServerLocationNumber05;
		_LIT(KContentsPlaySongInfoManager05, "SyncServerContentsPlaySongInfoManager::SetPlaySongImage Leave = %d");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KContentsPlaySongInfoManager05, error);
		return error;
		}

	p->iSongItem 		= aSongItem;
	p->iArtistTitle 	= NULL;
	p->iAlbumTitle  	= NULL;
	p->iSongTitle   	= NULL;
	p->iFile 			= file;
//@@TRK10861	Add	Start
	//夋憸搊榐嵪傒
	p->iImage			= ETrue;

	//嵞惗忣曬偼枹搊榐
	p->iPlayInfo		= EFalse;
//@@TRK10861	Add	End

	iPlaySong.Insert(p, 0);

	//屆偄忣曬偼嶍彍偡傞
	DeleteOldItem();

	return KErrNone;
	}

/**
 * 夋憸偑懚嵼偡傟偽庢摼偡傞
 * @param [in]		aSongItem	嬋傾僀僥儉乮儕僗僩僴儞僪儖偲Index斣崋乯
 * @param [in]		aFile		夋憸僼傽僀儖偺惗惉僷僗乮僼儖僷僗偱僼傽僀儖柤傪巜掕乯
 * @return			張棟寢壥	ETrue丗庢摼惉岟/EFalse丗庢摼幐攕
 **/
TBool CSmbMusicAPSyncServerContentsPlaySongInfoManager::GetPlaySongImage(TSmbMusicAPSyncEngineItemIndex& aSongItem ,TDes& aFile)
	{
	TPlaySongInfoStr* p;
	TInt cnt = iPlaySong.Count();
	for(TInt i = 0; i < cnt; i++)
		{
		p = iPlaySong[i];
		if((p->iSongItem.iIndex == aSongItem.iIndex) && (p->iSongItem.iListHandle == aSongItem.iListHandle))
			{
			//巜掕偝傟偨傾僀僥儉偼搊榐偝傟偰偄傞
//			if(NULL != p->iFile)
//@@TRK10861	Add	Start
			//夋憸搊榐嵪傒
			if(EFalse != p->iImage)
//@@TRK10861	Add	End
				{
				//夋憸僼傽僀儖偑搊榐偝傟偰偄傞
				aFile = *(p->iFile);
				return ETrue;
				}
			//夋憸僼傽僀儖偼傑偩搊榐偝傟偰偄側偄
			return EFalse;
			}
		}

	//巜掕偝傟偨傾僀僥儉偼帺懱偑傑偩搊榐偝傟偰偄側偄
	return EFalse;
	}

/**
 * 嵞惗嬋忣曬傪搊榐偡傞
 * @param [in]		aSongItem		嬋傾僀僥儉乮儕僗僩僴儞僪儖偲Index斣崋乯
 * @param [in]		aSongInfo		嬋忣曬乮僩乕僞儖嵞惗帪娫乯
 * @param [in]		aArtistTitle	嬋忣曬乮傾乕僥傿僗僩柤乯
 * @param [in]		aAlbumTitle		嬋忣曬乮傾儖僶儉柤乯
 * @param [in]		aSongTitle		嬋忣曬乮嬋僞僀僩儖乯
 * @return	側偟
 **/
void CSmbMusicAPSyncServerContentsPlaySongInfoManager::SetPlaySongInfoL(TSmbMusicAPSyncEngineItemIndex& aSongItem, const TInt& aTotalPlayTime,
							const TDesC& aArtistTitle, const TDesC& aAlbumTitle, const TDesC& aSongTitle)
	{
	//CleanupStack::PushL偺僇僂儞僞
	TInt pushCounter = 0;
	HBufC* artist 	= NULL;
	HBufC* album	= NULL;
	HBufC* song 	= NULL;

	TInt leng = aArtistTitle.Length();
	//僞僀僩儖偺挿偝偼0乣256傑偱偲偟傑偡
	if( (  0 < leng ) && (leng <= KSmMaxTitleLength))
		{
		//傾乕僥傿僗僩柤曐懚椞堟惗惉
		artist = HBufC::NewL(leng);
		CleanupStack::PushL(artist);
		*artist = aArtistTitle;
		pushCounter++;
		}

	leng = aAlbumTitle.Length();
	//僞僀僩儖偺挿偝偼0乣256傑偱偲偟傑偡
	if(( 0 < leng ) && (leng <= KSmMaxTitleLength))
		{
		//傾儖僶儉柤曐懚椞堟惗惉
		album = HBufC::NewL(leng);
		CleanupStack::PushL(album);
		*album = aAlbumTitle;
		pushCounter++;
		}

	leng = aSongTitle.Length();
	//僞僀僩儖偺挿偝偼0乣256傑偱偲偟傑偡
	if(( 0 < leng ) && (leng <= KSmMaxTitleLength))
		{
		//嬋僞僀僩儖柤曐懚椞堟
		song = HBufC::NewL(leng);
		CleanupStack::PushL(song);
		*song = aSongTitle;
		pushCounter++;
		}

	TPlaySongInfoStr* p = NULL;
	TInt cnt = iPlaySong.Count();
	for(TInt i = 0; i < cnt; i++)
		{
		p = iPlaySong[i];
		//巜掕偝傟偨嬋傾僀僥儉偑婛偵搊榐嵪傒偱偁傟偽偦偺偵捛壛偡傞
		if((p->iSongItem.iIndex == aSongItem.iIndex) && (p->iSongItem.iListHandle == aSongItem.iListHandle))
			{
			p->iArtistTitle = artist;
			p->iAlbumTitle  = album;
			p->iSongTitle   = song;
			p->iTotalPlayTime = aTotalPlayTime;
//@@TRK10861	Add	Start
			//嵞惗忣曬搊榐嵪傒
			p->iPlayInfo	= ETrue;
//@@TRK10861	Add	End
			if(pushCounter > 0)
				{
				//Push偟偨暘栠偡
				CleanupStack::Pop(pushCounter);
				}
			return;
			}
		}
	//傑偩嬋忣曬偑搊榐偝傟偰偄側偗傟偽怴婯偵捛壛偡傞
	p = new(ELeave)TPlaySongInfoStr;
	p->iSongItem 		= aSongItem;
	p->iArtistTitle 	= artist;
	p->iAlbumTitle  	= album;
	p->iSongTitle   	= song;
	p->iTotalPlayTime 	= aTotalPlayTime;
	p->iFile			= NULL;
	p->iItem			= NULL;
//@@TRK10861	Add	Start
	//嵞惗忣曬搊榐嵪傒
	p->iPlayInfo		= ETrue;

	//夋憸偼枹搊榐
	p->iImage		 	= EFalse;
//@@TRK10861	Add	End

	iPlaySong.Insert(p, 0);
	if(pushCounter > 0)
		{
		//Push偟偨暘栠偡
		CleanupStack::Pop(pushCounter);
		}

	//屆偄忣曬偼嶍彍偡傞
	DeleteOldItem();
	}

/**
 * 嵞惗嬋忣曬傪庢摼偡傞
 * @param [in]		aSongItem		嬋傾僀僥儉乮儕僗僩僴儞僪儖偲Index斣崋乯
 * @param [in,out]	aSongInfo		嬋忣曬乮僩乕僞儖嵞惗帪娫乯
 * @param [in,out]	aArtistTitle	嬋忣曬乮傾乕僥傿僗僩柤乯
 * @param [in,out]	aAlbumTitle		嬋忣曬乮傾儖僶儉柤乯
 * @param [in,out]	aSongTitle		嬋忣曬乮嬋僞僀僩儖乯
 * @return			張棟寢壥	ETrue丗庢摼惉岟/EFalse丗庢摼幐攕
 **/
TBool CSmbMusicAPSyncServerContentsPlaySongInfoManager::GetPlaySongInfo(TSmbMusicAPSyncEngineItemIndex& aSongItem, TInt& aTotalPlayTime,
							TDes& aArtistTitle, TDes& aAlbumTitle, TDes& aSongTitle)
	{
	TPlaySongInfoStr* p;
	TInt cnt = iPlaySong.Count();
	for(TInt i = 0; i < cnt; i++)
		{

⌨️ 快捷键说明

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