📄 smbmusicapsingleplayerstate.cpp
字号:
/*----------------------------------------------------------------------------*/
// Copyright (c) 2007 Sony Ericsson Mobile Communications Japan, Inc.
// All rights reserved.
/*----------------------------------------------------------------------------*/
// FileName:
// SmbMusicAPSinglePlayerState.cpp
//
// Description:
// 儈儏乕僕僢僋堦嬋嵞惗忬懺娗棟僋儔僗
//
// Modify:
// 2007-02-01 怴婯嶌惉 K3hirono
// 2007-07-10 D_82400005503 嵞惗拞偵摢弌偟傪偡傞偲丄GP婜娫拞僟僀傾儘僌偑昞帵偝傟傞
// Disconnect拞傪愝掕偡傞偲偒偵丄嬫娫嵞惗摢弌偟傪夝彍偡傞傛偆張棟傪捛壛
// 2007-07-24 D_82400007238
// 2007-09-13 D_82400014940
// 2007-10-01 D_82400016111
/*------------------------------------------------------------------------*/
// $NoKeywords: $
//TODO:僐儊儞僩捛婰
#ifndef SMBMUSICAPSINGLEPLAYERSTATE_H_
#include "SmbMusicAPSinglePlayerState.h" //堦嬋嵞惗僾儗僀儎乕忬懺娗棟僋儔僗
#endif //SMBMUSICAPSINGLEPLAYERSTATE_H_
#ifndef SMBMUSICAPSINGLEPLAYERLOG_H_
#include "SmbMusicAPSinglePlayerLog.h" // 儘僌
#endif //SMBMUSICAPSINGLEPLAYERLOG_H_
// LOG梡
_LIT(KSinglePlayerState, "SmbMusicAPSinglePlayerStateController");
SEMCJ_NAMESPACE_BEGIN
// TODO:伀尰忬丄NotReady偱側偔偰傕弌椡
// EFalse曉媝帪:Low偱儘僌弌椡
//////////////////////////////////////////////////////////////
// MWLib傊偺旕摨婜梫媮娗棟
/**
* 僋儔僗偺弶婜壔
*
* @param 側偟
* @return void
*/
void TSmbMusicAPSinglePlayerLibRequestState::Initial()
{
iState = EInit;
iDeleteItem = EFalse;
iGetSongInfo = EFalse;
iRecordPlayReport = EFalse;
iRequestCache = 0;
iPlayReportCount = 0;
}
/**
* 嬋Item嶌惉梫媮敪峴
*
* @param 側偟
* @return TBool 壜斲
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::SetCreateSongItemRequest()
{
if(EInit != iState)
{
return EFalse;
}
iState = ECreateSongItemRequest;
return ETrue;
}
/**
* 嬋忣曬庢摼梫媮敪峴
*
* @param 側偟
* @return TBool 壜斲
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::SetGetSongInfoRequest()
{
TBool ret(EFalse);
if(EFalse != IsFinishedLibRequest())
{
ret = ETrue;
}
else if(ECreateSongItemRequest == iState)
{
ret = ETrue;
iState = EGetSongInfoRequest;
}
if(EFalse != ret)
{
iGetSongInfo = ETrue;
iRequestCache &= ~EGetInfo; // 僉儍僢僔儏傪僋儕傾
}
else
{
iRequestCache |= EGetInfo;
}
return ret;
}
/**
* 夋憸庢摼梫媮敪峴
*
* @param 側偟
* @return TBool 壜斲
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::SetGetImageRequest()
{
if(EGetSongInfoRequest != iState)
{
iGetSongInfo = EFalse;
return EFalse;
}
iGetSongInfo = EFalse;
iState = EGetImageRequest;
return ETrue;
}
/**
* 儔僀僽儔儕傊偺忣曬庢摼梫媮姰椆傪愝掕偡傞
*
* @param 側偟
* @return TBool 壜斲
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::SetLibRequestComplete()
{
if(EGetImageRequest != iState)
{
return EFalse;
}
iState = EComplete;
return ETrue;
}
/**
* 嬋嶍彍梫媮拞傪愝掕偡傞
*
* @param 側偟
* @return TBool 壜斲
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::SetDeleteItemRequest()
{
if(EFalse == IsFinishedLibRequest())
{
//ADD-S D_82400016111
if(EFalse != IsExecRecordPlayReportRequest())
{
iRequestCache |= EDeleteItem;
}
//ADD-E D_82400016111
return EFalse;
}
iDeleteItem = ETrue;
iRequestCache &= ~EGetInfo; // 忣曬庢摼梫媮偺僉儍僢僔儏傪僋儕傾
//ADD-S D_82400016111
iRequestCache &= ~EDeleteItem;
//ADD-E D_82400016111
return ETrue;
}
/**
* 嬋忣曬庢摼忬懺傪夝彍偡傞
*
* @param 側偟
* @return TBool丂壜斲
*/
/*TBool TSmbMusicAPSinglePlayerLibRequestState::CancelGetSongInfoRequest()
{
if(EFalse == iGetSongInfo)
{
return EFalse;
}
iGetSongInfo = EFalse;
return ETrue;
}
*/
/**
* Lib傊偺忣曬庢摼梫媮傪姰椆忬懺偵偡傞
*
* @memo Add For D_82400016111
* @param 側偟
* @return TInt KErrNone: 夋憸傕偟偔偼忣曬庢摼忬懺傪姰椆偝偣偨
* KErrArgument: 忣曬庢摼埲奜偺梫媮拞偩偭偨
* KEttNotReady: Lib偵懳偡傞梫媮偑側偐偭偨
*/
TInt TSmbMusicAPSinglePlayerLibRequestState::SetInfoRequestCompleteForce()
{
TInt ret(KErrNotReady);
if(EFalse != iGetSongInfo)
{
iGetSongInfo = EFalse;
ret = KErrNone;
}
if(EFalse != IsDeleteItemRequest()
|| EFalse != IsExecRecordPlayReportRequest()
|| EFalse != IsFinishedCreateSongItem())
{
// 忣曬庢摼埲奜偺梫媮拞偩偭偨
ret = KErrArgument;
}
if(iState != EComplete)
{
iState = EComplete;
ret = KErrNone;
}
return ret;
}
/**
* CreateSongItem嵪偐偳偆偐
*
* @param 側偟
* @return TBool ETrue:嵪/EFalse:枹
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::IsFinishedCreateSongItem()
{
return (iState > ECreateSongItemRequest);
}
/**
* 嬋嶍彍拞偐偳偆偐
*
* @param 側偟
* @return TBool ETrue:嶍彍拞/EFalse:嶍彍拞偱偼側偄
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::IsDeleteItemRequest()
{
return iDeleteItem;
}
/**
* 嬋嶍彍姰椆傪愝掕偡傞
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::SetDeleteItemComplete()
{
if(EFalse == iDeleteItem)
{
return EFalse;
}
iDeleteItem = EFalse;
return ETrue;
}
/**
* 嵞惗棜楌婰榐拞傪愝掕
*
* @param 側偟
* @return TBool
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::SetRecordPlayReportRequest()
{
TInt ret(ETrue);
if(EFalse == IsFinishedLibRequest())
{ // 棜楌偺婰榐偵擖傟側偐偭偨
iRequestCache |= EPlayReport;
iPlayReportCount++;
ret = EFalse;
}
else
{ // 棜楌偺婰榐偵擖傟偨
if(iPlayReportCount > 0) // 僉儍僢僔儏偑偁偭偨応崌
{
iPlayReportCount--; // 僉儍僢僔儏夞悢傪尭傜偡
if(0 ==iPlayReportCount)
{
iRequestCache &= ~EPlayReport; // 夞悢偑0偵側偭偨傜丄僉儍僢僔儏傪僋儕傾偡傞
}
}
iRecordPlayReport = ETrue;
}
return ret;
}
/**
* 嵞惗棜楌婰榐姰椆傪愝掕
*
* @return TBool
* @param 側偟
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::SetRecordPlayReportComplete(TBool aForce)
{
if(EFalse == iRecordPlayReport)
{
return EFalse;
}
iRecordPlayReport = EFalse;
if(EFalse !=aForce)
{
iPlayReportCount = 0;
}
return ETrue;
}
/**
* 嵞惗棜楌婰榐拞偐偳偆偐
*
* @return TBool
* @param 側偟
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::IsExecRecordPlayReportRequest()
{
return iRecordPlayReport;
}
/**
* 幚峴偟側偔偰偼偄偗側偄梫媮
*
* @param
* @return
*/
TInt TSmbMusicAPSinglePlayerLibRequestState::GetCachedRequest(TBool aIsExit, TSmbMusicAPSinglePlayerLibRequestState::TLibRequest& aRequest, TInt& aCount)
{
// CreatesongItem/GetImage/DeleteItem偼僉儍僢僔儏偟側偄
TBool playReport = (iRequestCache & EPlayReport) ? ETrue: EFalse; // 棜楌婰榐偑僉儍僢僔儏偝傟偰偄傞偐偳偆偐
TBool getInfo = (iRequestCache & EGetInfo) ? ETrue: EFalse; // 忣曬庢摼偑僉儍僢僔儏偝傟偰偄傞偐偳偆偐
//ADD-S D_82400016111
TBool deleteItem = (iRequestCache & EDeleteItem) ? ETrue: EFalse; // 嬋嶍彍偑僉儍僢僔儏偝傟偰偄傞偐偳偆偐
// 嬋嶍彍偑桞堦僉儍僢僔儏偝傟傞僷僞乕儞偼丄棜楌婰榐幚峴拞丅偦傟埲奜偺応崌偼丄偦傕偦傕僉儍僢僔儏偵擖傟側偄
if(EFalse != deleteItem)
{
aRequest = EDeleteItem;
}
//ADD-E D_82400016111
else if(EFalse != getInfo && EFalse == aIsExit) // 桪愭弴埵偼Info(廔椆拞偱偼側偄応崌偺傒)仺RecordPlayReport仺DeleteItem
{
aRequest = EGetInfo; // 忣曬庢摼偑僉儍僢僔儏偝傟偰偄傞応崌偼丄忣曬庢摼傪峴偆(偨偩偟廔椆張棟拞偱側偄応崌)
// Exit拞偺忣曬庢摼偼柍帇偡傞
}
else if(EFalse != playReport)
{
aRequest = EPlayReport; // 嵞惗棜楌婰榐偲夞悢
aCount = iPlayReportCount;
}
else
{
aRequest = ENone;
}
if(iState < EGetSongInfoRequest && ENone != aRequest) // CreateSongItem偑廔傢偭偰偄側偄忬懺偱丄僉儍僢僔儏偑偁偭偨応崌偼丄僄儔乕傪曉媝
{
aRequest = ENone;
aCount = 0;
return KErrNotSupported;
}
return KErrNone;
}
/**
* Lib偵懳偡傞旕摨婜梫媮偑姰椆偟偰偄傞偐偳偆偐
*
* @param 側偟
* @return TBool ETrue:姰椆/EFalse:枹姰椆
*/
TBool TSmbMusicAPSinglePlayerLibRequestState::IsFinishedLibRequest()
{
TInt ret(ETrue);
if(EFalse != iRecordPlayReport // 棜楌婰榐敪峴拞
|| EFalse != iDeleteItem // 嬋嶍彍
|| EComplete != iState // CreateSongItem仺GetInfo仺GetImage傑偩搑拞
|| EFalse != iGetSongInfo) // 忣曬庢摼拞
{
ret = EFalse;
}
return ret;
}
//////////////////////////////////////////////////////////
// 儕僜乕僗庢摼娭楢偺旕摨婜梫媮娗棟僋儔僗
/**
* 儕僜乕僗娭楢旕摨婜梫媮忬懺娗棟僋儔僗傪弶婜壔偡傞
*
* @param 側偟
* @return void
*/
void TSmbMusicAPSinglePlayerRscRequestState::Initial()
{
iState = EResourceRequestComplete;
iCache = EResourceRequestComplete;
}
/**
* 儕僜乕僗庢摼梫媮拞忬懺偵堏峴偡傞
*
* @param 側偟
* @return TBool
*/
TBool TSmbMusicAPSinglePlayerRscRequestState::SetAllocationResource()
{
if(EResourceRequestComplete != iState) // 庢摼丒奐曻丄偳偪傜傪峴偭偰偄偰傕庢摼梫媮拞偵偼擖傟側偄
{
// iCache = EAllocateResource;
return EFalse;
}
ClearCache();
iState = EAllocateResource;
return ETrue;
}
/**
* 儕僜乕僗奐曻拞忬懺偵堏峴偡傞
*
* @memo 僼儗乕儉儚乕僋傊偺奐曻梫媮張棟拞偱偼側偔丄奐曻偺偨傔偺壓弨旛傪峴偭偰偄傞忬懺
* @memo D_82400014940 儕僜乕僗庢摼偺僉儍儞僙儖張棟傪幚憰偟偨偨傔丄幚偼儕僜乕僗張棟偺僉儍僢僔儏偑昁梫側偔側偭偨
* @return TBool
*/
TBool TSmbMusicAPSinglePlayerRscRequestState::SetReleaseResource()
{
//DEL-S D_82400014940
// if(EResourceRequestComplete != iState)
// {
// if(EAllocateResource == iState)
// {
// iCache = EReleaseResource;
// }
// return EFalse;
// }
//DEL-E D_82400014940
//ADD-S D_82400014940
if(EReleaseResource == iState)
{
return EFalse;
}
//ADD-E D_82400014940
ClearCache();
iState = EReleaseResource;
return ETrue;
}
//CACHE
/**
* 儕僜乕僗娭楢偺妶摦傪峴偭偰偄側偄忬懺偵堏峴偡傞.
*
* @param 側偟
* @return TBool
*/
TBool TSmbMusicAPSinglePlayerRscRequestState::SetResourceRequestComplete()
{
TBool ret = EFalse;
iState = EResourceRequestComplete;
if(EResourceRequestComplete == iCache)
{
ret = ETrue;
}
return ret;
}
/**
* 僉儍僢僔儏偟偰偍偄偨儕僜乕僗娭楢偺旕摨婜張棟傪僋儕傾偡傞
*
* @param 側偟
* @return void
*/
void TSmbMusicAPSinglePlayerRscRequestState::ClearCache()
{
iCache = EResourceRequestComplete;
}
/**
* 儕僜乕僗奐曻張棟傪偍偙側偭偰偄傞嵟拞偐偳偆偐
*
* @param 側偟
* @return TBool
*/
TBool TSmbMusicAPSinglePlayerRscRequestState::IsReleaseResource()
{
return (EReleaseResource == iState);
}
/**
* 儕僜乕僗庢摼梫媮拞偐偳偆偐
*
* @param 側偟
* @return TBool
*/
TBool TSmbMusicAPSinglePlayerRscRequestState::IsAllocateResource()
{
return (EAllocateResource == iState);
}
/**
* 儕僜乕僗娭楢偺張棟傪偍偙側偭偰偄側偄忬懺偐偳偆偐
*
* @param 側偟
* @return TBool
*/
TBool TSmbMusicAPSinglePlayerRscRequestState::IsResourceRequestComplete()
{
return (EResourceRequestComplete == iState);
}
/**
* 僉儍僢僔儏偟偨抣傪庢摼偡傞
*
* @param 側偟
* @return TAsyncState
*/
TSmbMusicAPSinglePlayerRscRequestState::TAsyncState TSmbMusicAPSinglePlayerRscRequestState::GetCache()
{
return iCache;
}
///////////////////////////////////////////////////////////////////////////////
// MWPlayer惂屼傊偺旕摨婜梫媮娗棟
/**
* 堦嬋嵞惗忬懺娗棟僋儔僗傪弶婜壔偡傞
*
* @param 側偟
* @return void
*/
void TSmbMusicAPSinglePlayerStateController::Initial()
{
iState = 0;
iFinishedSetPlayContext = EFalse;
iInitialCondition = EComplete;
iUserPlayConfirm = EFalse;
iNeedUserPlayConfirm = ETrue; //Add For D_82400007238
iSetSongHeadInCpPlay = EFalse;
iExecListEnd = EFalse;
iLibState.Initial();
iResourceState.Initial();
}
/**
* 旕摨婜張棟忬懺傪愝掕偡傞
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -