📄 smbmusicaplibmwanalyzeitem.cpp
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
// SmbMusicAPLibMWAnalyzeItem.cpp
//
// Description:
// PTX810 Music傾僾儕 嫟捠儔僀僽儔儕 夋憸忣曬夝愅 僋儔僗
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//--------------+---------------+--------------------------------------
//2006/06/09 |娵壀 |怴婯嶌惉
//2006/08/19 |娵壀 |TRK6868懳墳
//2006/08/24 |憊 |TRK5700懳墳
//2006/09/09 |娵壀 |TRK8888懳墳
//2006/09/26 |娵壀 |TRK10436懳墳
//2006/10/18 |娵壀 |TRK11656懳墳
//-----PTX824---+---------------+--------------------------------------
//2007/03/29 |K3悪杮 |壧帉夋憸曐懚僼儔僌偺懳墳
//2007/03/30 |K3悪杮 |PTX824懳墳
//2007/06/23 |K3悪杮 |AAA夋憸懳墳
#ifndef __SMBMUSICAPLIBMWANALYZEITEM_H__
#include "SmbMusicAPLibMWAnalyzeItem.h"
#endif
#ifndef __SMBMUSICAPLIBLOG_H__
#include "SmbMusicAPLibLog.h"
#endif
USING_NAMESPACE_SEMCJ
/**
* 僐儞僗僩儔僋僞
**/
CSmbMusicAPLibMWAnalyzeItem::CSmbMusicAPLibMWAnalyzeItem()
:CActive(CActive::EPriorityStandard)
{
//傾僋僥傿僽僗働僕儏乕儔偵帺暘帺恎傪捛壛偡傞
CActiveScheduler::Add(this);
}
/**
* 僨僗僩儔僋僞
**/
CSmbMusicAPLibMWAnalyzeItem::~CSmbMusicAPLibMWAnalyzeItem()
{
//AO偺僉儍儞僙儖傪屇傃弌偡
Cancel();
//夋憸忣曬僆僽僕僃僋僩傪嶍彍偡傞
delete iInfoItem;
delete iCheckInfo.iInfoItem;
}
/**
* 嬋傾僀僥儉偺夋憸忣曬傪庢摼偡傞
* @param[in] aItem 嬋傾僀僥儉偺嶲徠
* @param[in] aExType 奼挘僼儔僌
* @param[in,out] aInfo 夋憸忣曬庢摼椞堟
* @param[in,out] aStatus 旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
* @return 張棟寢壥
*/
TInt CSmbMusicAPLibMWAnalyzeItem::GetImageInfo(
CSmbMusicMWLibSongItem& aItem,
TInt aExType,
TSmbMusicAPLibImageInfo& aInfo,
TRequestStatus& aStatus
)
{
//ESmbMusicAPLibIdle偱側偄応崌丄僄儔乕偱栠傞
if(ESmbMusicAPLibIdle != State())
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber00;
_LIT(KMusicAPLibMWAnalyzeItem00, "CSmbMusicAPLibMWAnalyzeItem::GetImageInfo() [ErrState]:Not Idle State. State = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem00, State());
return KErrInUse;
}
iExType = aExType;
//堷悢傪儊儞僶乕曄悢偵曐懚偡傞
iClientItem = &aItem;
//奼挘僿僢僟乕傪弶婜壔偡傞
iExtensionHeaderInfo.iXDcmMove = 0;
iExtensionHeaderInfo.iXDcmAdditional = 0;
//嬋僆僽僕僃僋僩偺夋憸忣曬庢摼梫媮傪屇傃弌偡
TInt ret = iClientItem->ExtensionHeaderInformation(iExtensionHeaderInfo, iStatus);
if(KErrNone != ret)
{
//儘僌弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber01;
_LIT(KMusicAPLibMWAnalyzeItem01, "CSmbMusicAPLibMWAnalyzeItem::GetImageInfo() [ErrCall]:ExtensionHeaderInformation = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem01, ret);
return ret;
}
//旕摨婜梫媮傪奐巒偡傞(SetActive偡傞)
Start();
//忬懺傪SD忣曬庢摼忬懺偵僙僢僩偡傞
SetState(ESmbMusicAPLibGetExInfo);
//僋儔僀傾儞僩僗僥乕僞僗傪曐懚偡傞
iClientStatus = &aStatus;
//夋憸忣曬庢摼梡椞堟傪曐懚偡傞
iClientInfo = &aInfo;
//僋儔僀傾儞僩懁AO偺梫媮傪Pending偡傞
if(NULL != iClientStatus)
{
*iClientStatus = KRequestPending;
}
return KErrNone;
}
/**
* 嬋傾僀僥儉偺夋憸忣曬庢摼張棟傪僉儍儞僙儖偡傞
* @return 張棟寢壥
**/
TInt CSmbMusicAPLibMWAnalyzeItem::CancelImageInfo()
{
TSmbMusicAPLibAnalyzeItemState curState = State();
switch(curState)
{
//傾僀僪儖忬懺偺帪
case ESmbMusicAPLibIdle:
{
//ESmbMusicAPLibIdle偺応崌丄旕摨婜張棟偑傕偆姰椆偟偨偺偱丄張棟側偟偵栠傞
return KErrCompletion;
}
//夋憸忣曬庢摼忬懺偺帪
case ESmbMusicAPLibGetInfo:
//SD忣曬庢摼忬懺偺帪
case ESmbMusicAPLibGetExInfo:
{
//嬋傾僀僥儉偵懳偟偰丄夋憸忣曬庢摼/SD忣曬庢摼傪僉儍儞僙儖偡傞
iClientItem->CancelGetInfo();
}
break;
case ESmbMusicAPLibAnalyzeInfo:
{
//屄暿夋憸忣曬庢摼傪僉儍儞僙儖偡傞
iInfoItem->CancelIndividualImageInfo();
}
break;
default:
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber02;
_LIT(KMusicAPLibMWAnalyzeItem02, "CSmbMusicAPLibMWAnalyzeItem::CancelImageInfo() [ErrState]:Invalid State = %d");
SmbMusicAPLibLog(logCode, ELogLevelHighest, KMusicAPLibMWAnalyzeItem02, curState);
//僉儍儞僙儖偱偒傑偣傫偱偟偨
return KErrUnknown;
}
// break;
}
//AO偺僉儍儞僙儖傪屇傃弌偡
Cancel();
//旕摨婜張棟僉儍儞僙儖傪僐儞僾儕乕僩偡傞
Complete(KErrCancel);
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
return KErrNone;
}
/**
* 帠慜僠僃僢僋偺拞巭
* @return 張棟寢壥
**/
TInt CSmbMusicAPLibMWAnalyzeItem::CancelCheckImage()
{
TSmbMusicAPLibAnalyzeItemState curState = State();
switch(curState)
{
//傾僀僪儖忬懺偺帪
case ESmbMusicAPLibIdle:
//ESmbMusicAPLibIdle偺応崌丄旕摨婜張棟偑傕偆姰椆偟偨偺偱丄張棟側偟偵栠傞
return KErrCompletion;
//夋憸庢摼偺帠慜僠僃僢僋奐巒忬懺
case ESmbMusicAPLibStartCheckImage:
iCheckInfo.iItem->CancelGetInfo();
break;
//夋憸庢摼偺帠慜僠僃僢僋忬懺
case ESmbMusicAPLibCheckingImage:
iCheckInfo.iInfoItem->CancelIndividualImageInfo();
break;
default:
{
//儘僌傪弌椡
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber03;
_LIT(KMusicAPLibMWAnalyzeItem03, "CSmbMusicAPLibMWAnalyzeItem::CancelCheckImage() [ErrState]:Invalid State = %d");
SmbMusicAPLibLog(logCode, ELogLevelHighest, KMusicAPLibMWAnalyzeItem03, curState);
//僉儍儞僙儖偱偒傑偣傫偱偟偨
return KErrUnknown;
}
// break;
}
//AO偺僉儍儞僙儖傪屇傃弌偡
Cancel();
//旕摨婜張棟僉儍儞僙儖傪僐儞僾儕乕僩偡傞
Complete(KErrCancel);
//惗惉偟偨僆僽僕僃僋僩傪嶍彍偡傞
DeleteObjects();
return KErrNone;
}
// ADD-S PTX824 k3-sugimoto
/**
* 巜掕偟偨庬暿偺夋憸忣曬傪庢摼偡傞
* @param[in] aItem 忣曬庢摼懳徾偺嬋傾僀僥儉
* @param[in] aTargetType 庢摼偟偨偄夋憸忣曬偺庬暿(僕儍働僢僩/壧帉)
* @param[in] aExType 奼挘僼儔僌
* @param[out] aTypeInfo 庢摼偝傟偨屄暿夋憸忣曬偺曐帩椞堟
* @param[in,out] aStatus 旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
* @return 張棟寢壥
**/
TInt CSmbMusicAPLibMWAnalyzeItem::GetImageTypeInfo(
CSmbMusicMWLibSongItem& aItem,
TSmbMusicAPLibImageType& aTargetType,
TInt aExType,
TSmbMusicAPLibImageTypeInfo& aTypeInfo,
TRequestStatus& aStatus
)
{
if (State() != ESmbMusicAPLibIdle)
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber04;
_LIT(KMusicAPLibMWAnalyzeItem04, "CSmbMusicAPLibMWAnalyzeItem::GetImageTypeInfo() [ErrState]:Not Idle State. State = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem04, State());
return KErrInUse;
}
//堷悢傪儊儞僶乕曄悢偵曐懚偡傞
iClientItem = &aItem;
iTargetType = aTargetType;
iExType = aExType;
//奼挘僿僢僟乕傪弶婜壔偡傞
iExtensionHeaderInfo.iXDcmMove = 0;
iExtensionHeaderInfo.iXDcmAdditional = 0;
//嬋僆僽僕僃僋僩偺夋憸忣曬庢摼梫媮傪屇傃弌偡
TInt result = iClientItem->ExtensionHeaderInformation(iExtensionHeaderInfo, iStatus);
if(result != KErrNone)
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber05;
_LIT(KMusicAPLibMWAnalyzeItem05, "CSmbMusicAPLibMWAnalyzeItem::GetImageTypeInfo() [ErrCall]:ExtensionHeaderInformation = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem05, result);
return result;
}
//旕摨婜梫媮傪奐巒偡傞(SetActive偡傞)
Start();
//忬懺傪SDBind忣曬庢摼忬懺傊
SetState(ESmbMusicAPLibGetExInfoforTarget);
//夋憸忣曬庢摼梡椞堟傪曐懚偡傞
iClientTypeInfo = &aTypeInfo;
//僋儔僀傾儞僩僗僥乕僞僗傪曐懚偟丄梫媮傪Pending偡傞
iClientStatus = &aStatus;
aStatus = KRequestPending;
return KErrNone;
}
/**
* 巜掕庬暿夋憸忣曬庢摼梫媮偺僉儍儞僙儖
**/
void CSmbMusicAPLibMWAnalyzeItem::CancelGetImageTypeInfo()
{
switch(State())
{
case ESmbMusicAPLibGetExInfoforTarget: // SDBind忣曬庢摼忬懺
case ESmbMusicAPLibGetAAAInfoforTarget: // AAA夋憸忣曬庢摼
case ESmbMusicAPLibGetJacketInfoforTarget: // 僕儍働僢僩夋憸忣曬庢摼
case ESmbMusicAPLibGetStillInfoforTarget: // 懸庴夋憸忣曬庢摼
case ESmbMusicAPLibGetLyricInfoforTarget: // 壧帉夋憸忣曬庢摼
ASSERT(iClientItem != NULL);
// 嬋傾僀僥儉偵懳偟偰忣曬庢摼梫媮偺僉儍儞僙儖傪偡傞
iClientItem -> CancelGetInfo();
break;
case ESmbMusicAPLibGetAAAIndivInfoforTarget: // AAA夋憸屄暿忣曬庢摼
case ESmbMusicAPLibGetJacketIndivInfoforTarget: // 僕儍働僢僩夋憸屄暿忣曬庢摼
case ESmbMusicAPLibGetStillIndivInfoforTarget: // 懸庴夋憸屄暿忣曬庢摼
case ESmbMusicAPLibGetLyricIndivInfoforTarget: // 壧帉夋憸屄暿忣曬庢摼
ASSERT(iInfoItem != NULL);
// 屄暿夋憸忣曬庢摼傪僉儍儞僙儖偡傞
iInfoItem -> CancelIndividualImageInfo();
break;
default:
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber06;
_LIT(KMusicAPLibMWAnalyzeItem06, "CSmbMusicAPLibMWAnalyzeItem::CancelGetImageTypeInfo() illegal Status = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem06, State());
return;
}
// break;
}
Cancel();
Complete(KErrCancel);
DeleteObjects();
}
/**
* 巜掕偟偨庬暿偺夋憸悢傪庢摼偡傞
* @param[in] aItem 庢摼懳徾偺嬋傾僀僥儉
* @param[in] aTargetType 庢摼偟偨偄夋憸忣曬偺庬暿(僕儍働僢僩/壧帉)
* @param[in] aExType 奼挘僼儔僌
* @param[out] aImageCount 庢摼偝傟偨夋憸悢
* @param[in,out] aStatus 旕摨婜墳摎梡偺傾僋僥傿僽僆僽僕僃僋僩僗僥乕僞僗
* @return 張棟寢壥
**/
TInt CSmbMusicAPLibMWAnalyzeItem::GetTargetImageCount(
CSmbMusicMWLibSongItem& aItem,
TSmbMusicAPLibImageType& aTargetType,
TInt aExType,
TInt& aImageCount,
TRequestStatus& aStatus
)
{
if (State() != ESmbMusicAPLibIdle)
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber07;
_LIT(KMusicAPLibMWAnalyzeItem07, "CSmbMusicAPLibMWAnalyzeItem::GetTargetImageCount() [ErrState]:Not Idle State = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem07, State());
return KErrInUse;
}
//堷悢傪儊儞僶乕曄悢偵曐懚偡傞
iClientItem = &aItem;
iTargetType = aTargetType;
iExType = aExType;
TSmbMusicAPLibAnalyzeItemState nextState(ESmbMusicAPLibIdle);
switch(aTargetType)
{
case ESmbMusicAPLibImageTypeJacket: // 僕儍働僢僩夋憸
{
// 嵟弶偵庢摼偡傞夋憸庬暿傪寛掕
StartImageType();
if (iImageType == ESmbMusicMWLibImageTypeAAA)
{ // 嵟弶偵庢摼偡傞夋憸庬暿偑AAA夋憸偺応崌
nextState = ESmbMusicAPLibGetAAACountforTarget;
}
else
{ // 嵟弶偵庢摼偡傞夋憸庬暿偑AAA夋憸埲奜偺応崌
nextState = ESmbMusicAPLibGetJacketCountforTarget;
}
}
break;
case ESmbMusicAPLibImageTypeLyric: // 壧帉夋憸
nextState = ESmbMusicAPLibGetLyricCountforTarget;
iImageType = ESmbMusicMWLibImageTypeLylic;
break;
case ESmbMusicAPLibImageTypeOther: // 偦偺懠
default:
{
TUint32 logCode = EMusicAPLibClassNumber_CSmbMusicAPLibMWAnalyzeItem | EMusicAPLibLocationNumber08;
_LIT(KMusicAPLibMWAnalyzeItem08, "CSmbMusicAPLibMWAnalyzeItem::GetTargetImageCount() [Err]:illegal ImageType = %d");
SmbMusicAPLibLog(logCode, ELogLevelHigh, KMusicAPLibMWAnalyzeItem08, aTargetType);
return KErrArgument;
}
// break;
}
// 嬋僆僽僕僃僋僩偺夋憸忣曬庢摼梫媮傪屇傃弌偡
// GetInfo()撪偱Start(SetActive)偡傞偺偱杮API撪偱偼僐乕儖偟側偄
TInt result = GetInfo();
if(result != KErrNone)
{ // 梫媮偵幐攕
return result;
}
SetState(nextState);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -