smbmusicapmainplayerfilterviewmodel.cpp

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

CPP
1,747
字号
		|| KSmbMusicAPMainPlayerMemTypeListViewUid==viewUid)
			{
			continue;
			}
		viewcount++;
		}
	return viewcount;
*/
	return FilterPathCount() - 1;
	}

/**
 * 専嶕僷僗偺儕僗僩儃僢僋僗傪VirtualSpace忋偵惍楍偡傞丅
 *
 */
void CSmbMusicAPMainPlayerFilterViewModel::AdjustFilterPathL(TBool aUpdateStatus)
	{
	// 埵抲傪嵞寁嶼偡傞
	TInt count=FilterPathCount();
	for(TInt index=0;index<count;index++)
		{
		// 埵抲傪堏摦偡傞
		FilterPath(index)->SetPosition(index);
		if(EFalse!=aUpdateStatus)
			{
			// 僐儞僩儘乕儖偵愝掕偝傟偨撪梕傪斀塮偡傞
			FilterPath(index)->HandleControlStatusUpdatedL();
			}
		}
	//2006.10.14 TRK#10229
	ArrangeSyncPathByFilterPath();
	}

/**
 * 巜掕偝傟偨僀儞僨僢僋僗埲崀偺専嶕僷僗偺儕僗僩儃僢僋僗傪儕僙僢僩偡傞丅
 *
 * @param aIndex     [in] 僀儞僨僢僋僗
 */
void CSmbMusicAPMainPlayerFilterViewModel::ResetFilterPathL(TInt aResetIndex)
	{
	// 巜掕偝傟偨僀儞僨僢僋僗埲崀偵専嶕僷僗偑側偗傟偽張棟偟側偄
	TInt pathCount=FilterPathCount();
	if(pathCount<=aResetIndex)
		{
		return;
		}
	
	// 僐儞僩儘乕儖傪堏摦偟偰専嶕僷僗偐傜庢傝彍偔
	while(FilterPathCount()>aResetIndex)
		{
		// 僞僀僩儖僶乕偲儕僗僩儃僢僋僗傪尒偊側偄偲偙傠偵堏摦偡傞
		FilterPath(aResetIndex)->SetPosition(-1);
		// 僐儞僩儘乕儖偵愝掕偝傟偨撪梕傪斀塮偡傞
		FilterPath(aResetIndex)->HandleControlStatusUpdatedL();
		// 専嶕僷僗偐傜庢傝彍偔
		DeleteFilterPath(aResetIndex);
		}
	}

/**
 * 儕僗僩價儏乕偺庢摼
 * @param aIndex	     [in] 僀儞僨僢僋僗
 * @return					  儕僗僩價儏乕
 */
CSmbMusicAPMainPlayerFilterListView* CSmbMusicAPMainPlayerFilterViewModel::ListView(TInt aIndex) const
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::ListView(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100720, ELogLevelNormal, KLogFmt, aIndex);
	if(0<iViewArray.Count() && iViewArray.Count()>aIndex)
		{
		return iViewArray[aIndex];
		}
	return NULL;
	}

/**
 * ViewUid偐傜儕僗僩價儏乕偺庢摼
 * @param aViewUid	     [in] 價儏乕ID
 * @return					  儕僗僩價儏乕
 */
CSmbMusicAPMainPlayerFilterListView* CSmbMusicAPMainPlayerFilterViewModel::FindListViewByViewUid(TUid aViewUid) const
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::FindListViewByViewUid(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100730, ELogLevelNormal, KLogFmt, aViewUid.iUid);
	TInt count=ListViewCount();
	for(TInt index=0;index<count;index++)
		{
		if(aViewUid==ListView(index)->ViewUid())
			{
			return ListView(index);
			}
		}
	return NULL;
	}

/**
 * 儕僗僩僴儞僪儖偐傜儕僗僩價儏乕偺庢摼
 * @param aListHandle	     [in] 儕僗僩僴儞僪儖
 * @return					  儕僗僩價儏乕
 */
CSmbMusicAPMainPlayerFilterListView* CSmbMusicAPMainPlayerFilterViewModel::FindListViewByListHandle(TInt aListHandle) const
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::FindListViewByListHandle(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100730, ELogLevelNormal, KLogFmt, aListHandle);
	TInt count=ListViewCount();
	for(TInt index=0;index<count;index++)
		{
		if(aListHandle==ListView(index)->ListHandle())
			{
			return ListView(index);
			}
		}
	return NULL;
	}

/**
 * 儕僗僩價儏乕悢偺庢摼
 * @return					  儕僗僩價儏乕偺悢
 */
TInt CSmbMusicAPMainPlayerFilterViewModel::ListViewCount() const
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::ListViewCount()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100740, ELogLevelNormal, KLogFmt);
	return iViewArray.Count();
	}
	
/**
 * 儕僗僩價儏乕偺捛壛
 * @param aListView	     [in] 儕僗僩價儏乕
 */
void CSmbMusicAPMainPlayerFilterViewModel::AppendListView(CSmbMusicAPMainPlayerFilterListView* aListView)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::AppendListView()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100750, ELogLevelNormal, KLogFmt);
	TInt err = iViewArray.Append(aListView);
	if(KErrNone!=err)
		{
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::AppendListView(0x%08x) error=%d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100751, ELogLevelHighest, KLogFmt, aListView, err);
		User::Leave(err);
		}
	}

/**
 * 儕僗僩價儏乕偺儕僙僢僩
 */
void CSmbMusicAPMainPlayerFilterViewModel::ResetListView()
	{
	// 偡傋偰偺儕僗僩價儏乕攝楍傪嶍彍偡傞
	iViewArray.ResetAndDestroy();
	}

/**
 * 専嶕僷僗偺儕僗僩價儏乕庢摼
 * @param aIndex	     [in] 僀儞僨僢僋僗
 * @return					  儕僗僩價儏乕
 */
CSmbMusicAPMainPlayerFilterListView* CSmbMusicAPMainPlayerFilterViewModel::FilterPath(TInt aIndex) const
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::FilterPath(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100760, ELogLevelNormal, KLogFmt, aIndex);
	if(0<iPathArray.Count() && iPathArray.Count()>aIndex)
		{
		return iPathArray[aIndex];
		}
	return NULL;
	}
	
/**
 * 専嶕僷僗偺儕僗僩價儏乕悢庢摼
 * @return					  儕僗僩價儏乕偺悢
 */
TInt CSmbMusicAPMainPlayerFilterViewModel::FilterPathCount() const
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::FilterPathCount()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100770, ELogLevelNormal, KLogFmt);
	return iPathArray.Count();
	}
	
/**
 * 専嶕僷僗偵儕僗僩價儏乕憓擖
 * @param aListView	     [in] 儕僗僩價儏乕
 */
void CSmbMusicAPMainPlayerFilterViewModel::InsertFilterPath(TInt aIndex, CSmbMusicAPMainPlayerFilterListView* aListView)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::InsertFilterPath(%d, 0x%08x)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100780, ELogLevelNormal, KLogFmt, aIndex, aListView);
	TInt err = iPathArray.Insert(aListView, aIndex);
	if(KErrNone!=err)
		{
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::InsertFilterPathL(%d, 0x%08x) error=%d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100781, ELogLevelHighest, KLogFmt, aIndex, aListView, err);
		User::Leave(err);
		}
	}

/**
 * 専嶕僷僗偵儕僗僩價儏乕捛壛
 * @param aListView	     [in] 儕僗僩價儏乕
 */
void CSmbMusicAPMainPlayerFilterViewModel::AppendFilterPath(CSmbMusicAPMainPlayerFilterListView* aListView)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::AppendFilterPath(0x%08x)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100790, ELogLevelNormal, KLogFmt, aListView);
	TInt err = iPathArray.Append(aListView);
	if(KErrNone!=err)
		{
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::AppendFilterPath(0x%08x) error=%d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100791, ELogLevelHighest, KLogFmt, aListView, err);
		User::Leave(err);
		}
	}

/**
 * 専嶕僷僗偺儕僗僩價儏乕嶍彍
 * @param aListView	     [in] 儕僗僩價儏乕
 */
void CSmbMusicAPMainPlayerFilterViewModel::DeleteFilterPath(TInt aIndex)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::DeleteFilterPath(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100790, ELogLevelNormal, KLogFmt, aIndex);
	if(iPathArray.Count()>aIndex)
		{
		iPathArray.Remove(aIndex);
		}
	}

////////////////////////////////////////////////////////////////////////////
// 夋柺摨婜乮僒僽僾儗僀儎偲偺楢実乯
////////////////////////////////////////////////////////////////////////////
/**
 * 専嶕夋柺撪偱巕奒憌偺儕僗僩儃僢僋僗傊帇揰愗懼傪峴偭偨
 */
void CSmbMusicAPMainPlayerFilterViewModel::ChildPositionSyncPath(TInt aListHandle)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::ChildPositionSyncPath(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100800, ELogLevelNormal, KLogFmt, aListHandle);
	//2006.09.21 TRK#9459
	// 愭摢偑儈儏乕僕僢僋儊僯儏乕偺応崌
	if(ESmbMusicAPPlayerTopMenu==SyncPath(0))
		{
		// 慜偲摨偠僴儞僪儖偼捛壛偟側偄
		if(aListHandle!=SyncPath(SyncPathCount()-1))
			{
			AppendSyncPath(aListHandle);
			}
		}
	//偙偺応崌偼儕僗僩僴儞僪儖偩偗傪曐帩偟偰偍偄偰丄抂枛僆乕僾儞帪偵専嶕僷僗傪嵞峔抸偡傞
	else
		{
		// 儕僗僩僴儞僪儖傪嵎偟懼偊傞
		iSyncArray.Reset();
		AppendSyncPath(aListHandle);
		}
	}

/**
 * 専嶕夋柺撪偱恊奒憌偺儕僗僩儃僢僋僗傊帇揰愗懼傪峴偭偨
 */
void CSmbMusicAPMainPlayerFilterViewModel::ParentPositionSyncPath(TInt aListHandle)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::ParentPositionSyncPath(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100810, ELogLevelNormal, KLogFmt, aListHandle);
	//2006.09.21 TRK#9459
	// 愭摢偑儈儏乕僕僢僋儊僯儏乕偺応崌
	if(ESmbMusicAPPlayerTopMenu==SyncPath(0))
		{
		// 愭摢偺儈儏乕僕僢僋儊僯儏乕偼嶍彍偟側偄
		if(1>=SyncPathCount())
			{
			return;
			}
		// 摨婜梡専嶕僷僗偺嵟屻偺僷僗傪庢傝彍偔
		DeleteSyncPath(SyncPathCount()-1);
		// 恊儕僗僩偑摨婜梡専嶕僷僗偲堎側偭偰偄偨傜嵎偟懼偊傞
		if(aListHandle!=SyncPath(SyncPathCount()-1))
			{
			DeleteSyncPath(SyncPathCount()-1);
			AppendSyncPath(aListHandle);
			}
		}
	//偙偺応崌偼儕僗僩僴儞僪儖偩偗傪曐帩偟偰偍偄偰丄抂枛僆乕僾儞帪偵専嶕僷僗傪嵞峔抸偡傞
	else
		{
		// 儕僗僩僴儞僪儖傪嵎偟懼偊傞
		iSyncArray.Reset();
		AppendSyncPath(aListHandle);
		}
	}

/**
 * 専嶕僷僗偐傜摨婜梡専嶕僷僗傪嶌傝捈偡
 */
void CSmbMusicAPMainPlayerFilterViewModel::ArrangeSyncPathByFilterPath()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::ArrangeSyncPathByFilterPath()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100820, ELogLevelNormal, KLogFmt);
	// 摨婜梡専嶕僷僗傪儕僙僢僩偡傞
    iSyncArray.Reset();
    AppendSyncPath(ESmbMusicAPPlayerTopMenu);
    
    // 専嶕僷僗偐傜摨婜梡専嶕僷僗傪嶌惉偡傞
	TInt pathCount=FilterPathCount();
	for(TInt index=0;index<pathCount;index++)
		{
		TInt listHandle = FilterPath(index)->ListHandle();
		switch(listHandle)
			{
			case ESmbLocalListHandleMusicMenu:
//			    AppendSyncPath(ESmbMusicAPPlayerTopMenu);
				break;
			case ESmbLocalListHandlePLType:
			    AppendSyncPath(ESmbMusicAPPlayerPlayListMenu);
				break;
			case ESmbLocalListHandleMemType:		
			    AppendSyncPath(ESmbMusicAPPlayerMemoryMenu);
				break;
			default:
			    AppendSyncPath(listHandle);
				break;
			}
		}
	}

/**
 * 摨婜梡専嶕僷僗偐傜専嶕僷僗傪嶌傝捈偡
 */
void CSmbMusicAPMainPlayerFilterViewModel::ArrangeFilterPathBySyncPath()
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::ArrangeFilterPathBySyncPath()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100830, ELogLevelNormal, KLogFmt);
	TUid viewUid = KSmbMusicAPMainPlayerInvalidUid;
	TInt listHandle;
	CSmbMusicAPMainPlayerFilterListView* listView;
	TBool needGetItem = EFalse;
	
	//2006.10.03 儗僕儏乕儉忣曬偐傜僇儗儞僩嵞惗儕僗僩傪愝掕偡傞
	iView->ResumePlayList();
	
	//2006.09.21 TRK#9459
	// 愭摢偑儈儏乕僕僢僋儊僯儏乕埲奜偺応崌
	// 儕僗僩僴儞僪儖偐傜専嶕僷僗傪嵞峔抸偡傞乮嵞惗夋柺偐傜慗堏偟偨応崌偲摨偠働乕僗乯
	if(ESmbMusicAPPlayerTopMenu!=SyncPath(0))
		{
		listHandle = SyncPath(0);
		TInt currentindex = SmbPGMusic::APListFocusSyncInfoL(iView->PropAgent());
		if(ESmbMusicAPPlayerPlayListMenu==listHandle)
			{
			listHandle = ESmbLocalListHandlePLType;
			}

⌨️ 快捷键说明

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