smbmusicapmainplayerfilterviewmodel.cpp

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

CPP
1,747
字号
/* Copyright (C) 2006-2007 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPMainPlayerFilterViewModel.cpp
//
// Description:
//	儈儏乕僕僢僋儊僀儞僾儗僀儎
//	僼傿儖僞價儏乕儌僨儖僋儔僗
/*-------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅				|曄峏幰			|撪梕
//---------------------------------------------------------------------------
//2006/08/15		|SEMCJ嶳壀		|怴婯嶌惉
//2006/09/20		|SDNA壀嶳		|TRK9446懳墳
//2007/09/17		|SEMCJ暯壀		|D_82400015162懳墳

#include <FjAfEnv.h>
#include "SmbMusicAPMainPlayerFilterView.hrh"
#include "SmbMusicAPMainPlayerFilterViewModel.h"
#include "SmbMusicAPMainPlayerFilterView.h"
#include "SmbMusicAPMainPlayerFilterListView.h"
#include "SmbMusicAPMainPlayerUtility.h"

USING_NAMESPACE_DCM
SEMCJ_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////
// 僋儔僗偺惗惉偲攋婞
////////////////////////////////////////////////////////////////////////////
/**
 * 僼傿儖僞價儏乕儌僨儖僋儔僗偺惗惉
 *
 * @param	aPlayerEnv	[in]			儊僀儞僾儗僀儎娐嫬僋儔僗
 * @param	aSyncEngine	[in]			摨婜僄儞僕儞I/F
 */
CSmbMusicAPMainPlayerFilterViewModel* CSmbMusicAPMainPlayerFilterViewModel::NewL(CSmbMusicAPMainPlayerFilterView* aView)
	{
//	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::NewL()");
//	SmbMusicAPMainPlayerUtility::OutputLog(CAfEnv::Static()->Log(), 100000, ELogLevelNormal, KLogFmt);
	// 僀儞僗僞儞僗惗惉
	CSmbMusicAPMainPlayerFilterViewModel* self = new(ELeave) CSmbMusicAPMainPlayerFilterViewModel(aView);
	// 僋儕乕儞傾僢僾僗僞僢僋妋曐
	CleanupStack::PushL(self);
	// 僙僇儞僪僐儞僗僩儔僋僞
	self->ConstructL();
	// 僋儕乕儞傾僢僾僗僞僢僋奐曻
	CleanupStack::Pop();//self
	return self;
	};

/**
 * 僐儞僗僩儔僋僞.
 *
 * @param	aViewParam	[in]			價儏乕僷儔儊乕僞
 * @param	aPlayerEnv	[in]			儊僀儞僾儗僀儎娐嫬僋儔僗
 * @param	aSyncEngine	[in]			摨婜僄儞僕儞I/F
 */
CSmbMusicAPMainPlayerFilterViewModel::CSmbMusicAPMainPlayerFilterViewModel(CSmbMusicAPMainPlayerFilterView* aView)
	: iView(aView), iLog(CAfEnv::Static()->Log())
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::CSmbMusicAPMainPlayerFilterViewModel()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100010, ELogLevelNormal, KLogFmt);
	}

/**
 * 僙僇儞僪僐儞僗僩儔僋僞.
 *
 * @param	側偟
 */
void CSmbMusicAPMainPlayerFilterViewModel::ConstructL()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::ConstructL()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100020, ELogLevelNormal, KLogFmt);

	AppendSyncPath(ESmbMusicAPPlayerTopMenu);
	}

/**
 * 僨僗僩儔僋僞.
 *
 * @param	側偟
 */
CSmbMusicAPMainPlayerFilterViewModel::~CSmbMusicAPMainPlayerFilterViewModel()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::DeleteListViews()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100710, ELogLevelNormal, KLogFmt);
	// 夋柺楢実梡偺儕僗僩僴儞僪儖攝楍傪儕僙僢僩偡傞
    iSyncArray.Reset();
    iSyncArray.Close();
	// 専嶕僷僗偺儕僗僩價儏乕攝楍傪儕僙僢僩偡傞
	iPathArray.Reset();
	iPathArray.Close();
	// 偡傋偰偺儕僗僩價儏乕攝楍傪嶍彍偡傞
	iViewArray.ResetAndDestroy();
	iViewArray.Close();
	}

/**
 * 傾僋僥傿僽側儕僗僩價儏乕偺庢摼
 * @return					  傾僋僥傿僽側儕僗僩價儏乕
 */
CSmbMusicAPMainPlayerFilterListView* CSmbMusicAPMainPlayerFilterViewModel::ActiveListView() const
	{
	return iActiveView;
	}

/**
 * 傾僋僥傿僽側儕僗僩價儏乕偺愝掕
 * @param aViewUid	     [in] 價儏乕Uid
 * @return					  傾僋僥傿僽側儕僗僩價儏乕
 */
CSmbMusicAPMainPlayerFilterListView* CSmbMusicAPMainPlayerFilterViewModel::SetActiveChildViewL(TUid aViewUid)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::SetActiveChildViewL()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100711, ELogLevelNormal, KLogFmt);
	// 尰嵼偺傾僋僥傿僽側ListView傪庢摼偡傞
	CSmbMusicAPMainPlayerFilterListView* activeView = ActiveListView();
	// 僼僅乕僇僗傪奜偡
	if(NULL!=activeView)
		{
		activeView->DoViewDeactivated();
		}
	// 巕夋柺偺ListView傪庢摼偡傞
	CSmbMusicAPMainPlayerFilterListView* listview = FindListViewByViewUid(aViewUid);
	if(NULL==listview)
		{
		return NULL;
		}
	// 巕夋柺傪専嶕僷僗偵捛壛偟偰惍楍偡傞
	AppendFilterPath(listview);
	AdjustFilterPathL(ETrue);
	// 傾僋僥傿僽價儏乕傪曄峏偡傞
	iActiveView = listview;
	// 僼僅乕僇僗傪愝掕偡傞
	iActiveView->DoViewActivatedL();
	// 僒僽僾儗僀儎偵夋柺堏摦傪捠抦偡傞
	if(EFilteringMode==iActiveView->CommandMode())
		{
		iView->MoveViewSyncEvent(ETrue);
		}
	return iActiveView;
	}

/**
 * 傾僋僥傿僽側儕僗僩價儏乕偺愝掕
 * @param aViewUid	     [in] 價儏乕Uid
 * @return					  傾僋僥傿僽側儕僗僩價儏乕
 */
CSmbMusicAPMainPlayerFilterListView* CSmbMusicAPMainPlayerFilterViewModel::SetActiveParentView()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::SetActiveParentView()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100712, ELogLevelNormal, KLogFmt);
	// 尰嵼偺傾僋僥傿僽側ListView傪庢摼偡傞
	CSmbMusicAPMainPlayerFilterListView* activeView = ActiveListView();
	// 僼僅乕僇僗傪奜偡
	if(NULL!=activeView)
		{
		activeView->DoViewDeactivated();
		}
	// TOP儊僯儏乕偼昁恵側偺偱丄専嶕僷僗僇僂儞僩>1偱僠僃僢僋
	if(1<FilterPathCount())
		{
		// 尰嵼偺傾僋僥傿僽側ListView傪儕僙僢僩偟偰偍偔
		FilterPath(FilterPathCount()-1)->ResetListInfo();
		// 尰嵼偺傾僋僥傿僽側ListView傪専嶕僷僗偐傜奜偡
		ResetFilterPathL(FilterPathCount()-1);
		}
	if(0<FilterPathCount())
		{
		// 傾僋僥傿僽價儏乕傪曄峏偡傞
		iActiveView = FilterPath(FilterPathCount()-1);
		// 僼僅乕僇僗傪愝掕偡傞
		iActiveView->DoViewActivatedL();
		// 僒僽僾儗僀儎偵夋柺堏摦傪捠抦偡傞
		if(EFilteringMode==iActiveView->CommandMode())
			{
			iView->MoveViewSyncEvent(EFalse);
			}
		}

	//2006.10.25 TRK#12066
	ArrangeSyncPathByFilterPath();
	return iActiveView;
	}

/**
 * 嵞惗夋柺偐傜偺暅婣
 *
 * 仸巜掕偟偨儕僗僩僴儞僪儖偐傜専嶕僷僗傪嵞峔抸偡傞丅
 *   儕僗僩僴儞僪儖偑側偗傟偽儗僕儏乕儉忣曬偐傜専嶕僷僗傪嵞峔抸偡傞
 *   尰嵼偺専嶕僷僗傪徚嫀偟偰儈儏乕僕僢僋儊僯儏乕傪昞帵偟偨偄応崌偵傕棙梡壜擻
 *
 * @param[in]	aListHandle		嬋堦棗偺儕僗僩僴儞僪儖丄傑偨偼儈儏乕僕僢僋儊僯儏乕乮ESmbLocalListHandleMusicMenu乯
 * @param[in]	aIndex			傾僀僥儉偺僀儞僨僢僋僗斣崋
 */
void CSmbMusicAPMainPlayerFilterViewModel::SetFilterListViewL(TInt aListHandle, TInt aIndex, TBool /*aSync*/)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::SetFilterListViewL(%d, %d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100713, ELogLevelNormal, KLogFmt, aListHandle, aIndex);
	TUid targetViewUid;
	TUid viewUid = KSmbMusicAPMainPlayerInvalidUid;
	CSmbMusicAPMainPlayerFilterListView* listView;
	TSmbMusicAPSyncEnginePrevListInfo prevList;
	TSmbMusicAPSyncEngineListType listType;
	TInt listHandle = aListHandle;
	TInt itemIndex = aIndex;
	
	// 専嶕僷僗傪偦偺傑傑堐帩偡傞応崌	
	if(ESmbMusicAPPlayerKeep==aListHandle)
		{
		// 壗傕偟側偄
		return;
		}
		
	// 儕僗僩僴儞僪儖偑側偄応崌偼儗僕儏乕儉忣曬偐傜専嶕僷僗傪嵞峔抸偡傞
	if(ESmbLocalListHandleInvalid==aListHandle)
		{
		// 儗僕儏乕儉忣曬傪庢摼偡傞
		TSmbMusicAPSyncEngineResumeInfo resumeInfo;
		if(KErrNone==iView->SyncModel().GetResumeInfo(resumeInfo))
			{
			if(EFalse!=resumeInfo.iAllShuffle)
				{
				listHandle = ESmbLocalListHandleMusicMenu;
				itemIndex = 1;
				}
			else
				{
				listHandle = resumeInfo.iPlayList.iListHandle;
				itemIndex = resumeInfo.iPlayList.iIndex;
				}
			}
		// 儗僕儏乕儉忣曬傕庢摼偱偒側偄応崌偼儈儏乕僕僢僋儊僯儏乕傪昞帵偡傞
		else
			{
			listHandle = ESmbLocalListHandleMusicMenu;
			itemIndex = 0;
			}
		}
	// 尰嵼偺價儏乕偺儕僗僩僴儞僪儖偱摨偠偱偁傟偽丄傾僋僥傿僽僼僅乕僇僗側偳偺挷惍傪偡傞
	else if(ActiveListView()->ListHandle()==aListHandle)
		{
		// 僼僅乕僇僗傪愝掕偡傞
		// 2006.09.13 TRK#8560
		ActiveListView()->SetActiveIndex(itemIndex);
		if(KSmbMusicAPMainPlayerSongListViewUid==ActiveListView()->ViewUid()
		|| KSmbMusicAPMainPlayerPLSongListViewUid==ActiveListView()->ViewUid())
			{
			//2006.09.21 TRK#9528
			//ActiveListView()->SetDefaultIndex(itemIndex);
			TInt playListHandle;
			TInt playListItem;
			if(EFalse!=iView->CurrentPlayList(playListHandle, playListItem))
				{
				if(playListHandle==ActiveListView()->ListHandle())
					{
					ActiveListView()->SetDefaultIndex(playListItem);
					}
				}
			//2006.10.19 傾僀僥儉悢傪愝掕偟側偍偡
			ActiveListView()->SetItemCount(iView->SyncModel().GetItemCount(ActiveListView()->ListHandle()));
			}
// Add-S PTX-824 暯壀 2007.07.02	儔僀僙儞僗忬懺峏怴捠抦偺庴怣桳柍	
		if (EFalse == ActiveListView()->View()->IsLicenseUpdate())
			{
// Add-E PTX-824 暯壀 2007.07.02			
			// 僼僅乕僇僗埵抲傪偁傢偣傞
			TInt visibleBegin = ActiveListView()->ListBox()->VisibleItemIndex()+1;
			TInt topIndex = ActiveListView()->CalculateTopIndex(visibleBegin, itemIndex);
			ActiveListView()->ListBox()->SetTopItemIndex(topIndex);
			ActiveListView()->ListBox()->SetCurrentItemIndex(itemIndex);
			// 枹庢摼偺傾僀僥儉偑偁傟偽撉傒崬傓
			if(0<topIndex)
				{
				topIndex--;
				}
			ActiveListView()->PostRequestGetListItems(topIndex, ActiveListView()->ItemCount());
			
			ActiveListView()->AdjustActiveIndex();
			// 懠偺儕僗僩價儏乕夋柺偺傾僋僥傿僽僼僅乕僇僗傪愝掕偡傞
/* PTX810偱偼嬋堦棗夋柺偩偗偵傾僋僥傿僽僼僅乕僇僗傪愝掕偡傞偺偱偙偺張棟偼昁梫側偄丅
			for(TInt index=0;index<FilterPathCount()-1;index++)
				{
				listView = FilterPath(index);
				// 僼僅乕僇僗傪愝掕偡傞
				listView->SetDefaultIndex(listView->ListBox()->CurrentItemIndex());
				listView->AdjustActiveIndex();
				}
*/
			//2006.09.30
			ActiveListView()->DoViewActivatedL();
			return;
// Add-S PTX-824 暯壀 2007.07.02	儔僀僙儞僗忬懺峏怴捠抦庴怣		
			}
// Add-E PTX-824 暯壀 2007.07.02
		}
		
	// 専嶕僷僗傪儕僙僢僩偡傞
	// 儈儏乕僕僢僋儊僯儏偼巆偟偰偍偔
    ResetFilterPathL(1);
	
	// 儈儏乕僕僢僋儊僯儏乕昞帵偺応崌
	if(ESmbLocalListHandleMusicMenu==listHandle)
		{
		targetViewUid = KSmbMusicAPMainPlayerMusicMenuViewUid;
		// 2006.09.13 TRK#8845
		// 儈儏乕僕僢僋儊僯儏乕偺僀儞僨僢僋僗傪愝掕偟偰儖乕僾傪敳偗傞
		FilterPath(0)->SetActiveIndex(itemIndex);
//		FilterPath(0)->SetDefaultIndex(itemIndex);
		FilterPath(0)->AdjustActiveIndex();
		}
	// 2006.09.18 TRK#8996
	else if(ESmbLocalListHandlePLType==listHandle)
		{
		// ADD-S TRK11246	
		// 儈儏乕僕僢僋儊僯儏乕偺僀儞僨僢僋僗(僾儗僀儕僗僩=5)傪愝掕偡傞
		FilterPath(0)->SetActiveIndex(5);
		FilterPath(0)->AdjustActiveIndex();
		// ADD-E TRK11246
			
	    // 夋柺傪庢摼偡傞
	    targetViewUid = KSmbMusicAPMainPlayerPLTypeListViewUid;
		listView = FindListViewByViewUid(targetViewUid);
		if(NULL!=listView)
			{
			// 僀儞僨僢僋僗傪愝掕偡傞
			listView->SetActiveIndex(itemIndex);
			listView->AdjustActiveIndex();
		    // 専嶕僷僗偺儈儏乕僕僢僋儊僯儏乕偺屻傠偵夋柺傪憓擖偡傞
			InsertFilterPath(1, listView);
			}
		}
	// 2006.09.23 曐懚愭暿慖戰偺応崌
	else if(ESmbLocalListHandleMemType==listHandle)
		{
		// ADD-S TRK11246		
		// 儈儏乕僕僢僋儊僯儏乕偺僀儞僨僢僋僗(曐懚儊儌儕暿=9)傪愝掕偡傞
		FilterPath(0)->SetActiveIndex(9);
		FilterPath(0)->AdjustActiveIndex();
		// ADD-E TRK11246		
				
	    // 夋柺傪庢摼偡傞
	    targetViewUid = KSmbMusicAPMainPlayerMemTypeListViewUid;
		listView = FindListViewByViewUid(targetViewUid);
		if(NULL!=listView)
			{
			// 僀儞僨僢僋僗傪愝掕偡傞
			listView->SetActiveIndex(itemIndex);
			listView->AdjustActiveIndex();
		    // 専嶕僷僗偺儈儏乕僕僢僋儊僯儏乕偺屻傠偵夋柺傪憓擖偡傞

⌨️ 快捷键说明

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