smbmusicapmainplayerfilterlistviewmeta.cpp

来自「symbian」· C++ 代码 · 共 574 行 · 第 1/2 页

CPP
574
字号
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPMainPlayerFilterListViewMeta.cpp
//
// Description: 
//  CSmbMusicAPMainPlayerFilterListViewMeta class source.
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅          |曄峏幰     |撪梕
//--------------+-----------+----------------------------------------------
//2006/08/16	|SDNA嶳壀	| 怴婯嶌惉
//2007/07/23	|SEMCJ暯壀	| D_82400006405, D_82400004469 儈儏乕僕僢僋儊僯儏乕傾僀僐儞懳墳
//2007/09/11	|SEMCJ暯壀	| D_82400013891懳墳

#include <SmbAfWordingFormatter.h>
#include <SmbAfWording.rsg>
#include <SmbAfWording.loc>
#include <Music.mbg>
#include <SmbMusicAPMainPlayer.rsg>
#include "SmbMusicAPMainPlayer.hrh"
#include "SmbMusicAPMainPlayerFilterView.hrh"
#include "SmbMusicAPMainPlayerFilterView.h"
#include "SmbMusicAPMainPlayerFilterListView.h"
#include "SmbMusicAPMainPlayerFilterListViewMeta.h"
#include "SmbMusicAPMainPlayerFilterListItem.h"
#include "SmbMusicAPMainPlayerFilterSyncServerController.h"
#include "SmbMusicAPMainPlayerFilterProcessGetListFromSearchCurrentList.h"

#include <FjAfEnv.h>
#include "SmbMusicAPMainPlayerUtility.h"

SEMCJ_NAMESPACE_BEGIN

/**
 * 僕儍儞儖/傾乕僥傿僗僩/傾儖僶儉儕僗僩僋儔僗
 *	KSmbMusicAPMainPlayerGenreListViewUid
 *	KSmbMusicAPMainPlayerArtistListViewUid
 *	KSmbMusicAPMainPlayerArtistListViewUid
 */

//////////////////////////////////////////////////////////////////////////////////////
// 僋儔僗偺惗惉偲攋婞
//////////////////////////////////////////////////////////////////////////////////////
/**
 * 僕儍儞儖/傾乕僥傿僗僩/傾儖僶儉儕僗僩僋儔僗偺惗惉
 *
 * @param aView [in]	僼傿儖僞價儏乕
 * @return				儈儏乕僕僢僋儊僯儏乕儕僗僩僋儔僗
 */
CSmbMusicAPMainPlayerFilterListViewMeta* CSmbMusicAPMainPlayerFilterListViewMeta::NewL(TUid aViewUid, CSmbMusicAPMainPlayerFilterView* aView)
	{
	// 僀儞僗僞儞僗惗惉
	CSmbMusicAPMainPlayerFilterListViewMeta* self = new(ELeave) CSmbMusicAPMainPlayerFilterListViewMeta();
	// 僋儕乕儞傾僢僾僗僞僢僋妋曐
	CleanupStack::PushL(self);
	// 僙僇儞僪僐儞僗僩儔僋僞
	self->ConstructL(aViewUid, aView);
	// 僋儕乕儞傾僢僾僗僞僢僋奐曻
	CleanupStack::Pop();// self
	return self;
	}

/**
 * 僐儞僗僩儔僋僞
 *
 * @param aView [in]	僼傿儖僞價儏乕
 * @return				儈儏乕僕僢僋儊僯儏乕儕僗僩僋儔僗
 */
CSmbMusicAPMainPlayerFilterListViewMeta::CSmbMusicAPMainPlayerFilterListViewMeta()
	{
	}

/**
 * 僙僇儞僪僐儞僗僩儔僋僞
 * @param aView       [in] FilterView
 * @param aSyncEngine [in] 摨婜僄儞僕儞
 * 
 */
void CSmbMusicAPMainPlayerFilterListViewMeta::ConstructL(TUid aViewUid, CSmbMusicAPMainPlayerFilterView* aView)
	{
	// 僞僀僩儖僶乕丄儕僗僩儃僢僋僗傪惗惉偡傞
	CSmbMusicAPMainPlayerFilterListView::ConstructL(aViewUid, aView);
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPMainPlayerFilterListViewMeta::~CSmbMusicAPMainPlayerFilterListViewMeta()
	{
	}

//////////////////////////////////////////////////////////////////////////////////////
// 弶婜愝掕
//////////////////////////////////////////////////////////////////////////////////////
void CSmbMusicAPMainPlayerFilterListViewMeta::SetupModelL()
	{
	// 僕儍儞儖/傾乕僥傿僗僩/傾儖僶儉儕僗僩偺弶婜傾僀僥儉傪撉傒崬傓
	if(KSmbMusicAPMainPlayerGenreListViewUid==ViewUid())				///< 僕儍儞儖堦棗夋柺
		{
		Model()->SetReservedItem(R_SMB_AF_STR_WRD2833, EMainPlayerFilterViewKGCmdSelectAll);
		Model()->SetNoTitleResId(R_SMB_AF_STR_WRD2830);
		}
	else if(KSmbMusicAPMainPlayerArtistListViewUid==ViewUid())			///< 傾乕僥傿僗僩堦棗夋柺
		{
		Model()->SetReservedItem(R_SMB_AF_STR_WRD2831, EMainPlayerFilterViewKGCmdSelectAll);
		Model()->SetNoTitleResId(R_SMB_AF_STR_WRD2823);
		}
	else if(KSmbMusicAPMainPlayerAlbumListViewUid==ViewUid())			///< 傾儖僶儉堦棗夋柺
		{
		Model()->SetReservedItem(R_SMB_AF_STR_WRD2832, EMainPlayerFilterViewKGCmdSelectAll);
		Model()->SetNoTitleResId(R_SMB_AF_STR_WRD2825);
		}
	}

void CSmbMusicAPMainPlayerFilterListViewMeta::SetupControlL()
	{
	// 僞僀僩儖傪撉傒崬傫偱愝掕偡傞
	SetTitleTextL(R_OT_MUSIC_MAIN_FLT_PLTYPELIST_TITLE);
	// 僕儍儞儖/傾乕僥傿僗僩/傾儖僶儉儕僗僩偺弶婜傾僀僥儉傪撉傒崬傓
	if(KSmbMusicAPMainPlayerGenreListViewUid==ViewUid())				///< 僕儍儞儖堦棗夋柺
		{
		SetTitleTextL(R_OT_MUSIC_MAIN_FLT_GENRELIST_TITLE);
//		SetTitleIconL(EMbmMusicMc_genre_icon, EMbmMusicMc_track_icon);
		}
	else if(KSmbMusicAPMainPlayerArtistListViewUid==ViewUid())			///< 傾乕僥傿僗僩堦棗夋柺
		{
		SetTitleTextL(R_OT_MUSIC_MAIN_FLT_ARTISTLIST_TITLE);
//		SetTitleIconL(EMbmMusicMc_artist_icon, EMbmMusicMc_track_icon);
		}
	else if(KSmbMusicAPMainPlayerAlbumListViewUid==ViewUid())			///< 傾儖僶儉堦棗夋柺
		{
		SetTitleTextL(R_OT_MUSIC_MAIN_FLT_ALBUMLIST_TITLE);
//		SetTitleIconL(EMbmMusicMc_album_icon, EMbmMusicMc_track_icon);
		}
	}

////////////////////////////////////////////////////////////////////////////
// 僼傿儖僞儕僗僩儌僨儖僀儀儞僩
////////////////////////////////////////////////////////////////////////////
TBool CSmbMusicAPMainPlayerFilterListViewMeta::HasParentList()
	{
	// 恊奒憌偼偁傞
	return ETrue;
	}

TBool CSmbMusicAPMainPlayerFilterListViewMeta::HasChildList()
	{
	// 傾僀僥儉偑偁傞偐偳偆偐傪僠僃僢僋
	if(0<ItemCount())
		{
		// 巕奒憌偼偁傞
		return ETrue;
		}
	else
		{
		// 巕奒憌偼側偄
		return EFalse;
		}
	}

////////////////////////////////////////////////////////////////////////////
// 僐儅儞僪幚峴
////////////////////////////////////////////////////////////////////////////
// from MSmbAfCommandBase
/**
 * 儐乕僓僐儅儞僪幚峴
 *
 * @param aCommandId [in]	僐儅儞僪ID
 */
MSmbAfCommandBase::TSmbAfCmdIdResponse CSmbMusicAPMainPlayerFilterListViewMeta::HandleCommandL(TInt aCommandId)
	{
	// 婎杮僐儅儞僪
	switch(aCommandId)
		{
		case EMainPlayerFilterViewKGCmdSelect:			// 崁栚慖戰僐儅儞僪乮抁墴偟乯
		case EMainPlayerFilterViewKGCmdChildView:		// 巕奒憌夋柺慗堏僐儅儞僪
			{
			if(0==ItemCount())
				{
				return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
				}
			// 慖戰偝傟偨傾僀僥儉傪庢摼偡傞
			CSmbMusicAPMainPlayerFilterListItem* item = CurrentItem();
			// 儊僯儏乕僐儅儞僪偑愝掕偝傟偰偄傞応崌
			if(NULL!=item && 0!=item->CommandID())
				{
				// 僐儅儞僪張棟偡傞
				return ProcessCommandL(item->CommandID());
				}
			else
				{
				// 儕僗僩僴儞僪儖庢摼偡傞
				return ProcessCommandL(EMainPlayerFilterViewKGCmdSelect);
				}
			}
//			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
		case EMainPlayerFilterViewKGCmdLongSelect:		// 崁栚慖戰僐儅儞僪乮挿墴偟乯
			{
			if(0==ItemCount())
				{
				return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
				}
			// 慖戰偝傟偨傾僀僥儉傪庢摼偡傞
			CSmbMusicAPMainPlayerFilterListItem* item = CurrentItem();
			// 儊僯儏乕僐儅儞僪偑愝掕偝傟偰偄傞応崌
			if(NULL!=item && 0!=item->CommandID())
				{
				// 僐儅儞僪張棟偡傞
				return ProcessCommandL(EMainPlayerFilterViewKGCmdLongSelectAll);
				}
			else
				{
				// 儕僗僩僴儞僪儖庢摼偡傞
				return ProcessCommandL(EMainPlayerFilterViewKGCmdLongSelect);
				}
			}
//			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
		case EMainPlayerFilterViewKGCmdClear:			// 僋儕傾乮慜夋柺乯僐儅儞僪
			break;
		case EMainPlayerFilterViewKGCmdParentView:		// 恊奒憌夋柺慗堏僐儅儞僪
			break;
		}
	return CSmbMusicAPMainPlayerFilterListView::HandleCommandL(aCommandId);
	}

/**
 * 僐儅儞僪幚峴
 *
 * @param aCommandId [in]	僐儅儞僪ID
 */
MSmbAfCommandBase::TSmbAfCmdIdResponse CSmbMusicAPMainPlayerFilterListViewMeta::ProcessCommandL(TInt aCommandId)
	{
	//
	// 僕儍儞儖/傾乕僥傿僗僩/傾儖僶儉儕僗僩僐儅儞僪
	//
	switch(aCommandId)
		{
		case EMainPlayerFilterViewKGCmdSelect:				// 僕儍儞儖/傾乕僥傿僗僩/傾儖僶儉峣傝崬傒専嶕
		case EMainPlayerFilterViewKGCmdLongSelect:			// 挿墴偟偱慖戰
			{
			TSmbMusicAPSyncEngineListSearchCondition listSearchCondition = ESmbMusicAPSyncEngineSearchIndex;
			TSmbMusicAPSyncEngineRequestListType requestListType = ESmbMusicAPSyncEngineCategoryList;
			TUid viewUid = KSmbMusicAPMainPlayerInvalidUid;
			TBool longSelect = aCommandId==EMainPlayerFilterViewKGCmdLongSelect? ETrue : EFalse;
			if(KSmbMusicAPMainPlayerGenreListViewUid==ViewUid())				///< 僕儍儞儖堦棗夋柺
				{
				requestListType = ESmbMusicAPSyncEngineCategoryList;
				viewUid = KSmbMusicAPMainPlayerArtistListViewUid;	// -> 傾乕僥傿僗僩堦棗夋柺
				}
			else if(KSmbMusicAPMainPlayerArtistListViewUid==ViewUid())			///< 傾乕僥傿僗僩堦棗夋柺
				{
				requestListType = ESmbMusicAPSyncEngineCategoryList;
				viewUid = KSmbMusicAPMainPlayerAlbumListViewUid;	// -> 傾儖僶儉堦棗夋柺
				}
			else if(KSmbMusicAPMainPlayerAlbumListViewUid==ViewUid())			///< 傾儖僶儉堦棗夋柺
				{
				requestListType = ESmbMusicAPSyncEngineSongList;
				viewUid = KSmbMusicAPMainPlayerSongListViewUid;		// -> 嬋堦棗夋柺
				longSelect = EFalse;
				}
			// 僀儀儞僩梷惂偡傞
			View()->SetEventDisabled(ETrue);
			ProcessGetListFromSearchCurrentList(aCommandId, listSearchCondition, requestListType, longSelect, viewUid);
			}
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
		case EMainPlayerFilterViewKGCmdSelectAll:			// 乽偡傋偰偺乣乿傪崁栚慖戰
		case EMainPlayerFilterViewKGCmdLongSelectAll:		// 乽偡傋偰偺乣乿傪崁栚慖戰乮挿墴偟乯
			{
			TSmbMusicAPSyncEngineListSearchCondition listSearchCondition = ESmbMusicAPSyncEngineSearchAll;
			TSmbMusicAPSyncEngineRequestListType requestListType = ESmbMusicAPSyncEngineSongList;
			TUid viewUid = KSmbMusicAPMainPlayerSongListViewUid;		// -> 嬋堦棗夋柺;
			// 僀儀儞僩梷惂偡傞
			View()->SetEventDisabled(ETrue);
			ProcessGetListFromSearchCurrentList(aCommandId, listSearchCondition, requestListType, EFalse, viewUid);
			}
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
		default:
			break;
		}
	return MSmbAfCommandBase::ESmbAfCmdIdWasNotConsumed;
	}

//////////////////////////////////////////////////////////////////////////////////////
// 旕摨婜僾儘僙僗
//////////////////////////////////////////////////////////////////////////////////////
// from MSmbMusicAPMainPlayerFilterProcessObserver

⌨️ 快捷键说明

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