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

📄 smbmusicapsyncservercontentsservicegetplaysonginfo.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPSyncServerContentsServiceGetPlaySongInfo.cpp
//
// Description:
//  嵞惗嬋忣曬庢摼梫媮僒乕價僗
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅          |曄峏幰     |撪梕
//--------------+-----------+----------------------------------------------
//2006/06/23	|娵壀		| 怴婯嶌惉
//2006/10/20	|K3悪杮		| 僐儊儞僩廋惓丒晄梫僿僢僟偺嶍彍
//2006/10/26	|K3悪杮		| 儘僌儗儀儖廋惓
//2006/10/30	|K3悪杮		| [iKeeper(TRK):12221] 屆偄嵞惗嬋忣曬偑庢摼偝傟偰偄偨栤戣偺懳張
//----PTX824----+-----------+----------------------------------------------
//2007/04/09	|K3悪杮		| [824iKeeper(TRK):779] 庢摼姰椆帪偺忬懺慗堏儈僗偺廋惓


#ifndef __SMBMUSICAPSYNCSERVERCONTENTSSERVICEGETPLAYSONGINFO_H__
#include "SmbMusicAPSyncServerContentsServiceGetPlaySongInfo.h"
#endif

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


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

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

#ifndef __SMBMUSICAPSYNCSERVERCOMMANDOBSERVER_H__
#include "SmbMusicAPSyncServerCommandObserver.h"
#endif	//  __SMBMUSICAPSYNCSERVERCOMMANDOBSERVER_H__

#ifndef __SMBMUSICAPSYNCSERVERCONTENTSFUNC_H__
#include "SmbMusicAPSyncServerContentsFunc.h"
#endif	//  __SMBMUSICAPSYNCSERVERCONTENTSFUNC_H__

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

#ifndef __SMBMUSICAPSYNCSERVERCONTENTSSCREENTRACEMANAGER_H__
#include "SmbMusicAPSyncServerContentsScreenTraceManager.h"
#endif	//  __SMBMUSICAPSYNCSERVERCONTENTSSCREENTRACEMANAGER_H__

#ifndef __SMBMUSICAPSYNCSERVERCONTENTSASYNCOBSERVER_H__
#include "SmbMusicAPSyncServerContentsAsyncObserver.h"
#endif	//  __SMBMUSICAPSYNCSERVERCONTENTSASYNCOBSERVER_H__

#ifndef __SMBMUSICAPSYNCSERVERCONTENTSMANAGERINTERFACE_H__
#include "SmbMusicAPSyncServerContentsManagerInterface.h"
#endif	//	__SMBMUSICAPSYNCSERVERCONTENTSMANAGERINTERFACE_H__

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

#ifndef __SMBMUSICAPSYNCSERVERCONTENTSLIST_H__
#include "SmbMusicAPSyncServerContentsList.h"
#endif	//  __SMBMUSICAPSYNCSERVERCONTENTSLIST_H__

USING_NAMESPACE_SEMCJ


/**
 *  僨僗僩儔僋僞
 **/
CSmbMusicAPSyncServerContentsServiceGetPlaySongInfo::~CSmbMusicAPSyncServerContentsServiceGetPlaySongInfo()
	{

	if (IsActive() != EFalse)
		{
		CancelService();
		}
	// 擮偺偨傔丄僉儍儞僙儖偵偰Complete偡傞
	MessageComplete(KErrCancel);

	//傕偭偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
	DeleteObject();
	}


/**
 *  僐儞僗僩儔僋僞
 *
 *  @param[in]	aRlog				儘僌僒乕僶
 *  @param[in]	aCommandObserver	僐儅儞僪僆僽僓乕僶
 *  @param[in]	aFunc				僼傽儞僋僔儑儞
 *  @param[in]	aImageData			僀儊乕僕僨乕僞僐儞僩儘乕儔
 *  @param[in]	aScreenData			僗僋儕乕儞僩儗乕僗儅僱乕僕儍
 *  @param[in]	aObserver			旕摨婜僆僽僓乕僶
 *  @param[in]	aRMessage			僋儔僀傾儞僩偐傜偺儊僢僙乕僕
 **/
CSmbMusicAPSyncServerContentsServiceGetPlaySongInfo::CSmbMusicAPSyncServerContentsServiceGetPlaySongInfo(
			DCM_NAMESPACE::RLog& aRlog,
			CSmbMusicAPSyncServerModel& aModel,
			MSmbMusicAPSyncServerContentsAsyncObserver& aObserver,
			CSmbMusicAPSyncServerContentsFunc& aFunc,
			MSmbMusicAPSyncServerContentsManagerInterface& aMgrIf,
			CSmbMusicAPSyncServerContentsScreenTraceManager& aScreenData,
			const RMessage2& aRMessage):
			CSmbMusicAPSyncServerContentsServiceBase(aRlog, aModel, aObserver, aFunc,
			aMgrIf, aScreenData, aRMessage),
			iState(EIdleState)
	{
	}


/**
 *  僒乕價僗偺奐巒梫媮
 * @param [in]	側偟
 *  @return	僒乕價僗張棟偺宲懕忬嫷
 */
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetPlaySongInfo::StartServiceL()
	{
	//梫媮儊僢僙乕僕偺撪梕傪儊儞僶曄悢偵僐僺乕偡傞
	ReadParamFromMsgL();

	//儕僗僩傪庢摼偡傞
	iListHandle = iReqPkg->iReserve1;
	iList = iScreenData.GetList(iListHandle);
	if(NULL == iList)
		{
		//巜掕偝傟偨儕僗僩偑懚嵼偟側偄帠偼側偄偺偱
		TInt log = EMusicAPSyncServerClassNumber_ContentsServiceGetPlaySongInfo | EMusicAPSyncServerLocationNumber00;
		_LIT(KContentsServiceGetPlaySongInfo00, "SyncServerContentsServiceGetPlaySongInfo::StartServiceL NotFoundList");
//  MODIFY-S  儘僌儗儀儖廋惓
		SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHigh, KContentsServiceGetPlaySongInfo00, iListHandle);
//  MODIFY-E  儘僌儗儀儖廋惓

		//傕偭偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
		DeleteObject();

		//偲傝偁偊偢僄儔乕傪捠抦偟傑偡
		CompleteThisService(KErrNotFound);
		return ESmbMusicAPSyncServerContetnsServiceStateErr;
		}

	TSmbMusicAPSyncEngineItemIndex songIndex;
	songIndex.iListHandle 	= iListHandle;
	songIndex.iIndex		= iReqPkg->iReserve2;
	//嵞惗嬋忣曬娗棟儅僱乕僕儍偵傾僀僥儉傪強桳偟偰偄傞偐栤偄崌偣傞
	iLibItem = iManagers.PlaySongInfoManager().GetPlaySongItem(songIndex);
	if(NULL != iLibItem)
		{
		//傾僀僥儉傪婛偵強桳偟偰偄偨
//  ADD-S  [iKeeper(TRK):12221] 屆偄嵞惗嬋忣曬偑庢摼偝傟偰偄偨栤戣偺懳張
		iExistItem = ETrue;		//  嵞惗嬋忣曬偺僉儍僢僔儏
//  ADD-E  [iKeeper(TRK):12221] 屆偄嵞惗嬋忣曬偑庢摼偝傟偰偄偨栤戣偺懳張
		//傾乕僥傿僗僩僞僀僩儖
		TBuf<KSmMaxTitleLength> artistTitle;
		//傾儖僶儉僞僀僩儖
		TBuf<KSmMaxTitleLength> albumTitle;
		//嬋僞僀僩儖
		TBuf<KSmMaxTitleLength> songTitle;
		//嵞惗帪娫
		TInt playTime;
		//嵞惗嬋忣曬庢摼
		TBool res = iManagers.PlaySongInfoManager().GetPlaySongInfo(songIndex, playTime, artistTitle, albumTitle, songTitle);
		if(EFalse != res)
			{
			//婛偵嵞惗忣曬偑搊榐嵪傒偩偭偨
			//墳摎儊僢僙乕僕偵張棟寢壥傪彂偒崬傓
			TInt wrtRes = WriteToMsg(playTime, artistTitle, albumTitle, songTitle);
			//僒乕價僗張棟傪廔椆偡傞
			return CompleteThisService(wrtRes);
			}
		else
			{
			//巆擮側偑傜嵞惗忣曬偼傑偩搊榐偝傟偰偄側偐偭偨
			return GetPlayInfoL();
			}
		}

	//儕僗僩偵傾僀僥儉偺惗惉傪埶棅偡傞
	TInt itemCount = 1;
	iLibImteArray = CSmbMusicMWLibItemArray::NewL(itemCount);
 	TInt ret = iList->CreateNewItem(*iLibImteArray, songIndex.iIndex, itemCount, iStatus);
	if(KErrNone != ret)
		{
		//傾僀僥儉偺惗惉偵幐攕
		TInt log = EMusicAPSyncServerClassNumber_ContentsServiceGetPlaySongInfo | EMusicAPSyncServerLocationNumber15;
		_LIT(KContentsServiceGetPlaySongInfo15, "SyncServerContentsServiceGetPlaySongInfo::StartServiceL FailCreateItem = %d");
		SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceGetPlaySongInfo15, ret);

		//傕偭偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
		DeleteObject();
		//偲傝偁偊偢僄儔乕傪捠抦偟傑偡
		CompleteThisService(KErrNotFound);
		return ESmbMusicAPSyncServerContetnsServiceStateErr;
		}

	//ActiveObject傪妶惈壔偡傞
	Start();
	//傾僀僥儉惗惉忬懺偵慗堏
	iState = ECreateItemState;

	//僒乕價僗張棟傪宲懕
	return ESmbMusicAPSyncServerContetnsServiceStateContinue;
	}


/**
 *  僒乕價僗僄儔乕捠抦
 *
 *  @param[in]	aError	僄儔乕僐乕僪
 **/
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetPlaySongInfo::ServiceErr(TInt aError)
	{
	TInt log = EMusicAPSyncServerClassNumber_ContentsServiceGetPlaySongInfo | EMusicAPSyncServerLocationNumber01;
	_LIT(KContentsServiceGetPlaySongInfo01, "SyncServerContentsServiceGetPlaySongInfo::ServiceErr");
//  MODIFY-S  儘僌儗儀儖廋惓
	SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHigh, KContentsServiceGetPlaySongInfo01, aError);
//  MODIFY-E  儘僌儗儀儖廋惓

	switch(iState)
		{
	///<傾僀僥儉惗惉忬懺
	case ECreateItemState:
//		CancelCreateItem();
		break;

	///<忣曬庢摼忬懺
	case EGetInfoState:
		//忣曬庢摼偺僉儍儞僙儖
//		CancelGetInfo();
		break;

	default:
		log = EMusicAPSyncServerClassNumber_ContentsServiceGetPlaySongInfo | EMusicAPSyncServerLocationNumber14;
		_LIT(KContentsServiceGetPlaySongInfo14, "SyncServerContentsServiceGetPlaySongInfo::ServiceErr State = %d");
		SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceGetPlaySongInfo14, iState);
		break;
		}

	//傕偭偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
	DeleteObject();

	//埨掕忬懺偵栠偡
	iState = EIdleState;

	//偲傝偁偊偢僄儔乕傪捠抦偟傑偡
	CompleteThisService(aError);

	//埨掕忬懺偵栠偡
	iState = EIdleState;
	return ESmbMusicAPSyncServerContetnsServiceStateErr;
	}


/**
 *  僒乕價僗僉儍儞僙儖捠抦
 * @param [in]	側偟
 *  @return	僒乕價僗張棟偺宲懕忬嫷
 */
void CSmbMusicAPSyncServerContentsServiceGetPlaySongInfo::CancelService()
	{
	TInt res = KErrCancel;
	switch(iState)
		{
	///<梫媮側偟忬懺
	case EIdleState:
		//張棟柍偟偱廔椆偡傞
		res = KErrNone;
		break;

	///<傾僀僥儉惗惉忬懺
	case ECreateItemState:
		CancelCreateItem();
		break;

	///<忣曬庢摼忬懺
	case EGetInfoState:
		//忣曬庢摼偺僉儍儞僙儖
		CancelGetInfo();
		break;

	default:
		//婎杮揑偵偙偙偵偔傞偙偲偼側偄偺偱廔椆偟傑偡
		TInt log = EMusicAPSyncServerClassNumber_ContentsServiceGetPlaySongInfo | EMusicAPSyncServerLocationNumber13;
		_LIT(KContentsServiceGetPlaySongInfo13, "SyncServerContentsServiceGetPlaySongInfo::CancelService State = %d");
		SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceGetPlaySongInfo13, iState);

		break;
		}
	//儊僢僙乕僕偺墳摎傪敪峴偡傞
	CompleteThisService(res);

	//傕偭偰偄傞僆僽僕僃僋僩傪嶍彍偡傞
	DeleteObject();

	Cancel();
	}


/**
 *  僒乕價僗宲懕張棟
 * @param [in]	側偟
 *  @return	僒乕價僗張棟偺宲懕忬嫷
 */
TSmbMusicAPSyncServerContentsServiceState CSmbMusicAPSyncServerContentsServiceGetPlaySongInfo::ContinueServiceL()
	{
	TSmbMusicAPSyncServerContentsServiceState retState = ESmbMusicAPSyncServerContetnsServiceStateContinue;
	switch(iState)
		{
	///<梫媮側偟忬懺
	case EIdleState:
		//張棟柍偟偱廔椆偡傞
		retState = CompleteThisService(KErrServerBusy);
		break;

	///<傾僀僥儉惗惉忬懺
	case ECreateItemState:
// MODIFY-S [824iKeeper(TRK):779] 庢摼姰椆帪偺忬懺慗堏儈僗偺廋惓
//		StartGetPlaySongInfoL();
		retState = StartGetPlaySongInfoL();
// MODIFY-E [824iKeeper(TRK):779] 庢摼姰椆帪偺忬懺慗堏儈僗偺廋惓
		break;

	///<忣曬庢摼忬懺
	case EGetInfoState:
		retState = CompleteGetInfoL();
		break;

	default:
		//婎杮揑偵偙偙偵偔傞偙偲偼側偄偺偱廔椆偟傑偡
		TInt log = EMusicAPSyncServerClassNumber_ContentsServiceGetPlaySongInfo | EMusicAPSyncServerLocationNumber12;
		_LIT(KContentsServiceGetPlaySongInfo12, "SyncServerContentsServiceGetPlaySongInfo::ContinueServiceL State = %d");
		SmbMusicAPSyncServerLog(iRLog, log, ELogLevelHighest, KContentsServiceGetPlaySongInfo12, iState);

		retState = CompleteThisService(KErrServerBusy);
		break;
		}

	return retState;

⌨️ 快捷键说明

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