⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbmusicapsonginfoeditresource.cpp

📁 索爱手机代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* Copyright (C) 2007 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPSongInfoEditResource.cpp
//
// Description:
//	儈儏乕僕僢僋梡徻嵶忣曬昞帵-徻嵶忣曬曇廤夋柺梡儕僜乕僗採嫙僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅				|曄峏幰			|撪梕
//---------------------------------------------------------------------------
//2007/03/27		|SEMCJ汭弐		|怴婯嶌惉

#include "SmbMusicAPSongInfoEditResource.h"

SEMCJ_NAMESPACE_BEGIN
///////////////////////////////////////////////////////////////////////////////

LOCAL_D const TInt KMaxSongInfoEditTextLength = 256; //昞帵梡僥僉僗僩Length
LOCAL_D const TInt KYearMaxValue = 9999; // 崁栚乽擭乿偺嵟戝抣
LOCAL_D const TInt KTrackMaxValue = 999; // 崁栚乽僩儔僢僋斣崋丄憤僩儔僢僋悢乿偺嵟戝抣
LOCAL_D const TInt KNumMaxInvalidValue = 0; // 崁栚乽擭丄僩儔僢僋斣崋丄憤僩儔僢僋悢乿偺嵟戝偺柍岠抣

#ifdef _DEBUG
_LIT(KPanicCategory, "SmbMusicAPSongInfoEditResource");
#endif

/**
 * 僼僅乕儅僢僩暿偺曇廤崁栚偍傛傃曇廤崁栚悢
 */
//僼儖妝嬋姰慡
LOCAL_D const TInt KEditImotionCompleteItemIdTable[] =
	{
	EEditMgrTitle,    	//娗棟梡僞僀僩儖
	EEditMusicTitle,	//僞僀僩儖
	EEditArtist,   		//傾乕僥傿僗僩
	EEditAlbum,    	//傾儖僶儉
	EEditYear,   		//擭
	EEditGenre,    	//僕儍儞儖
	EEditComment,   	//僐儊儞僩
	EEditTrackNumber,	//僩儔僢僋斣崋
	EEditTotalNumber	//憤僩儔僢僋悢
	};

LOCAL_D const TInt KEditImotionCompleteItemNum = 9;

/**
 * 僐儞僗僩儔僋僞
 *
 * @param[in]	aModel		儌僨儖僆僽僕僃僋僩
 * @param[in]	aLog		儘僌僒乕僶偺僙僢僔儑儞
 */
CSmbMusicAPSongInfoEditResource::CSmbMusicAPSongInfoEditResource(CSmbMusicAPSongInfoModel& aModel, RLog& aLog)
  :iModel(aModel), iLog(aLog)
	{
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPSongInfoEditResource::~CSmbMusicAPSongInfoEditResource()
	{
	delete iText;
	}

/**
 * 1. DetailInfo偺庢摼
 * 2. 昞帵崁栚偺攝楍偼傑偩僙僢僩偟側偄偺応崌丄僼僅乕儅僢僩偵傛偭偰僙僢僩
 */
void CSmbMusicAPSongInfoEditResource::InitInGetDetailInfo()
	{
	// DetailInfo偺庢摼
	iDetailInfo = iModel.DetailInfo().iDetailSongInfo->DetailSongInfo();

	//昞帵崁栚偺攝楍偼傑偩僙僢僩偟側偄偺応崌
	if(NULL == iItemIdArray)
		{
		//僼僅乕儅僢僩傪庢摼偡傞
		TSmbMusicMWLibFileFormat songformat = iDetailInfo->iFormat;

		//僼僅乕儅僢僩偵墳偠偨儕僜乕僗傪庢摼偡傞
		switch(songformat)
			{
		case ESmbMusicMWLibFileFormatiMotionEx :
			{
			iItemIdArray = KEditImotionCompleteItemIdTable;
			iItemNum = KEditImotionCompleteItemNum;
			}
			break;

		default :
			{
			//儘僌弌椡
			SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo257, ELogLevelLow, songformat, KSmbMusicAPSongInfoLogSongFormatErr);
			//PTX824偱偼丄僨乕僞Box撪偺姰慡側僼儖妝嬋僼傽僀儖偺傒偵懳墳側偺偱丄
			//懠偺僼僅乕儅僢僩偵懳偟偰丄壗傕偟側偄乮乽iItemNum乿丄乽iItemIdArray乿偑0乮NULL乯偱偁傞乯
			}
			break;
			}
		}
	}

/**
 * 2僼僃乕僘僐儞僗僩儔僋僞
 */
void CSmbMusicAPSongInfoEditResource::ConstructL()
	{
	iText = HBufC::NewL(KMaxSongInfoEditTextLength);

	if(iModel.IsGotDetailInfo())
		{
		InitInGetDetailInfo();
		}

	//儌僨儖僆僽僓乕僶傊搊榐偡傞
	iModel.SetModelObserver(this);
	}

/**
 * 曇廤椞堟偑側偐偭偨応崌偼丄曇廤椞堟偺庢摼梫媮傪敪峴
 */
void CSmbMusicAPSongInfoEditResource::StartGetEditInfoL()
	{
	if(EFalse == HasEditInfo())
		{
		iModel.GetEditInfomationL();
		}
	}

/**
 *	曇廤椞堟偺庢摼梫媮偑姰椆偟偨
 *	
 *  @leave			KErrBadHandle	曇廤椞堟偺庢摼偑幐攕偟偨応崌
 */
void CSmbMusicAPSongInfoEditResource::CompleteGetEditInfoL()
	{
	iEditInfo = iModel.EditInfo();

	//妝嬋忣曬曇廤梡椞堟億僀儞僞偺庢摼偑幐攕偟偨応崌
	if(NULL == iEditInfo)
		{
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo279, ELogLevelLow, KErrBadHandle, KSmbMusicAPSongInfoLogModelEditInfoErr)
;		//儕乕僽張棟
		User::Leave(KErrBadHandle);	
		}
	}

/**
 *	曇廤崁栚悢傪庢摼偡傞
 *
 * @return	崁栚悢
 */
TInt CSmbMusicAPSongInfoEditResource::EditItemCount() const
	{
	return iItemNum;
	}

/**
 *	曇廤椞堟偺桳柍傪僠僃僢僋
 *
 * @return	曇廤椞堟偑偁傝偺応崌偼丄ETrue傪曉媝
 */
TBool CSmbMusicAPSongInfoEditResource::HasEditInfo() const
	{
	return (NULL != iEditInfo);
	}

/**
 * 巜掕偟偨崁栚庬暿偺僥僉僗僩傪庢摼偡傞
 *
 * @param[in]	aControlIndex 	庢摼偡傞崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
 * @return 巜掕偟偨崁栚偵昞帵偡傞僥僉僗僩
 * @leave KErrArgument	崁栚偺摑堦僀儞僨僢僋僗偑憐掕奜偺抣偺応崌
 */
TPtr CSmbMusicAPSongInfoEditResource::DetailTextL(const TInt aControlIndex) const
	{
	TInt itemID = ItemID(aControlIndex);

	TPtr buf(iText->Des());
	switch(itemID)
		{
	case EEditMgrTitle :
		{		
		buf.Copy(iDetailInfo->iMgrTitle);
		}
		break;

	case EEditMusicTitle :
		{		
		buf.Copy(iDetailInfo->iMusicTitle);
		}
		break;

	case EEditArtist :
		{			
		buf.Copy(iDetailInfo->iMusicArtist);	
		}
		break;

	case EEditAlbum :
		{
		buf.Copy(iDetailInfo->iMusicAlbum);
		}
		break;

	case EEditGenre :
		{
		buf.Copy(iDetailInfo->iMusicGenre);
		}
		break;

	case EEditComment :
		{
		buf.Copy(iDetailInfo->iMusicComment);
		}
		break;

	default :
		{
		//偙偙偵偼偙側偄
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo230, ELogLevelLow, KErrArgument, KSmbMusicAPSongInfoLogEditDetailTextItemErr);
		//儕乕僽張棟
		User::Leave(KErrArgument);	
		}
		break;
		}

	return iText->Des();
	}

/**
 *	崁栚乽擭乿偺斖埻撪偺抣傪庢摼
 *
 *	@param[in] aValue 専嵏偝傟傞乽擭乿偺抣
 *	@return 斖埻撪偺抣
 */
TInt CSmbMusicAPSongInfoEditResource::LimitYearValue(TInt aValue) const
	{
	if(aValue > KYearMaxValue)
		{
		return KYearMaxValue;
		}
	return aValue;
	}

/**
 *	崁栚乽僩儔僢僋斣崋丄憤僩儔僢僋悢乿偺斖埻撪偺抣傪庢摼
 *
 *	@param[in] aValue 専嵏偝傟傞乽僩儔僢僋斣崋丄憤僩儔僢僋悢乿偺抣
 *	@return 斖埻撪偺抣
 */
TInt CSmbMusicAPSongInfoEditResource::LimitTrackValue(TUint aValue) const
	{
	if(aValue > KTrackMaxValue)
		{
		return KTrackMaxValue;
		}
	return aValue;
	}

/**
 *	崁栚乽擭丄僩儔僢僋斣崋丄憤僩儔僢僋悢乿偺桳岠惈傪僠僃僢僋
 *
 *	@param[in] aValue 専嵏偝傟傞乽擭丄僩儔僢僋斣崋丄憤僩儔僢僋悢乿偺抣
 *	@return 晄惓偺応崌偼丄EFalse傪曉媝
 */
TBool CSmbMusicAPSongInfoEditResource::IsNumValueValid(TInt aValue) const
	{
	return aValue > KNumMaxInvalidValue ;
	}

/**
 * 巜掕偟偨崁栚庬暿偺悢帤乮signed type乯傪庢摼偡傞
 *
 * @param[in]	aControlIndex 	庢摼偡傞崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
 * @return 巜掕偟偨崁栚偵昞帵偡傞悢帤
 * @leave KErrArgument	崁栚偺摑堦僀儞僨僢僋僗偑憐掕奜偺抣偺応崌
 */
TInt CSmbMusicAPSongInfoEditResource::SignedDetailNumL(const TInt aControlIndex) const
	{
	TInt itemID = ItemID(aControlIndex);

	TInt num = 0;
	switch(itemID)
		{
	case EEditYear :
		{
		num = iDetailInfo->iMusicYear;
		}
		break;

	default :
		{
		//偙偙偵偼偙側偄
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo231, ELogLevelLow, KErrArgument, KSmbMusicAPSongInfoLogEditDetailNumItemErr);
		User::Leave(KErrArgument);
		}
		break;	
		}

	return num;
	}

/**
 * 巜掕偟偨崁栚庬暿偺悢帤乮unsigned type乯傪庢摼偡傞
 *
 * @param[in]	aControlIndex 	庢摼偡傞崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
 * @return 巜掕偟偨崁栚偵昞帵偡傞悢帤
 * @leave KErrArgument	崁栚偺摑堦僀儞僨僢僋僗偑憐掕奜偺抣偺応崌
 */
TUint CSmbMusicAPSongInfoEditResource::UnsignedDetailNumL(const TInt aControlIndex) const
	{
	TInt itemID = ItemID(aControlIndex);

	TUint num = 0;
	switch(itemID)
		{
	case EEditTrackNumber :
		{		
		num  = iDetailInfo->iMusicTrackNumber;
		}
		break;

	case EEditTotalNumber :
		{		
		num = iDetailInfo->iMusicTotalNumber;
		}
		break;

	default :
		{
		//偙偙偵偼偙側偄
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo231, ELogLevelLow, KErrArgument, KSmbMusicAPSongInfoLogEditDetailNumItemErr);
		User::Leave(KErrArgument);
		}
		break;	
		}

	return num;
	}

/**
 * 巜掕偟偨崁栚庬暿偺斖埻撪偺抣傪庢摼偡傞
 *
 * @param[in]	aControlIndex 	庢摼偡傞崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
 * @return 巜掕偟偨崁栚偵昞帵偡傞悢帤
 * @leave KErrArgument	崁栚偺摑堦僀儞僨僢僋僗偑憐掕奜偺抣偺応崌
 */
TInt CSmbMusicAPSongInfoEditResource::LimitDetailNumL(const TInt aControlIndex) const
	{
	TInt itemID = ItemID(aControlIndex);

	TInt num = 0;
	switch(itemID)
		{
	case EEditYear :
		{
		num = LimitYearValue(iDetailInfo->iMusicYear);
		}
		break;

	case EEditTrackNumber :
		{		
		num = LimitTrackValue(iDetailInfo->iMusicTrackNumber);
		}
		break;

	case EEditTotalNumber :
		{		
		num = LimitTrackValue(iDetailInfo->iMusicTotalNumber);
		}
		break;

	default :
		{
		//偙偙偵偼偙側偄
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo231, ELogLevelLow, KErrArgument, KSmbMusicAPSongInfoLogEditDetailNumItemErr);
		User::Leave(KErrArgument);
		}
		break;	
		}

	return num;
	}

/**
 * 曇廤崁栚庬暿傪庢摼偡傞
 *
 * @param[in] aControlIndex 庢摼偡傞崁栚偺僀儞僨僢僋僗
 * @return	崁栚庬暿
 * @panic	KPanicCategory 		EInvalidArgument		崁栚偺摑堦僀儞僨僢僋僗偑憐掕奜偺抣偺応崌
 */	
TSmbMusicAPSongInfoEditItemType CSmbMusicAPSongInfoEditResource::ItemType(const TInt aControlIndex) const
	{
	TInt itemID = ItemID(aControlIndex);
	TSmbMusicAPSongInfoEditItemType result = EEditTextItem;

	switch(itemID)
		{
	case EEditMgrTitle:
	case EEditMusicTitle:
	case EEditArtist:
	case EEditAlbum:
	case EEditGenre:
	case EEditComment:
		{
		result = EEditTextItem;
		}
		break;

	case EEditYear:
	case EEditTrackNumber:
	case EEditTotalNumber:
		{
		result = EEditNumItem;
		}
		break;

	default :
		{
		//偙偙偵偼偙側偄
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo232, ELogLevelLow, KErrArgument, KSmbMusicAPSongInfoLogEditItemTypeErr);
#ifdef _DEBUG
		User::Panic(KPanicCategory, EInvalidArgument);
#endif
		}
		break;
		}

	return result;
	}

/**
 * 悢帤崁栚庬暿傪庢摼偡傞
 *
 * @return	悢帤庬暿
 * @panic	KPanicCategory 		EInvalidArgument		崁栚偺摑堦僀儞僨僢僋僗偑憐掕奜偺抣偺応崌
 */	
TSmbMusicAPSongInfoEditNumType CSmbMusicAPSongInfoEditResource::NumType(const TInt aControlIndex) const
	{
	TInt itemID = ItemID(aControlIndex);
	TSmbMusicAPSongInfoEditNumType result = EEditSignedNum;

	switch(itemID)
		{
	case EEditYear:
		{
		result = EEditSignedNum;
		}
		break;

	case EEditTrackNumber:
	case EEditTotalNumber:
		{
		result = EEditUnsignedNum;
		}
		break;

	default :
		{
		//偙偙偵偼偙側偄
		//儘僌弌椡
		SmbMusicAPSongInfoLog::OutputLog(iLog, ESongInfoLogNo238, ELogLevelLow, KErrArgument, KSmbMusicAPSongInfoLogEditNumTypeErr);
#ifdef _DEBUG
		User::Panic(KPanicCategory, EInvalidArgument);
#endif
		}
		break;
		}

	return result;
	}

/**
 * 巜掕偟偨崁栚偺曇廤梡椞堟傪弶婜壔
 *
 * @param[in] aControlIndex 庢摼偡傞崁栚偺僀儞僨僢僋僗
 * @return 張棟寢壥
 * @leave KErrArgument	僐儞僩儘乕儖偺僀儞僨僢僋僗偑憐掕奜偺抣偺応崌
 */
TInt CSmbMusicAPSongInfoEditResource::ResetEditInfoL(const TInt aControlIndex)
	{
	TInt itemID = ItemID(aControlIndex);
	TUint resetPattern = ESmbMusicMWLibEditNone;

	switch(itemID)
		{
	case EEditMgrTitle:
		{
		resetPattern = ESmbMusicMWLibEditPatternMgrTitle;
		}
		break;

	case EEditMusicTitle:
		{
		resetPattern = ESmbMusicMWLibEditPatternTitle;

⌨️ 快捷键说明

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