smbmusicapmainplayerfilterlistviewsong.cpp

来自「symbian」· C++ 代码 · 共 1,234 行 · 第 1/3 页

CPP
1,234
字号
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPMainPlayerFilterListViewSong.cpp
//
// Description: 
//  CSmbMusicAPMainPlayerFilterListViewSong class source.
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅          |曄峏幰     |撪梕
//--------------+-----------+----------------------------------------------
//2006/08/16	|SDNA嶳壀	|怴婯嶌惉
//2006/09/12	|SDNA壀嶳	|TRK6892懳墳
//2006/09/12	|SDNA彫椦	|TRK8696懳墳
//2007/05/18	|SEMCJ暯壀	|PTX-824(TRK-712)懳墳
//2007/06/27	|SEMCJ暯壀	|僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
//2007/07/24	|SEMCJ暯壀	|D_82400007625懳墳
//2007/07/25	|SEMCJ暯壀	|D_82400006405, D_82400004469懳墳
//2007/08/29	|SEMCJ暯壀	|D_82400010412懳墳
//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 <SmbMusicAPSongInfoExternalInterface.h>
#include "SmbMusicAPMainPlayerFilterView.hrh"
#include "SmbMusicAPMainPlayerFilterView.h"
#include "SmbMusicAPMainPlayerFilterListView.h"
#include "SmbMusicAPMainPlayerFilterListViewSong.h"
#include "SmbMusicAPMainPlayerFilterListItem.h"
#include "SmbMusicAPMainPlayerFilterSyncServerController.h"
#include "SmbMusicAPMainPlayerFilterProcessDeleteOne.h"

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

SEMCJ_NAMESPACE_BEGIN

/**
 * 嬋堦棗儕僗僩僋儔僗
 *	KSmbMusicAPMainPlayerSongListViewUid
 */

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

/**
 * 僐儞僗僩儔僋僞
 *
 * @param aView [in]	僼傿儖僞價儏乕
 * @return				嬋堦棗儕僗僩僋儔僗
 */
CSmbMusicAPMainPlayerFilterListViewSong::CSmbMusicAPMainPlayerFilterListViewSong()
				 							: iLog(CAfEnv::Static()->Log())
	{
	}

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

	// 儕僗僩儃僢僋僗僞僀僾偺弶婜抣傪庢摼偡傞
	iViewStyle = SmbPGMusic::ListViewStyleL(View()->PropAgent());
	// 儕僗僩儃僢僋僗僞僀僾傪愝掕偡傞
	ListBox()->SetListBoxFormat(ListBoxFormat());
	// 儕僗僩儃僢僋僗僆儁儗乕僔儑儞儌乕僪傪愝掕偡傞
	ListBox()->SetOperationMode(CSkonRichListBoxBase::EOperationNormal);
	}

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

//////////////////////////////////////////////////////////////////////////////////////
// 弶婜愝掕
//////////////////////////////////////////////////////////////////////////////////////
void CSmbMusicAPMainPlayerFilterListViewSong::SetupModelL()
	{
	}

void CSmbMusicAPMainPlayerFilterListViewSong::SetupControlL()
	{
	// 僞僀僩儖傪撉傒崬傫偱愝掕偡傞
	SetTitleTextL(R_OT_MUSIC_MAIN_FLT_SONGLIST_TITLE);
	}

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

TBool CSmbMusicAPMainPlayerFilterListViewSong::HasChildList()
	{
	// 巕奒憌偼側偄
	return EFalse;
	}

////////////////////////////////////////////////////////////////////////////
// 僐儅儞僪幚峴
////////////////////////////////////////////////////////////////////////////
// from MSmbAfCommandBase
/**
 * 儐乕僓僐儅儞僪幚峴
 *
 * @param aCommandId [in]	僐儅儞僪ID
 */
MSmbAfCommandBase::TSmbAfCmdIdResponse CSmbMusicAPMainPlayerFilterListViewSong::HandleCommandL(TInt aCommandId)
	{
	// 婎杮僐儅儞僪
	switch(aCommandId)
		{
		case EMainPlayerFilterViewKGCmdSelect:			// 崁栚慖戰僐儅儞僪乮抁墴偟乯
		case EMainPlayerFilterViewKGCmdPlay:			// 亂嵞惗亃	
// Add-S PTX-824懳墳 2007.06.22 暯壀
		case EMainPlayerFilterViewKGCmdLongSelect:		// 崁栚慖戰僐儅儞僪乮挿墴偟乯
// Add-E PTX-824懳墳 2007.06.22 暯壀
			return ProcessCommandL(EMainPlayerFilterViewKGCmdPlay);

		case ECmdFilterViewChangeListMode:				// 僕儍働僢僩昞帵愗懼
		case ECmdFilterViewShowDetailInfomation:		// 徻嵶忣曬昞帵
		case ECmdFilterViewShowJacketImage:				// 夋憸昞帵
		case ECmdFilterViewShowLyricImage:				// 壧帉昞帵
		case ECmdFilterViewDeleteSong:					//堦嬋嶍彍
		case ECmdFilterViewAddEntryOne:
		case ECmdFilterViewAddEntryMultiple:
		case ECmdFilterViewAddEntryAll:
			{
			ProcessCommandL(aCommandId);
			break;
			}

		case EMainPlayerFilterViewKGCmdChildView:		// 巕奒憌夋柺慗堏僐儅儞僪
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
// Del-S PTX-824懳墳 2007.06.22 暯壀
//		case EMainPlayerFilterViewKGCmdLongSelect:		// 崁栚慖戰僐儅儞僪乮挿墴偟乯
//			break;
// Del-E PTX-824懳墳 2007.06.22 暯壀
		case EMainPlayerFilterViewKGCmdClear:			// 僋儕傾乮慜夋柺乯僐儅儞僪
			break;
		case EMainPlayerFilterViewKGCmdParentView:		// 恊奒憌夋柺慗堏僐儅儞僪
			break;
		}
	return CSmbMusicAPMainPlayerFilterListView::HandleCommandL(aCommandId);
	}

/**
 * 僐儅儞僪幚峴
 *
 * @param aCommandId [in]	僐儅儞僪ID
 */
MSmbAfCommandBase::TSmbAfCmdIdResponse CSmbMusicAPMainPlayerFilterListViewSong::ProcessCommandL(TInt aCommandId)
	{
	//2006.09.28 僉乕楢懪帪偺懳墳
	if(NULL!=ProcessObj() && ProcessObj()->InService())
		{
		return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
		}
	//
	// 嬋堦棗僐儅儞僪
	//
	switch(aCommandId)
		{
		case EMainPlayerFilterViewKGCmdPlay:			// 嬋堦棗儕僗僩嵞惗
			{
			// 嵞惗晄壜偐偳偆偐傪僠僃僢僋偡傞
			CSmbMusicAPMainPlayerFilterListItem* item = CurrentItem();
			if(NULL!=item && EFalse==item->IsDisabled())
				{
// Del-S PTX-824(TRK-712)懳墳丂暯壀
//				// 傾僋僥傿僽僼僅乕僇僗傪愝掕偟偰偍偔
//				SetDefaultIndex(CurrentItemIndex());
//				ListBox()->SetDefaultItemIndex(CurrentItemIndex());
// Del-E PTX-824(TRK-712)懳墳丂暯壀
				//ListBox()->SetDefaultItemEmphasis(ETrue);
				
				TSmbMusicAPMainPlayerPrmPlayList param;
				param.iListHandle	= ListHandle();
				param.iCount		= ItemCount();
				param.iIndex		= CurrentItemIndex();
				param.iShuffle		= EFalse;
				param.iListType		= SongListType();
				// 嵞惗奐巒偡傞
// Mod-S PTX-824(TRK-712)懳墳丂暯壀
//				View()->StartPlayViewL(KSmbMusicAPMainPlayerPlaySongListMsgUid, param);
				if (EFalse != View()->StartPlayViewL(KSmbMusicAPMainPlayerPlaySongListMsgUid, param))
					{
					// 傾僋僥傿僽僼僅乕僇僗傪愝掕偟偰偍偔
					SetDefaultIndex(CurrentItemIndex());
					ListBox()->SetDefaultItemIndex(CurrentItemIndex());
					}
// Mod-E PTX-824(TRK-712)懳墳丂暯壀
				}
// Add-S PTX-824 暯壀丂2007.06.27 僒僽僗僋儕僾僔儑儞偺僌儗乕傾僂僩懳墳
// 僆僼儔僀儞嬋/UIM惂尷嬋偱側偄丄僒僽僗僋儕僾僔儑儞嬋偱婜尷愗傟/CP忣曬側偟嬋偼僉乕僈僀僟儞僗偵乽嵞惗乿傪昞帵
// Mod-S PTX-824 D_82400007625懳墳丂暯壀
//			else if (NULL != item && (item->IsDisabled() & ESmbMusicAPSyncEngineUIMLimit)
//						     	  && (item->IsDisabled() & ESmbMusicAPSyncEngineOffLine))
			else if (NULL != item && ((item->IsDisabled() & ESmbMusicAPSyncEngineUIMLimit)
						     	  	|| (item->IsDisabled() & ESmbMusicAPSyncEngineOffLine)))
// Mod-E PTX-824 D_82400007625懳墳丂暯壀
				{
				// 壗傕昞帵偟側偄
				}
			else if (NULL != item && ESmbMusicAPSyncEngineLimitSubscription == item->Limitation()
								  &&  ((item->IsDisabled() & ESmbMusicAPSyncEngineNoCpInfo)
								  	|| (item->IsDisabled() & ESmbMusicAPSyncEngineOverTimeLimit)))
				{
				TSmbMusicAPMainPlayerPrmPlayList param;
				param.iListHandle	= ListHandle();
				param.iCount		= ItemCount();
				param.iIndex		= CurrentItemIndex();
				param.iShuffle		= EFalse;
				param.iListType		= SongListType();
				// 嵞惗奐巒偡傞
				if (EFalse != View()->StartPlayViewL(KSmbMusicAPMainPlayerPlaySongListMsgUid, param))
					{
					// 傾僋僥傿僽僼僅乕僇僗傪愝掕偟偰偍偔
					SetDefaultIndex(CurrentItemIndex());
					ListBox()->SetDefaultItemIndex(CurrentItemIndex());
					}
				}
// Add-E PTX-824 暯壀丂2007.06.27
			}
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
		case ECmdFilterViewChangeListMode:				// 僕儍働僢僩昞帵愗懼
			{
			ProcessToggleViewFormatL();
			break;
			}
		case ECmdFilterViewShowDetailInfomation:		// 徻嵶忣曬昞帵
			{
			ProcessShowDetailInformationL();
			break;
			}
		case ECmdFilterViewShowJacketImage:				// 夋憸昞帵
		case ECmdFilterViewShowLyricImage:				// 壧帉昞帵
			{
			ProcessShowImageViewL(aCommandId);
			break;
			}
		case ECmdFilterViewDeleteSong:					//堦嬋嶍彍
			{
			//2006.10.18 TRK#11638
			View()->StartProcessesWithHoldApp();
			ProcessDeleteOne(aCommandId, CurrentItemIndex(), ESmbMusicAPMainPlayerDelSongStd);
			break;
			}
		case ECmdFilterViewAddEntryOne:
		case ECmdFilterViewAddEntryMultiple:
		case ECmdFilterViewAddEntryAll:
			{
			// 婲摦僷儔儊乕僞嶌惉
			TSmbMusicAPMainPlayerPrmRegister param;
			param.iKind = ESmbMusicAPMainPlayerRegiterEntryKind;
			if(ECmdFilterViewAddEntryOne==aCommandId)
				{
				param.iType = ESmbMusicAPMainPlayerSelectionOne;
				}
			else if(ECmdFilterViewAddEntryMultiple==aCommandId)
				{
				param.iType = ESmbMusicAPMainPlayerSelectionMultiple;
				}
			else if(ECmdFilterViewAddEntryAll==aCommandId)
				{
				param.iType = ESmbMusicAPMainPlayerSelectionAll;
				}
			param.iListHandle = ListHandle();
			param.iIndex = CurrentItemIndex();
			param.vparam.SetReturnView(*View());
			TPckgBuf<TSmbMusicAPMainPlayerPrmRegister> parambuf(param);
			// 僾儗僀儕僗僩慖戰傊愗懼偊傞丅
			View()->ChangeViewL(ESmbMusicAPMainPlayerPLSelectViewId, KSmbMusicAPMainPlayerRegisterMsgUid, parambuf);
			}
		default:
			break;
		}
	return MSmbAfCommandBase::ESmbAfCmdIdWasNotConsumed;
	}

/**
 * 儕僗僩昞帵愗傝懼偊僐儅儞僪
 */
void CSmbMusicAPMainPlayerFilterListViewSong::ProcessToggleViewFormatL()
	{
	// 堦峴昞帵儌乕僪偱偁傟偽僒儉僱僀儖昞帵儌乕僪偵愗傝懼偊傞
	if(CSkonMusicListBox::EFormatNormal==ListBox()->ListBoxFormat())
		{
		SetListBoxFormat(CSkonMusicListBox::EFormatThumbnail);
		}
	// 僒儉僱僀儖昞帵儌乕僪偱偁傟偽堦峴昞帵儌乕僪偵愗傝懼偊傞
	else
		{
		SetListBoxFormat(CSkonMusicListBox::EFormatNormal);
		}
	// 夋柺傪嵞昤夋偡傞
	HandleControlStatusUpdatedL();

	// 儌乕僪傪愗傝懼偊偨応崌偵丄懌傝側偄傾僀僥儉傪曗廩偡傞丅
	ProcessLoadListItems(ECmdFilterViewGetListItems);
	}

/**
 * 徻嵶忣曬昞帵僐儅儞僪
 */
void CSmbMusicAPMainPlayerFilterListViewSong::ProcessShowDetailInformationL()
	{
	// 傾僋僥傿僽側價儏乕偺儌僨儖傪庢摼偡傞
	if(0<ItemCount())	// 儕僗僩偵傾僀僥儉偑偁傞応崌
		{
		TSmbMusicAPSongInfoStartParam param;
		param.SetReturnView(*View());
		param.iSongID      = View()->SyncModel().GetSongID(ListHandle(), CurrentItemIndex());// 徻嵶忣曬昞帵傪峴偆嬋ID
// Mod-S PTX-824懳墳丂暯壀
//		param.iEditSelect  = ETrue;		// 曇廤壜斲傪愝掕偡傞
		param.iEditSelect  = EFalse;		// 儊僀儞僾儗僀儎乕偐傜偼曇廤晄壜
// Mod-E PTX-824懳墳丂暯壀
		param.iWebToSelect = ETrue;		// WebTo壜斲傪愝掕偡傞
		TSmbMusicAPSongInfoStartParamBuf paramBuf(param);
		View()->StartChildAppL(KSmbMusicAPSongInfoUid, KSmbMusicAPSongInfoDetailViewUid, KSmbMusicAPSongInfoStartUid, paramBuf);
		}
	}
	
/**
 * 夋憸昞帵僐儅儞僪
 */
void CSmbMusicAPMainPlayerFilterListViewSong::ProcessShowImageViewL(TInt aCommandId)
	{
	if(0<ItemCount())	// 儕僗僩偵傾僀僥儉偑偁傞応崌
		{
		// 婲摦僷儔儊乕僞嶌惉
		TSmbMusicAPMainPlayerPrmImageDisp param;
		param.iListHandle = ListHandle();
		param.iIndex      = CurrentItemIndex();
		param.kind = ECmdFilterViewShowJacketImage==aCommandId ? ESmbMusicAPMainPlayerImageKindJacket : ESmbMusicAPMainPlayerImageKindSongWords;
		param.vparam.SetReturnView(*View());
		TPckgBuf<TSmbMusicAPMainPlayerPrmImageDisp> parambuf(param);
		// 夋憸昞帵價儏乕傊愗懼偊傞丅
		View()->ChangeViewL(ESmbMusicAPMainPlayerImageViewId, KSmbMusicAPMainPlayerChangeViewMsgUid, parambuf);
		}
	}

//////////////////////////////////////////////////////////////////////////////////////
// 旕摨婜僾儘僙僗
//////////////////////////////////////////////////////////////////////////////////////
// from MSmbMusicAPMainPlayerFilterProcessObserver
void CSmbMusicAPMainPlayerFilterListViewSong::ProcessComplete(TInt aResult, CSmbMusicAPMainPlayerFilterProcess& aProcess)
	{
	if( NULL!=ProcessObj() && &aProcess==ProcessObj() &&
		CSmbMusicAPMainPlayerFilterProcess::EProcessTypeDeleteOne == aProcess.GetProcessType())
		{
		// 幚峴拞偺僐儅儞僪傪僠僃僢僋偡傞
		switch(aProcess.GetRequestOwnerInfo())
			{
			case ECmdFilterViewDeleteSong:					//堦嬋嶍彍
				{
				//2006.10.01 TRK#7270
				CSmbMusicAPMainPlayerFilterListView::HandleDialogCommandL( ECloseModelessDialog, R_DL_MUSIC_MAIN_FLT_PROGRESS_MP04P001_SINGULAR);
				// 婎掙僋儔僗偱姰椆張棟偡傞
				CSmbMusicAPMainPlayerFilterListView::ProcessComplete(aResult,aProcess);
				ProcessLoadListItems(ECmdFilterViewGetListItems);
				}
				return;
			}
		}
	// 婎掙僋儔僗偱姰椆張棟偡傞
	CSmbMusicAPMainPlayerFilterListView::ProcessComplete(aResult, aProcess);
	}

// Add-S PTX-824 D_82400013891懳墳 暯壀 2007.09.11
void CSmbMusicAPMainPlayerFilterListViewSong::SetPrevListInfo(TSmbMusicAPSyncEnginePrevListInfo aPrevList)
	{
	iPrevList = aPrevList;
	}
// Add-E PTX-824 D_82400013891懳墳 暯壀 2007.09.11

/**

⌨️ 快捷键说明

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