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

📄 smbmusicapsonginfoeditview.h

📁 索爱手机代码
💻 H
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPSongInfoEditView.h
//
// Description:
//	儈儏乕僕僢僋梡徻嵶忣曬昞帵-忣曬曇廤夋柺價儏乕僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅				|曄峏幰			|撪梕
//---------------------------------------------------------------------------
//2007/03/22		|SEMCJ汭弐		|怴婯嶌惉

#ifndef __SMBMUSICAPSONGINFOEDITVIEW_H__
#define __SMBMUSICAPSONGINFOEDITVIEW_H__

#include <SmbAfView.h>
#include <SkonDialogBase.h>
#include <SkonSelectionDialog.h>
#include <SkonConfirmDialog.h>
#include <SkonWarningDialog.h>
#include <SkonNumBox.h>
#include <SkonTextBox.h>
#include <SkonVerticalContainer.h>
#include <SkonKeyGuidance.h>

#include "SmbMusicAPSongInfoAppUi.h"
#include "SmbMusicAPSongInfoModel.h"
#include "SmbMusicAPSongInfoEditResource.h"
#include "SmbMusicAPSongInfoInterfaceParam.h"

SEMCJ_NAMESPACE_BEGIN
/**
 * 儈儏乕僕僢僋梡徻嵶忣曬昞帵-徻嵶忣曬曇廤夋柺價儏乕僋儔僗
 */
class CSmbMusicAPSongInfoEditView : public CSmbAfView, public MSmbMusicAPSongInfoModelObserver, 
  public MEikCommandObserver, public MSkonTextBoxObserver, public MCoeControlObserver
	{
public:
	typedef CSkonKeyGuidance::MArrowStateProvider MSkonArrowStateProvider;

	/**
	 * 儈儏乕僕僢僋梡徻嵶忣曬昞帵-僉乕僈僀僟儞僗偺栴報忣曬傪帩偮僋儔僗
	 */
	class CSmbMusicAPSongInfoArrowStateProvider : public CBase, public MSkonArrowStateProvider
		{
	public:
		/**
		 * 栴報偺桳岠惈傪僙僢僩
		 *
		 * @param[in]	aValid 	桳岠惈偺僼儔僢僌
		 */
		void SetArrowValid(TBool aValid);
		/**
		 * 栴報忣曬偺採嫙幰傪僙僢僩丟
		 * 桳岠偺応崌丄乽aArrowStateProvider乿偐傜栴報忣曬傪庢摼偡傞
		 *
		 * @param[in]	aArrowStateProvider	栴報忣曬偺採嫙幰
		 */
		void SetArrowStateProvider(MSkonArrowStateProvider* aArrowStateProvider);

		// from CSkonKeyGuidance::MArrowStateProvider
		/**
		 * 栴報忣曬傪庢摼偡傞
		 *
		 * return	栴報忣曬
		 */
		virtual TInt CurrentArrowState() const;

	private:
		/** 栴報偺桳岠惈偺僼儔僢僌 */
		TBool iValid;
		/** 栴報忣曬偺採嫙幰 */
		MSkonArrowStateProvider* iArrowStateProvider;
		};

private:
	/**
	 * 曇廤僉乕偺僞僀僾
	 */
	enum TSmbMusicAPSongInfoEditKey
		{
		EEditKeyInEdit,		// 曇廤拞
		EEditKeyInStart,		// 奐巒拞
		EEditKeyInFinish		// 姰椆拞
		};
	/**
	 *  慖戰僟僀傾儘僌偵偰廔椆偑乽偼偄/偄偄偊乿偙偲傪慖戰偟偨応崌偺掕媊抣
	 */
	enum TSmbSongInfoExitYesNo
		{
		ESmbSongInfoExitYes,		// 僉儍儞僙儖偟偰廔椆
		ESmbSongInfoExitNo			// 曇廤傪宲懕
		};
	/**
	 *  奺崁栚偺曇廤忬懺偺僞僀僾
	 */
	enum TSmbSongInfoItemStatus
		{
		EItemStatusOrigin,	// 壗傕憖嶌乮曇廤丄儕僙僢僩乯偟側偄
		EItemStatusEdit,		// 曇廤偟偨
		EItemStatusReset	// 儕僙僢僩偟偨
		};
	/**
	 * 僷僯僢僋僐乕僪
	 */
	enum TPanicCode 
		{ 
		EInvalidArgument = 0,		// 堷悢堎忢 (NULL 側偳)
		EInvlalidControlItemStatus,	// 僐儞僩儘乕儖傾僀僥儉偺忬懺堎忢
		EInvalidMemberArgument	// 儊儞僶乕曄悢堎忢
		};

public:
	/**
	 * 僐儞僗僩儔僋僞
	 *
	 * @param[in]		aModel				儌僨儖僋儔僗
	 * @param[in]		aLog				儘僌僒乕僶偺僙僢僔儑儞
	 * @param[in]		aAppUi				傾僾儕働乕僔儑儞UI僋儔僗
	 */
	CSmbMusicAPSongInfoEditView(CSmbMusicAPSongInfoModel& aModel,
								RLog& aLog, CSmbMusicAPSongInfoAppUi& aAppUi);
	/**
	 * 僨僗僩儔僋僞
	 */
	~CSmbMusicAPSongInfoEditView();
	/**
	 * 僼僅乕僇僗偺崁栚傪傟僙僢僩偡傞
	 */
	void EditInfoResetL();
	/**
	 * 曇廤姰椆偺張棟
	 */
	void EditInfoFinishL();
	/**
	 * 曇廤拞巭偡傞
	 */
	void EditInfoCancelL();
	/**
	 * 傾僾儕傪廔椆壜斲傪僠僃僢僋偡傞
	 *
	 * return	廔椆壜擻偺応崌丄ETrue傪曉媝偡傞
	 */
	TBool CanFinishApplicationL();

public:		//From CAfView
	/**
	 * 價儏乕僐儞僥僫弶婜壔帪張棟
	 * @leave	KErrArgument		崁栚偺庬暿偑憐掕奜偺抣偺応崌
	 */
	void DoConstructContainerL();
	/**
	 * 價儏乕傾僋僥傿僽姰椆帪偺僐乕儖僶僢僋娭悢撪張棟
	 *
	 * @param[in]		aPrevViewId			屇傃弌偟尦價儏乕ID
	 * @param[in]		aCustomMessageId		儊僢僙乕僕ID
	 * @param[in]		aCustomMessage		儊僢僙乕僕僶僢僼傽
	 */
	void DoViewActivatedL(const TVwsViewId& /*aPrevViewId*/, TUid aCustomMessageId, const TDesC8& /*aCustomMessage*/);

public:		//From MSmbMusicAPSongInfoModelObserver
	/**
	 * 儌僨儖曄峏捠抦張棟
	 *
	 * @param[in]		aReason			儌僨儖曄峏棟桼
	 */
	void HandleChangeModelL(TSmbMusicAPSongInfoChangeModelReason aReason);

public:		//From MEikCommandObserver
	/**
	 * FEP偺弌傞偨傔偵丄僐儞僩儘乕儖僐儅儞僪偺張棟
	 *
	 * @param[in]		aCommandId		僐儅儞僪ID
	 */
	void ProcessCommandL(TInt aCommandId);

public:		//From MSkonTextBoxObserver
	/**
	 * (僐乕儖僶僢僋)TextBox 偺僀儀儞僩傪庴偗庢傞
	 *
	 * @param[in]		aSakTextBox		僥僉僗僩儃僢僋僗偺億僀儞僞
	 * @param[in]		aEventType		僀儀儞僩庬暿
	 */
	void HandleTextBoxEventL(CSkonTextBox* aSakTextBox, TSkonTextBoxEvent aEventType);
	/**
	 * 擖椡壜擻側巆傝暥帤悢偑曄壔偟偨偲偒偺僀儀儞僩傪庴偗庢傞丅
	 *
	 * @param[in] aSkonTextBox 僥僉僗僩儃僢僋僗偺億僀儞僞丅
	 * @param[in] aLastByteLength 擖椡壜擻側巆傝暥帤悢丅
	 */
	void HandleLastByteChangeEventL(CSkonTextBox* /*aSakTextBox*/, TInt /*aLastByteLength*/);

public:		//From MCoeControlObserver
	/**
	 * (僐乕儖僶僢僋)NumBox 偺僀儀儞僩傪庴偗庢傞
	 *
	 * @param[in]		aControl		僐儞僩儘乕儖偺億僀儞僞
	 * @param[in]		aEventType	僀儀儞僩庬暿
	 */
	void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);

private:
	/**
	 * 1. 徻嵶忣曬偺撪梕傪僐儞僥僫忋偵奿擺偟偰偄偔
	 * 2. 崁栚偺曇廤忬懺傪儕僙僢僩
	 *
	 * @param[in]	aIndex 	僙僢僩崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
	 * @leave KErrArgument	崁栚偺庬暿偑憐掕奜偺抣偺応崌
	 */
	void SetControlDetailValueL(TInt aIndex);
	/**
	 * 巜掕偝傟偨僐儞僩儘乕儖偺抣偲DB偺抣傪斾妑偡傞
	 *
	 * @param[in]	aIndex 	斾妑崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
	 * @return	摨條偺応崌丄ETrue傪曉媝偡傞
	 * @panic	KPanicCategory 		EInvlalidControlItemStatus		NumBox偺昞帵偑桳岠偺憐掕偱偡偑丄柍岠偺昞帵偺応崌
	 * @leave	KErrNotSupported	崁栚偺曇廤忬懺偑憐掕奜偺抣偺応崌
	 * @leave	KErrArgument		崁栚偺庬暿偑憐掕奜偺抣偺応崌
	 */
	TBool IsEqualDetailValueL(TInt aIndex);
	/**
	 * 1. 弶婜忣曬偺撪梕傪僐儞僥僫忋偵奿擺偟偰偄偔
	 * 2. 崁栚偺曇廤忬懺傪僙僢僩
	 *
	 * @param[in]	aIndex 	僙僢僩崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
	 * @leave	KErrArgument	崁栚偺庬暿偑憐掕奜偺抣偺応崌
	 */
	void SetControlResetValueL(TInt aIndex);
	/**
	 * 僐儞僩儘乕儖偺撪梕傪曇廤椞堟偵奿擺偟偰偄偔
	 *
	 * @param[in]	aIndex 	曐懚崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
	 * @panic	KPanicCategory 		EInvlalidControlItemStatus		NumBox偺昞帵偑桳岠偺憐掕偱偡偑丄柍岠偺昞帵偺応崌
	 * @leave	KErrNotSupported	崁栚偺曇廤忬懺偑憐掕奜偺抣偺応崌
	 * @leave	KErrArgument		崁栚偺庬暿偑憐掕奜偺抣偺応崌
	 */
	void SetEditValueL(TInt aIndex);
	/**
	 * 桳晞崋悢帤崁栚偺撪梕傪曇廤椞堟偵奿擺偟偰偄偔
	 *
	 * @param[in]	aIndex 	曐懚崁栚乮桳晞崋悢帤崁栚乯偺僐儞僩儘乕儖偺僀儞僨僢僋僗
	 * @panic	KPanicCategory 		EInvlalidControlItemStatus		NumBox偺昞帵偑桳岠偺憐掕偱偡偑丄柍岠偺昞帵偺応崌
	 * @leave	KErrArgument		崁栚偺庬暿偑憐掕奜偺抣偺応崌
	 */
	void SetSignedNumEditValueL(TInt aIndex);
	/**
	 * 柍晞崋悢帤崁栚偺撪梕傪曇廤椞堟偵奿擺偟偰偄偔
	 *
	 * @param[in]	aIndex 	曐懚崁栚乮柍晞崋悢帤崁栚乯偺僐儞僩儘乕儖偺僀儞僨僢僋僗
	 * @panic	KPanicCategory 		EInvlalidControlItemStatus		NumBox偺昞帵偑桳岠偺憐掕偱偡偑丄柍岠偺昞帵偺応崌
	 * @leave	KErrArgument		崁栚偺庬暿偑憐掕奜偺抣偺応崌
	 */
	void SetUnsignedNumEditValueL(TInt aIndex);
	/**
	 * 僉乕傪懄帪嵞昤夋偡傞
	 */
	void DrawNow();
	/**
	 * 曇廤夋柺偺僉乕傪僙僢僩偡傞
	 *
	 * @param[in]		aKeyType		 曇廤僉乕偺僞僀僾
	 * @leave	KErrArgument		僉乕偺庬暿偑憐掕奜偺抣偺応崌
	 */
	void EditReplaceKeyGuidanceL(const TSmbMusicAPSongInfoEditKey aKeyType);
	/**
	 * 僥僉僗僩Box偺僐儞僩儘乕儖傪庢摼偡傞
	 *
	 * @param[in]		aIndex		庢摼偡傞崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
	 * @return		巜掕偟偨崁栚偺僥僉僗僩Box
	 * @panic	KPanicCategory 		EInvalidArgument		堷悢僀儞僨僢僋僗偑惓忢偺斖埻奜偺応崌
	 */
	CSkonTextBox* TextBox(TInt aIndex);
	/**
	 * NumBox偺僐儞僩儘乕儖傪庢摼偡傞
	 *
	 * @param[in]		aIndex		庢摼偡傞崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
	 * @return		巜掕偟偨崁栚偺NumBox
	 * @panic	KPanicCategory 		EInvalidArgument		堷悢僀儞僨僢僋僗偑惓忢偺斖埻奜偺応崌
	 */
	CSkonNumBox* NumBox(TInt aIndex);
	/**
	 * 巜掕偟偨崁栚偺僥僉僗僩傪愝掕偡傞
	 *
	 * @param[in]	aIndex 	愝掕偡傞崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
	 * @param[in] aText	巜掕偟偨崁栚偵愝掕偡傞僥僉僗僩
	 */
	void SetTextBoxValueL(TInt aIndex, const TDesC& aText);
	/**
	 * 巜掕偟偨崁栚偺悢帤傪愝掕偡傞
	 * 抣偑柍岠偺応崌偼丄柍岠昞帵偵愝掕偡傞
	 *
	 * @param[in]	aIndex 	愝掕偡傞崁栚偺僐儞僩儘乕儖偺僀儞僨僢僋僗
	 * @param[in] aValue	巜掕偟偨崁栚偵愝掕偡傞悢帤
	 */
	void SetNumBoxValue(TInt aIndex, TInt aValue);
	/**
	 * 僼僅乕僇僗偺僐儞僩儘乕儖偺僀儞僨僢僋僗
	 *
	 * @return 僐儞僩儘乕儖偺僀儞僨僢僋僗
	 */
	TInt CurrentFocusedIndex();
	/**
	 * 慖戰僟僀傾儘僌僋儔僗傪惗惉偡傞
	 *
	 * @panic	KPanicCategory 		EInvlalidControlItemStatus		iConfirmSelect偑NULL偺憐掕偲堘斀偺応崌
	 * @param	result				僟僀傾儘僌偺慖戰寢壥
	 */
	TInt ConfirmFinishL();
	/**
	 * 寈崘僟僀傾儘僌僋儔僗傪惗惉偡傞
	 *
	 * @panic	KPanicCategory 		EInvlalidControlItemStatus		iWarningPopup偑NULL偺憐掕偲堘斀偺応崌
	 * @param	result				僟僀傾儘僌偺昞帵寢壥
	 */
	TInt WarningShowL(TInt aResourceId);
	/**
	 * 妋擣僟僀傾儘僌僋儔僗傪惗惉偡傞
	 *
	 * @panic	KPanicCategory 		EInvlalidControlItemStatus		iConfirmPopup偑NULL偺憐掕偲堘斀偺応崌
	 * @param	result				僟僀傾儘僌偺昞帵寢壥
	 */
	TInt ConfirmShowL(TInt aResourceId);
	/**
	 * 旕摨婜偺梫媮傪僉儍儞僙儖偡傞
	 */
	void CancelRequest();
	/**
	 * 曇廤偟偨崁栚偑偁傞偐傪僠僃僢僋偡傞
	 *
	 * @return 曇廤偟偨崁栚偑偁偭偨応崌丄ETrue傪曉媝偡傞
	 */
	TBool HasEditItemL();
	/**
	 * 曇廤偟偨崁栚敾掕梡價僢僩偺庢摼
	 *
	 * @return 曇廤偟偨崁栚敾掕梡價僢僩
	 */
	TUint EditPatternL();
	/**
	 * 僉乕僀儀儞僩張棟
	 *
	 * @param[in]		aKeyEvent	僉乕僀儀儞僩
	 * @param[in]		aType		僀儀儞僩僞僀僾
	 * @return		僉乕儗僗億儞僗
	 * @leave			error		曇廤拞巭偑幐攕偟偨応崌
	 * @leave			error		恊僋儔僗偺張棟偑幐攕偟偨応崌
	 */
	TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
	/**
	 * 僼僅乕僇僗偺NumBox偺僼僅乕僇僗懳徾傪堏摦
	 * 
	 * @panic	KPanicCategory 		EInvlalidControlItemStatus		塃懁偵僼僅乕僇僗偺忬懺偺憐掕偲堘斀偺応崌
	 */
	void MoveCurrentNumBoxFocusPos();
	/**
	 * 奺旕摨婜偺梫媮傪僉儍儞僙儖偟偰丄徻嵶忣曬昞帵夋柺傊栠傞
	 */
	void BackToDetailViewL();
	/**
	 * 曇廤姰椆拞偵娭偟偰僼儔僢僌傪僙僢僩偡傞
	 *
	 * @param[in]	aIsFinish 	曇廤姰椆拞偺僼儔僢僌
	 */
	void SetFinishState(TBool aIsFinish);

private:
	/** 悅捈曽岦僐儞僥僫丂乮has-a娭學乯 */
	CSkonVerticalContainer* iContainer;
	/** 曇廤僐儞僩儘乕儖丂*/
	RPointerArray<CCoeControl> iControlArray;
	/** 崁栚偺曇廤忬懺(only for 悢帤崁栚)  */
	RArray<TSmbSongInfoItemStatus> iItemStatusArray;
	/** 儕僜乕僗採嫙僋儔僗丂乮has-a娭學乯 */
	CSmbMusicAPSongInfoEditResource* iEditResource;
	/** 儌僨儖僋儔僗 */
	CSmbMusicAPSongInfoModel& iModel;
	/** 慖戰僟僀傾儘僌丂乮has-a娭學乯 */
	CSkonSelectionDialog* iConfirmSelect;
	/** 寈崘僟僀傾儘僌丂乮has-a娭學乯 */
	CSkonWarningDialog* iWarningPopup;
	/** 妋擣僟僀傾儘僌丂乮has-a娭學乯 */
	CSkonConfirmDialog* iConfirmPopup;
	/** 儘僌僒乕僶偺僙僢僔儑儞 */
	RLog& iLog;
	/** 傾僾儕働乕僔儑儞UI僋儔僗 */
	CSmbMusicAPSongInfoAppUi& iAppUi;
	/** fep廔榖僉乕僼儔僢僌 */
	TBool iFepEndEvent;
	/** 僉儍儞僙儖妋擣拞僼儔僢僌 */
	TBool iCancelConfirmEvent;
	/** 曇廤姰椆僀儀儞僩僼儔僢僌 */
	TBool iEditInfoFinishEvent;
	/** 曇廤姰椆拞妿偮僋儕傾僉乕僼儔僢僌 */
	TBool iClearInFinishEvent;
	/** 僆儁儗乕僔儑儞儌乕僪拞偺NumBox偺僐儞僩儘乕儖偺僀儞僨僢僋僗 */
	TInt iOperationNumBoxIndex;
	/** 曇廤偟偨崁栚敾掕梡價僢僩 */
	TUint iEditPattern;
	/** 栴報忣曬偺採嫙幰 */
	CSmbMusicAPSongInfoArrowStateProvider* iContainerArrowStateProvider;
	};
SEMCJ_NAMESPACE_END
#endif	// __SMBMUSICAPSONGINFOEDITVIEW_H__
// end of SmbMusicAPSongInfoEditView.h
/* Copyright (C) 2007 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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