smbmusicapmainplayerfiltersyncservercontroller.cpp

来自「symbian」· C++ 代码 · 共 2,061 行 · 第 1/5 页

CPP
2,061
字号
/* Copyright (C) 2006-2007 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPMainPlayerFilterSyncServerController.cpp
//
// Description: 
//  CSmbMusicAPMainPlayerFilterSyncServerController class source.
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅          |曄峏幰     |撪梕
//--------------+-----------+----------------------------------------------
//2006/08/04	|SDNA 壀嶳	| 怴婯嶌惉
//2006/09/01	|SDNA 壀嶳	| 僉儍儞僙儖帪偺Remove懳徾偑0屌掕偵側偭偰偄偨偨傔丄廋惓乮TRK8003乯
//2006/09/01	|SDNA 壀嶳	| 嶍彍傪偡傞嵺偺僆僼僙僢僩曄悢偑娫堘偭偰偄偨偨傔丄廋惓
//2006/09/07	|SDNA 壀嶳	| 梫媮尦暿偵張棟傪幚峴偱偒傞傛偆偵廋惓
//2006/09/11	|SDNA 彫椦	| GetImageCount()傪捛壛
//2006/09/25	|SDNA 彫椦	| ConvertImage()傪捛壛
//2007/04/11	|SEMCJ暯壀	| PTX-824懳墳
//2007/05/17	|SEMCJ暯壀	| UIQ-1535懳墳


#include <f32file.h>
#include <FjAfEnv.h>

#ifndef __SMBMUSICAPMAINPLAYERUTILITY_H__
#include "SmbMusicAPMainPlayerUtility.h"
#endif

#ifndef __SMBMUSICAPMAINPLAYERAPPUI_H__
#include "SmbMusicAPMainPlayerAppUi.h"
#endif

#ifndef __SMBMUSICAPMAINPLAYERSYNCSERVERCONTROLLER_H__
#include "SmbMusicAPMainPlayerFilterSyncServerController.h"
#endif

#ifndef __SMBMUSICAPMAINPLAYERFILTERSYNCSERVERPROCESS_H__
#include "SmbMusicAPMainPlayerFilterSyncServerProcess.h"
#endif

SEMCJ_NAMESPACE_BEGIN

/**
 * 僋儔僗偺惗惉
 *
 * @param[in]		aEngine			摨婜僄儞僕儞
 */
CSmbMusicAPMainPlayerFilterSyncServerController* CSmbMusicAPMainPlayerFilterSyncServerController::NewL(CSmbMusicAPSyncEngine& aEngine)
	{
	CSmbMusicAPMainPlayerFilterSyncServerController* self = new(ELeave) CSmbMusicAPMainPlayerFilterSyncServerController(aEngine);
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop();// self
	return self;
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPMainPlayerFilterSyncServerController::~CSmbMusicAPMainPlayerFilterSyncServerController()
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 00;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::~CSmbMusicAPMainPlayerFilterSyncServerController() start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif
	//摨婜僄儞僕儞偺僆僽僓乕僶偐傜帺暘帺恎傪夝彍偡傞
	iEngine.RemoveEngineObserver(this);

	delete iImageFunc;
	
	iContentsObserver.Close();
	iSyncObserver.Close();
	//2006.10.03 傾僋僥傿僽僼僅乕僇僗懳墳
	iPlayerObserver.Close();

	iEachControllers.ResetAndDestroy();
	iEachControllers.Close();
	}

/**
 * 摨婜僒乕僶捠抦僆僽僓乕僶偺搊榐(僐儞僥儞僣宯)
 *
 * @param[in]		aObserver		儌僨儖僆僽僓乕僶億僀儞僞
 */
void CSmbMusicAPMainPlayerFilterSyncServerController::SetSyncServerNotifyContentsObserver(MSmbMusicAPMainPlayerSyncServerNotifyContentsObserver* aObserver)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 10;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::SetSyncServerNotifyContentsObserver() start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	TInt error = iContentsObserver.Append(aObserver);
	if(KErrNone != error)
		{
		TInt code = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 11;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::SetSyncServerContentsNotifyObserver() AppendL() Leave :%d !");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, code, ELogLevelHighest, KLogFmt, error);
		PANIC(9100010);
		}
	}

/**
 * 摨婜僒乕僶捠抦僆僽僓乕僶偺搊榐(摨婜宯)
 *
 * @param[in]		aObserver		儌僨儖僆僽僓乕僶億僀儞僞
 */
void CSmbMusicAPMainPlayerFilterSyncServerController::SetSyncServerNotifySyncObserver(MSmbMusicAPMainPlayerSyncServerNotifySyncObserver* aObserver)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 15;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::SetSyncServerNotifySyncObserver() start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	TInt error = iSyncObserver.Append(aObserver);
	if(KErrNone != error)
		{
		TInt code = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 16;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::SetSyncServerSyncNotifyObserver() AppendL() Leave :%d !");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, code, ELogLevelHighest, KLogFmt, error);
		PANIC(9100011);
		}
	}

//2006.10.03 傾僋僥傿僽僼僅乕僇僗懳墳
/**
 * 摨婜僒乕僶捠抦僆僽僓乕僶偺搊榐(嵞惗宯)
 *
 * @param[in]		aObserver		儌僨儖僆僽僓乕僶億僀儞僞
 */
void CSmbMusicAPMainPlayerFilterSyncServerController::SetSyncServerNotifyPlayerObserver(MSmbMusicAPMainPlayerSyncServerNotifyPlayerObserver* aObserver)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 15;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::SetSyncServerPlayerSyncObserver() start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	TInt error = iPlayerObserver.Append(aObserver);
	if(KErrNone != error)
		{
		TInt code = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 16;
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::SetSyncServerPlayerSyncObserver() AppendL() Leave :%d !");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, code, ELogLevelHighest, KLogFmt, error);
		PANIC(9100012);
		}
	}

/**
 * 摨婜僒乕僶捠抦僆僽僓乕僶偺夝彍(僐儞僥儞僣宯)
 *
 * @param[in]		aObserver	儌僨儖僆僽僓乕僶億僀儞僞
 */
void CSmbMusicAPMainPlayerFilterSyncServerController::RemoveSyncServerNotifyContentsObserver(MSmbMusicAPMainPlayerSyncServerNotifyContentsObserver* aObserver)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 20;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::RemoveSyncServerNotifyContentsObserver() start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	TInt count = iContentsObserver.Count();

	for(TInt i=0; i<count; i++)
		{
		if(iContentsObserver[i] == aObserver)
			{
			iContentsObserver.Remove(i);
			break;
			}
		}
	}


/**
 * 摨婜僒乕僶捠抦僆僽僓乕僶偺夝彍(摨婜宯)
 *
 * @param[in]		aObserver	儌僨儖僆僽僓乕僶億僀儞僞
 */
void CSmbMusicAPMainPlayerFilterSyncServerController::RemoveSyncServerNotifySyncObserver(MSmbMusicAPMainPlayerSyncServerNotifySyncObserver* aObserver)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 20;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::RemoveSyncServerNotifySyncObserver() start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	TInt count = iSyncObserver.Count();

	for(TInt i=0; i<count; i++)
		{
		if(iSyncObserver[i] == aObserver)
			{
			iSyncObserver.Remove(i);
			break;
			}
		}
	}

//2006.10.03 傾僋僥傿僽僼僅乕僇僗
/**
 * 摨婜僒乕僶捠抦僆僽僓乕僶偺夝彍(嵞惗宯)
 *
 * @param[in]		aObserver	儌僨儖僆僽僓乕僶億僀儞僞
 */
void CSmbMusicAPMainPlayerFilterSyncServerController::RemoveSyncServerNotifyPlayerObserver(MSmbMusicAPMainPlayerSyncServerNotifyPlayerObserver* aObserver)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 20;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::RemoveSyncServerNotifyPlayerObserver() start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	TInt count = iPlayerObserver.Count();

	for(TInt i=0; i<count; i++)
		{
		if(iPlayerObserver[i] == aObserver)
			{
			iPlayerObserver.Remove(i);
			break;
			}
		}
	}

/**
 * 旕摨婜梫媮僉儍儞僙儖(慡僉儍儞僙儖)
 *
 * @param[in]		aNotify		梫媮尦偵僉儍儞僙儖捠抦傪峴偆偐偳偆偐
 * @return						張棟寢壥(KErrNone:惓忢廔椆丂KErrPermissionDenied:傾僋僙僗尃柍偟)
 */
TInt CSmbMusicAPMainPlayerFilterSyncServerController::CancelAllRequest(TBool aNotify)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 30;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::CancelAllRequest(aNotify:%d) start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, aNotify);
#endif
	if(EFalse == iHasSyncServer)
		{
		//傾僋僙僗尃偑側偄偨傔丄張棟偱偒側偄
		return KErrPermissionDenied;
		}
	
	iState = EState_Busy;

	TInt count = iEachControllers.Count();

	for(TInt i=0; i<count; i++)
		{
		iEachControllers[i]->CancelAllRequest(EFalse);
		}

	iState = EState_Normal;
	return KErrNone;
	}

/**
 * 旕摨婜梫媮僉儍儞僙儖
 *
 * @param[in]		aId			梫媮ID
 * @param[in]		aNotify		梫媮尦偵僉儍儞僙儖捠抦傪峴偆偐偳偆偐
 * @return						張棟寢壥(KErrNone:惓忢廔椆丂KErrPermissionDenied:傾僋僙僗尃柍偟  KErrNotFound:奩摉梫媮柍偟)
 */
TInt CSmbMusicAPMainPlayerFilterSyncServerController::CancelRequest(TInt aId, TBool aNotify)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 40;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::CancelRequest(aId:0x08%x, aNotify:%d) start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt, aId, aNotify);
#endif

	if(EFalse == iHasSyncServer)
		{
		//傾僋僙僗尃偑側偄偨傔丄張棟偱偒側偄
		return KErrPermissionDenied;
		}

	iState = EState_Busy;
	TInt ret = KErrNotFound;

	if(EFalse == iEnd)
		{
		TInt count = iEachControllers.Count();

		for(TInt i=0; i<count; i++)
			{
			if(KErrNone == iEachControllers[i]->CancelRequest(aId, aNotify))
				{
				StartNextService();
				ret = KErrNone;
				break;
				}
			}
		}

	iState = EState_Normal;
	return ret;
	}

/**
 * 摨婜僒乕僶傾僋僙僗儔僀僙儞僗愝掕曄峏張棟
 *
 * @param[in]	aLicense	儔僀僙儞僗偺桳柍(ETrue:儔僀僙儞僗桳丄EFalse:儔僀僙儞僗柍)
 * @return					張棟寢壥(ETrue:曄峏姰椆丄EFalse:曄峏晄壜)
 */
TBool CSmbMusicAPMainPlayerFilterSyncServerController::ChangeAccessLicense(TBool aLicense)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 50;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::ChangeAccessLicense(aLicense:%d) start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt,aLicense);
#endif

	if(EState_Normal == iState)
		{
		iHasSyncServer = aLicense;
		return ETrue;
		}
	else
		{
		return EFalse;
		}
	}

/**
 * 夋柺曄峏捠抦
 *
 * @param[in]		aInfo		夋柺忣曬
 */
void CSmbMusicAPMainPlayerFilterSyncServerController::UpdateDisplayInfo(const TSmbMusicAPSyncEngineAppSyncInfo& aInfo)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 60;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::UpdateDisplayInfo() start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	TInt result = iEngine.UpdateDisplayInfo(aInfo);
	if(KErrServerTerminated == result)
		{
		StartAppExit();
		}
	}

/**
 * 僐儞僥儞僣宯僀儀儞僩捠抦
 *
 * @param[in]		aEvent				僐儞僥儞僣宯僀儀儞僩
 */
void CSmbMusicAPMainPlayerFilterSyncServerController::HandleContentsEventL(TSmbMusicAPSyncEngineContentsEvent& aEvent)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 70;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::HandleContentsEventL() start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	//僀儀儞僩偺捠抦傪峴偆
	for(TInt i = 0 ; i < iContentsObserver.Count(); i++)
		{
		iContentsObserver[i]->NotifyContentsEventL(aEvent);
		}
	}

/**
 * 摨婜宯僀儀儞僩捠抦
 *
 * @param[in]		aEvent				摨婜宯僀儀儞僩
 */
void CSmbMusicAPMainPlayerFilterSyncServerController::HandleSyncEventL(TSmbMusicAPSyncEngineSyncEvent& aEvent)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 70;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::HandleContentsEventL() start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	//僀儀儞僩偺捠抦傪峴偆
	for(TInt i = 0 ; i < iSyncObserver.Count(); i++)
		{
		iSyncObserver[i]->NotifySyncEventL(aEvent);
		}
	}

//2006.10.03 傾僋僥傿僽僼僅乕僇僗懳墳
/**
 * 嵞惗宯僀儀儞僩捠抦
 *
 * @param[in]		aEvent				嵞惗宯僀儀儞僩
 */
void CSmbMusicAPMainPlayerFilterSyncServerController::HandlePlayerEventL(TSmbMusicAPSyncEnginePlayerEvent& aEvent)
	{
#ifdef __DEBUG_LOG_MAINPLAYER__
	TInt logCode = CLASS_CODE_CSmbMusicAPMainPlayerFilterSyncServerController | 70;
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterSyncServerController::HandlePlayerEventL() start.");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, logCode, ELogLevelNormal, KLogFmt);
#endif

	//僀儀儞僩偺捠抦傪峴偆
	for(TInt i = 0 ; i < iPlayerObserver.Count(); i++)
		{
		iPlayerObserver[i]->NotifyPlayerEventL(aEvent);
		}
	}

//-------------------------------------------------------------------------摨婜宯張棟-------------------------------------------------------------------------

/**
 * 儗僕儏乕儉忣曬庢摼
 *

⌨️ 快捷键说明

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