📄 smbmusicapsonginfoeditview.cpp
字号:
/* Copyright (C) 2007 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
// SmbMusicAPSongInfoEditView.cpp
//
// Description:
// 儈儏乕僕僢僋梡徻嵶忣曬昞帵-徻嵶忣曬曇廤夋柺價儏乕僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅 |曄峏幰 |撪梕
//---------------------------------------------------------------------------
//2007/03/27 |SEMCJ汭弐 |怴婯嶌惉
#include <SkonHorizontalContainer.h>
#include <SmbMusicAPSongInfo.rsg>
#include "SmbMusicAPSongInfoEditView.h"
SEMCJ_NAMESPACE_BEGIN
///////////////////////////////////////////////////////////////////////////////
/**
* 忣曬曇廤夋柺峔抸梡僷儔儊乕僞
*/
LOCAL_D const TAfViewParam KSongInfoEditViewParam =
{
ESmbMusicAPSongInfoEditView, // 價儏乕ID
R_SONGINFO_EDIT_TITLE, // 僞僀僩儖
R_SONGINFO_EDIT_KEYGUIDANCE // 僉乕僈僀僟儞僗
};
/**
* 廔椆妋擣僟僀傾儘僌偺慖戰巿乽僉儍儞僙儖偟偰廔椆乿偺僀儞僨僢僋僗
*/
LOCAL_D const TUint KExitSelectYesIndex = 0;
/**
* NumBox偑僆儁儗乕僔儑儞儌乕僪偠傖側偄忬懺拞帪偺僀儞僨僢僋僗抣
*/
LOCAL_D const TInt KNumBoxNotOperation = -1;
#ifdef _DEBUG
_LIT(KPanicCategory, "SmbMusicAPSongInfoEditView");
#endif
/**
* 僐儞僗僩儔僋僞
*
* @param[in] aModel 儌僨儖僋儔僗
* @param[in] aLog 儘僌僒乕僶偺僙僢僔儑儞
* @param[in] aAppUi 傾僾儕働乕僔儑儞UI僋儔僗
*/
CSmbMusicAPSongInfoEditView::CSmbMusicAPSongInfoEditView(CSmbMusicAPSongInfoModel& aModel,
RLog& aLog, CSmbMusicAPSongInfoAppUi& aAppUi)
:CSmbAfView(KSongInfoEditViewParam), iModel(aModel), iLog(aLog), iAppUi(aAppUi),
iFepEndEvent(EFalse), iCancelConfirmEvent(EFalse), iOperationNumBoxIndex(KNumBoxNotOperation)
{
}
/**
* 僨僗僩儔僋僞
*/
CSmbMusicAPSongInfoEditView::~CSmbMusicAPSongInfoEditView()
{
// iConfirmSelect, iWarningPopup, iConfirmPopup偑NULL偡傋偒偱偡丄偦偟偰delete偟側偄
iControlArray.Close();
iItemStatusArray.Close();
delete iEditResource;
delete iContainerArrowStateProvider;
}
/**
* 1. 徻嵶忣曬偺撪梕傪僐儞僥僫忋偵奿擺偟偰偄偔
* 2. 崁栚偺曇廤忬懺傪儕僙僢僩
*
* @param[in] aIndex 僙僢僩崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
* @leave KErrArgument 崁栚偺庬暿偑憐掕奜偺抣偺応崌
*/
void CSmbMusicAPSongInfoEditView::SetControlDetailValueL(TInt aIndex)
{
// 徻嵶忣曬偺撪梕傪僐儞僥僫忋偵奿擺偟偰偄偔
TSmbMusicAPSongInfoEditItemType itemType = iEditResource->ItemType(aIndex);
switch(itemType)
{
case EEditTextItem:
{
SetTextBoxValueL(aIndex, iEditResource->DetailTextL(aIndex));
}
break;
case EEditNumItem:
{
SetNumBoxValue(aIndex, iEditResource->LimitDetailNumL(aIndex));
// 悢帤崁栚偺曇廤忬懺傪儕僙僢僩
iItemStatusArray[aIndex] = EItemStatusOrigin;
}
break;
default:
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo259, ELogLevelLow, itemType, KSmbMusicAPSongInfoLogEditItemTypeErr);
//儕乕僽張棟
User::Leave(KErrArgument);
}
break;
}
}
/**
* 巜掕偝傟偨僐儞僩儘乕儖偺抣偲DB偺抣傪斾妑偡傞
*
* @param[in] aIndex 斾妑崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
* @return 摨條偺応崌丄ETrue傪曉媝偡傞
* @panic KPanicCategory EInvlalidControlItemStatus NumBox偺昞帵偑桳岠偺憐掕偱偡偑丄柍岠偺昞帵偺応崌
* @leave KErrNotSupported 崁栚偺曇廤忬懺偑憐掕奜偺抣偺応崌
* @leave KErrArgument 崁栚偺庬暿偑憐掕奜偺抣偺応崌
*/
TBool CSmbMusicAPSongInfoEditView::IsEqualDetailValueL(TInt aIndex)
{
TBool result = EFalse;
TSmbMusicAPSongInfoEditItemType itemType = iEditResource->ItemType(aIndex);
switch(itemType)
{
case EEditTextItem:
{
const TPtr& dbText = iEditResource->DetailTextL(aIndex);
const TDesC& controlText = *TextBox(aIndex)->Text();
result = (controlText == dbText);
}
break;
case EEditNumItem:
{
if(EItemStatusEdit == iItemStatusArray[aIndex] || aIndex == iOperationNumBoxIndex)
{
CSkonNumBox* numBox = NumBox(aIndex);
TInt controlVal;
TBool numValid = numBox->GetValue(controlVal);
if(numValid)
{
TInt dbVal = 0;
switch(iEditResource->NumType(aIndex))
{
case EEditSignedNum:
{
dbVal = iEditResource->SignedDetailNumL(aIndex);
}
break;
case EEditUnsignedNum:
{
dbVal = STATIC_CAST(TInt, iEditResource->UnsignedDetailNumL(aIndex));
}
break;
default:
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo241, ELogLevelLow, KErrArgument, KSmbMusicAPSongInfoLogEditItemStatusErr);
//儕乕僽張棟
User::Leave(KErrNotSupported);
}
break;
}
result = (controlVal == dbVal);
// 張棟廔傢傝
break;
}
else
{
// NumBox偺僆儁儗乕僔儑儞儌乕僪拞丄崁栚傑偩曇廤偟偨忬懺偺憐掕偱偡
__ASSERT_DEBUG(aIndex == iOperationNumBoxIndex && EItemStatusEdit != iItemStatusArray[aIndex], User::Panic(KPanicCategory, EInvlalidControlItemStatus));
// 埲壓偺張棟傊
}
}
switch(iItemStatusArray[aIndex])
{
case EItemStatusOrigin:
{
result = ETrue;
}
break;
case EItemStatusReset:
{
switch(iEditResource->NumType(aIndex))
{
case EEditSignedNum:
{
TInt dbVal = iEditResource->SignedDetailNumL(aIndex);
TInt resetVal = iEditResource->SignedResetNumL(aIndex);
result = (resetVal == dbVal);
}
break;
case EEditUnsignedNum:
{
TUint dbVal = iEditResource->UnsignedDetailNumL(aIndex);
TUint resetVal = iEditResource->UnsignedResetNumL(aIndex);
result = (resetVal == dbVal);
}
break;
default:
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo266, ELogLevelLow, KErrArgument, KSmbMusicAPSongInfoLogEditItemStatusErr);
//儕乕僽張棟
User::Leave(KErrNotSupported);
}
break;
}
}
break;
default:
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo260, ELogLevelLow, KErrArgument, KSmbMusicAPSongInfoLogEditItemStatusErr);
//儕乕僽張棟
User::Leave(KErrNotSupported);
}
break;
}
}
break;
default:
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo257, ELogLevelLow, itemType, KSmbMusicAPSongInfoLogEditItemTypeErr);
//儕乕僽張棟
User::Leave(KErrArgument);
}
break;
}
return result;
}
/**
* 1. 弶婜忣曬偺撪梕傪僐儞僥僫忋偵奿擺偟偰偄偔
* 2. 崁栚偺曇廤忬懺傪僙僢僩
*
* @param[in] aIndex 僙僢僩崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
* @leave KErrArgument 崁栚偺庬暿偑憐掕奜偺抣偺応崌
*/
void CSmbMusicAPSongInfoEditView::SetControlResetValueL(TInt aIndex)
{
// 弶婜忣曬偺撪梕傪僐儞僥僫忋偵奿擺偟偰偄偔
TSmbMusicAPSongInfoEditItemType itemType = iEditResource->ItemType(aIndex);
switch(itemType)
{
case EEditTextItem:
{
SetTextBoxValueL(aIndex, iEditResource->ResetTextL(aIndex));
}
break;
case EEditNumItem:
{
SetNumBoxValue(aIndex, iEditResource->LimitResetNumL(aIndex));
// 悢帤崁栚偺曇廤忬懺傪僙僢僩
iItemStatusArray[aIndex] = EItemStatusReset;
}
break;
default:
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo261, ELogLevelLow, itemType, KSmbMusicAPSongInfoLogEditItemTypeErr);
//儕乕僽張棟
User::Leave(KErrArgument);
}
break;
}
}
/**
* 僐儞僩儘乕儖偺撪梕傪曇廤椞堟偵奿擺偟偰偄偔
*
* @param[in] aIndex 曐懚崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
* @panic KPanicCategory EInvlalidControlItemStatus NumBox偺昞帵偑桳岠偺憐掕偱偡偑丄柍岠偺昞帵偺応崌
* @leave KErrNotSupported 崁栚偺曇廤忬懺偑憐掕奜偺抣偺応崌
* @leave KErrArgument 崁栚偺庬暿偑憐掕奜偺抣偺応崌
*/
void CSmbMusicAPSongInfoEditView::SetEditValueL(TInt aIndex)
{
TSmbMusicAPSongInfoEditItemType itemType = iEditResource->ItemType(aIndex);
switch(itemType)
{
case EEditTextItem:
{
iEditResource->SetEditTextL(aIndex, *TextBox(aIndex)->Text());
}
break;
case EEditNumItem:
{
switch(iEditResource->NumType(aIndex))
{
case EEditSignedNum:
{
SetSignedNumEditValueL(aIndex);
}
break;
case EEditUnsignedNum:
{
SetUnsignedNumEditValueL(aIndex);
}
break;
default:
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo269, ELogLevelLow, KErrArgument, KSmbMusicAPSongInfoLogEditItemStatusErr);
//儕乕僽張棟
User::Leave(KErrNotSupported);
}
break;
}
}
break;
default:
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo263, ELogLevelLow, itemType, KSmbMusicAPSongInfoLogEditItemTypeErr);
//儕乕僽張棟
User::Leave(KErrArgument);
}
break;
}
}
/**
* 桳晞崋悢帤崁栚偺撪梕傪曇廤椞堟偵奿擺偟偰偄偔
*
* @param[in] aIndex 曐懚崁栚乮桳晞崋悢帤崁栚乯偺僐儞僩儘乕儖偺僀儞僨僢僋僗
* @panic KPanicCategory EInvlalidControlItemStatus NumBox偺昞帵偑桳岠偺憐掕偱偡偑丄柍岠偺昞帵偺応崌
* @leave KErrArgument 崁栚偺庬暿偑憐掕奜偺抣偺応崌
*/
void CSmbMusicAPSongInfoEditView::SetSignedNumEditValueL(TInt aIndex)
{
TInt editValue = 0;
switch(iItemStatusArray[aIndex])
{
case EItemStatusOrigin:
{
editValue = iEditResource->SignedDetailNumL(aIndex);
}
break;
case EItemStatusEdit:
{
TInt controlVal;
CSkonNumBox* numBox = NumBox(aIndex);
TBool numValid = numBox->GetValue(controlVal);
// NumBox偺昞帵偑桳岠偺憐掕偱偡
__ASSERT_DEBUG(EFalse != numValid, User::Panic(KPanicCategory, EInvlalidControlItemStatus));
editValue = controlVal;
}
break;
case EItemStatusReset:
{
editValue = iEditResource->SignedResetNumL(aIndex);
}
break;
default:
{
//儘僌弌椡
SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo270, ELogLevelLow, KErrArgument, KSmbMusicAPSongInfoLogEditItemStatusErr);
//儕乕僽張棟
User::Leave(KErrArgument);
}
break;
}
iEditResource->SetSignedEditNumL(aIndex, editValue);
}
/**
* 柍晞崋悢帤崁栚偺撪梕傪曇廤椞堟偵奿擺偟偰偄偔
*
* @param[in] aIndex 曐懚崁栚乮柍晞崋悢帤崁栚乯偺僐儞僩儘乕儖偺僀儞僨僢僋僗
* @panic KPanicCategory EInvlalidControlItemStatus NumBox偺昞帵偑桳岠偺憐掕偱偡偑丄柍岠偺昞帵偺応崌
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -