📄 smbmusicapsonginfodetailview.cpp
字号:
//婲摦張棟拞偺張棟偲偟偰丄僜僼僩2僉乕昞帵偲僐儞僥僫忋傊偺奿擺張棟傪峴偆
//WebTo晄壜傕偟偔偼URL柍岠偺応崌丄僜僼僩2僉乕乽URL昞帵乿傪旕昞帵偵偡傞
// CSmbBrurlchURLCheckInterface* urlCheck = SmbBrurlchInterfaceFactory::CreateSmbBrurlchURLCheckInterfaceL();
// CleanupStack::PushL(urlCheck);
//巄掕 儘僌弌椡 TRK4754廋惓乮URL昞帵仺Length偵曄峏乯
//SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo101, ELogLevelLow, iModel.DetailInfo().iDetailSongInfo->DetailSongInfo()->iUrlInfo.Length(), _L("URL Length"));
// if((EFalse == iParam.iWebToSelect) ||
//MODIFY-S MAEJI 僒僀僘僠僃僢僋捛壛丄URL僠僃僢僋傪Unicode巜掕偵曄峏乮ESmbBrowserURLCheckUnicode乯
// (iModel.DetailInfo().iDetailSongInfo->DetailSongInfo()->iUrlInfo.Length() > 512 ) ||
// (EFalse == urlCheck->CheckURLL(iModel.DetailInfo().iDetailSongInfo->DetailSongInfo()->iUrlInfo,
// ESmbBrowserURLCheckUnicode, ESmbBrowserURLCheckSizeWebto, ETrue)))
//MODIFY-E
//DEL-E 憊
//ADD-S 憊 TRK4227
//URL僠僃僢僋柍岠偺応崌丄僜僼僩僉乕傪旕昞帵偵偡傞
if(EFalse == CheckURLSoftKeyL())
//ADD-E 憊
{
KeyGuidance()->MakeVisibleKey(ESkonKeyGuidanceSoftKeyRight, EFalse);
}
// CleanupStack::PopAndDestroy(); //urlCheck
//ADD-S 汭弐 徻嵶忣曬曇廤偺捛壛
if(EFalse == CheckEditSoftKey())
{
KeyGuidance()->MakeVisibleKey(ESkonKeyGuidanceSoftKeyRightBottom, EFalse);
}
//ADD-E 汭弐
//悅捈曽岦僐儞僥僫忋偵僼僅乕儅僢僩偵墳偠偨崁栚傪梡堄偡傞
TRAPD(error, SetContainerItemL());
if(KErrNone != error)
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo101, ELogLevelHighest, error, KSmbMusicAPSongInfoSetContainerItemErr);
//儕乕僽張棟
User::Leave(error);
}
//徻嵶忣曬偺撪梕傪僐儞僥僫忋偵奿擺偟偰偄偔
TRAP(error, SetContainerDataL());
if(KErrNone != error)
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo213, ELogLevelHighest, error, KSmbMusicAPSongInfoSetContainerDataErr);
//儕乕僽張棟
User::Leave(error);
}
//婲摦姰椆僼儔僌傪僙僢僩偡傞
iStartingFlag = ETrue;
}
else
{
//婲摦張棟廔椆屻偺偨傔丄僐儞僥僫忋偺僨乕僞傪峏怴偡傞
TRAPD(error, UpdateContainerDataL());
if(KErrNone != error)
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo214, ELogLevelHighest, error, KSmbMusicAPSongInfoLogUpdateContainerDataLErr);
//儕乕僽張棟
User::Leave(error);
}
//峏怴偑姰椆偟偨偨傔丄徻嵶忣曬昞帵傪昞帵偱偒傞傛偆偵偡傞
iContainer->MakeVisible(ETrue);
//ADD-S MAEJI MakeVisible偺屻偵
iContainer->Layout();
//ADD-E
}
}
else
{
//張棟拞億僢僾傾僢僾昞帵拞偱偼側偄丂仺丂僄儔乕
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo190, ELogLevelHighest, KErrArgument, KSmbMusicAPSongInfoLogMWEventStateErr);
//儕乕僽張棟
User::Leave(KErrArgument);
}
ActivateL();
}
/**
* 僉乕僀儀儞僩張棟
*
* @param[in] aKeyEvent 僉乕僀儀儞僩
* @param[in] aType 僀儀儞僩僞僀僾
* @return 僉乕儗僗億儞僗
*/
TKeyResponse CSmbMusicAPSongInfoDetailView::OfferKeyEventL(const TKeyEvent& aKeyEvent,
TEventCode aType)
{
if(EEventKey != aType)
{
return EKeyWasNotConsumed;
}
switch(aKeyEvent.iCode)
{
//僋儕傾僉乕
case EWcdmaMpKeyClear:
{
//傾僾儕廔椆僐儅儞僪捠抦
iAppUi.HandleCommandL(EEikCmdExit);
//奺僐儅儞僪僋儔僗偺HandleViewCommandL娭悢偵偰儘僌弌椡偡傞偨傔丄偙偙偱偼TRAP仺儘僌弌椡偺張棟偼峴傢側偄
return EKeyWasConsumed;
}
default:
{
//壗傕偟側偄
}
break;
}
TKeyResponse res = EKeyWasNotConsumed;
TRAPD(error, res = CSmbAfView::OfferKeyEventL(aKeyEvent, aType));
if(KErrNone != error)
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo215, ELogLevelHighest, error, KSmbMusicAPSongInfoLogOfferKeyEventLError);
//儕乕僽張棟
User::Leave(error);
}
return res;
}
/**
* 嬋ID庢摼
*
* @return 嬋ID
*/
TUint64 CSmbMusicAPSongInfoDetailView::SongId()
{
return iParam.iSongID;
}
/**
* 悅捈曽岦僐儞僥僫忋偵僼僅乕儅僢僩偵墳偠偨崁栚傪梡堄偡傞
*/
void CSmbMusicAPSongInfoDetailView::SetContainerItemL()
{
//儕僜乕僗採嫙僋儔僗傪惗惉偡傞
iResource = new(ELeave) CSmbMusicAPSongInfoDetailResource(iModel.DetailInfo(), iLog);
iResource->ConstructL();
//僼僅乕儅僢僩偵墳偠偨儕僜乕僗傪庢摼偡傞
TInt resourceId = iResource->ContainerResourceIdL();
//悅捈曽岦僐儞僥僫傪梡堄偡傞
iContainer = new(ELeave)CSkonVerticalContainer;
iContainer->SetContainerWindowL(*this);
//儕僜乕僗傪撉傒崬傓
TResourceReader reader;
iCoeEnv->CreateResourceReaderLC(reader, resourceId);
iContainer->ConstructFromResourceL(reader);
CleanupStack::PopAndDestroy(); //reader
iContainer->SetExtent(TPoint(KSmbLayout_BASE_X,KSmbLayout_TBAR_H), TSize(KSmbLayout_WIN_W,KSmbLayout_WIN_TBAR_H));
iContainer->SetOverlapEnable(EFalse);
AddControlL(iContainer);
//miniSD撪偺僼儖妝嬋偺応崌丄昞帵崁栚[miniSD傊偺曐懚]傪[杮懱傊偺曐懚]傊曄峏偡傞
if(-1 != iResource->SavePhoneIndex()) //僼儖妝嬋埲奜偼-1偵愝掕偝傟偰偄傞
{
if(ESmbMusicMWLibSD == iModel.DetailInfo().iWhereabouts) //SD曐懚
{
//[杮懱傊偺曐懚]傊曄峏偡傞
static_cast<CSkonTextLabel*>(iContainer->ControlByIndex(iResource->SavePhoneIndex()))->SetTextL(iResource->SavePhoneTextL());
}
}
ActivateL();
}
/**
* 徻嵶忣曬偺撪梕傪僐儞僥僫忋偵奿擺偟偰偄偔
*/
void CSmbMusicAPSongInfoDetailView::SetContainerDataL()
{
//Index偺壓偐傜捛壛偟偰偄偔
//仸憓擖埵抲偲僀儞僨僢僋僗傪懳墳偝偣傞偨傔偵暋悢峴偺崁栚偼庢摼偡傞僥僉僗僩撪偱夵峴偡傞偙偲
for(TInt index = iResource->DetailItemCount(); index > 0; index--)
{
CSkonTextLabel* label = new (ELeave) CSkonTextLabel;
CleanupStack::PushL(label);
label->SetContainerWindowL(*this);
iContainer->InsertControlL(label, index);
CleanupStack::Pop(); //label
label->ConstructL();
label->SetTextL(iResource->DetailTextL(index));
}
iContainer->Layout();
}
/**
* 僐儞僥僫忋偺徻嵶忣曬偺撪梕傪峏怴偡傞
*/
void CSmbMusicAPSongInfoDetailView::UpdateContainerDataL()
{
//僼僅乕儅僢僩偵懳墳偟偨崁栚悢暘丄僥僉僗僩偺嵞庢摼傪峴偆
for(TInt index = 1; index <= iResource->DetailItemCount(); index++)
{
static_cast<CSkonTextLabel*>(iContainer->ControlByIndex(ControlIndex(index)))->SetTextL(iResource->DetailTextL(index));
}
//MODIFY-S 汭弐 忣曬偺撪梕傪峏怴偡傞屻丄乽iContainer乿偵懳偟偰丄乽Layout()乿偺戙傢傝偵丄堦斣栚偺崁栚偵僗僋儘乕儖偡傞偵廋惓
// iContainer->Layout();
int controlCount = iContainer->CountControls();
if(controlCount > 0)
{
iContainer->ScrollToMakeVisible(iContainer->ControlByIndex(0));
}
//MODIFY-E 汭弐
}
/**
* 張棟拞億僢僾傾僢僾傪昞帵偡傞
*/
void CSmbMusicAPSongInfoDetailView::ShowProcessPopupL()
{
//MODIFY MAEJI TRK 5170
//僾儘僌儗僗僟僀傾儘僌僋儔僗偑偡偱偵偁傞偨傔丄壗傕偟側偄
// if(NULL != iProgressPopup)
if(EFalse != iProgressPopupFlag)
{
return;
}
//僾儘僌儗僗僟僀傾儘僌僋儔僗傪僾儘僌儗僗僶乕側偟偱惗惉偡傞
// iProgressPopup = CSmbMusicAPLibProgressDialog::NewL(R_SONGINFO_DETAIL_PROCESSING);
// iProgressPopup->SetDialogObserver(this);
//MODIFY-E
TRAPD(error, iProgressPopup->ShowL(EDialogHalfSecond));
if(KErrNone != error)
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo216, ELogLevelHighest, error, KSmbMusicAPSongInfoLogShowLErr);
//儕乕僽張棟
User::Leave(error);
}
//ADD-S MAEJI TRK 5170
//僟僀傾儘僌昞帵拞偵
iProgressPopupFlag = ETrue;
//ADD-E
//ADD-S 憊 TRK11477
//僾儘僌儗僗僟僀傾儘僌昞帵拞偱偁傞偙偲傪僼儔僌偵僙僢僩偡傞
iAppUi.SetShowProgressDialogFlag(ETrue);
//ADD-E
//僋儕傾僉乕梷巭
iProgressPopup->DisableClearKey(ETrue);
}
//ADD-S 憊 TRK4227
/**
* 僜僼僩僉乕昞帵偺壜斲傪僠僃僢僋偡傞
*
* @return URL僠僃僢僋寢壥乮ETrue丗URL桳岠丆EFalse丗URL柍岠乯
*/
TBool CSmbMusicAPSongInfoDetailView::CheckURLSoftKeyL()
{
//巄掕 儘僌弌椡 TRK4754廋惓乮URL昞帵仺Length偵曄峏乯
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo101, ELogLevelLow, iModel.DetailInfo().iDetailSongInfo->DetailSongInfo()->iUrlInfo.Length(), _L("URL Length"));
//WebTo偑晄壜偱偁傞応崌丄URL柍岠偵偡傞
if(EFalse == iParam.iWebToSelect)
{
return EFalse;
}
//嵟戝昞帵壜擻暥帤悢偼511byte丅偙傟偼MW偑曐忈偡傞偑丄堦墳巆偟偰偍偔
if(iModel.DetailInfo().iDetailSongInfo->DetailSongInfo()->iUrlInfo.Length() > 512)
{
return EFalse;
}
//婲摦張棟拞偺張棟偲偟偰丄僜僼僩2僉乕昞帵偲僐儞僥僫忋傊偺奿擺張棟傪峴偆
//WebTo晄壜傕偟偔偼URL柍岠偺応崌丄僜僼僩2僉乕乽僒僀僩愙懕乿傪旕昞帵偵偡傞
CSmbBrurlchURLCheckInterface* urlCheck = SmbBrurlchInterfaceFactory::CreateSmbBrurlchURLCheckInterfaceL();
CleanupStack::PushL(urlCheck);
//MODIFY-S MAEJI 僒僀僘僠僃僢僋捛壛丄URL僠僃僢僋傪Unicode巜掕偵曄峏乮ESmbBrowserURLCheckUnicode乯
if(EFalse == urlCheck->CheckURLL(iModel.DetailInfo().iDetailSongInfo->DetailSongInfo()->iUrlInfo,
ESmbBrowserURLCheckUnicode, ESmbBrowserURLCheckSizeWebto, ETrue))
{
CleanupStack::PopAndDestroy(); //urlCheck
return EFalse;
}
//MODIFY-E
CleanupStack::PopAndDestroy(); //urlCheck
//僼傽僀儖僼僅乕儅僢僩傪庢摼偡傞
TSmbMusicMWLibFileFormat format = iModel.DetailInfo().iDetailSongInfo->DetailSongInfo()->iFormat;
if(ESmbMusicMWLibFileFormatOther == format)
{
//僼傽僀儖柤傪嶲徠偟丄偦偺奼挘巕偵懳墳偟偨僼僅乕儅僢僩偲偟偰埖偆
const TFileName fileName = iModel.DetailInfo().iDetailSongInfo->DetailSongInfo()->iFileName;
format = iResource->FilenameToSongformat(fileName);
}
//SD_BIND僼僅儖僟撪偺僼儖妝嬋僼傽僀儖偵懳偟偰丄乽UIM惂尷偁傝乿偺応崌
if(ESmbMusicMWLibFileFormatiMotionEx == format && ESmbMusicMWLibSD == iModel.DetailInfo().iWhereabouts && (ESmbMusicMWLibNotConform == iModel.DetailInfo().iUimInfo || ESmbMusicMWLibNotInserted == iModel.DetailInfo().iUimInfo))
{
return EFalse;
}
return ETrue;
}
//ADD-E 憊
//ADD-S 汭弐 徻嵶忣曬曇廤偺捛壛
/**
* 曇廤僜僼僩僉乕昞帵偺壜斲傪僠僃僢僋偡傞
*
* @return 曇廤僠僃僢僋寢壥乮ETrue丗曇廤桳岠丆EFalse丗曇廤柍岠乯
*/
TBool CSmbMusicAPSongInfoDetailView::CheckEditSoftKey()
{
//Edit偑晄壜偱偁傞応崌丄Edit柍岠偵偡傞
if(EFalse == iParam.iEditSelect)
{
return EFalse;
}
//僼傽僀儖僼僅乕儅僢僩傪庢摼偡傞
const TSmbMusicAPSongInfoDetailInfomation& detailInfo = iModel.DetailInfo();
TSmbMusicMWLibFileFormat format = detailInfo.iDetailSongInfo->DetailSongInfo()->iFormat;
//PTX824偱偼丄僨乕僞Box撪偺姰慡側僼儖妝嬋僼傽僀儖偺傒偵懳墳
if(ESmbMusicMWLibFileFormatiMotionEx == format
&& ESmbMusicMWLibDataBox == detailInfo.iWhereabouts
&& EFalse == detailInfo.iIncompleteContents)
{
return ETrue;
}
return EFalse;
}
//ADD-E 汭弐
// end of SmbMusicAPSongInfoDetailView.cpp
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -