smbmusicapmainplayerfilterviewmodel.cpp

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

CPP
1,747
字号
		else if(ESmbMusicAPPlayerMemoryMenu==listHandle)
			{
			listHandle = ESmbLocalListHandleMemType;
			}
		SetFilterListViewL(listHandle, currentindex);
		return;
		}
	
	// 傾僋僥傿僽側儕僗僩價儏乕偺儕僗僩僴儞僪儖偲摨婜梡専嶕僷僗偺儕僗僩僴儞僪儖偑
	// 堦抳偟偰偄傞応崌偼僼僅乕僇僗埵抲傪崌傢偣傞
/*
	if(ActiveListView()->ListHandle()==SyncPath(SyncPathCount()-1))
		{
		// 僼僅乕僇僗埵抲傪偁傢偣傞
		TInt currentindex = SmbPGMusic::APListFocusSyncInfoL(iView->PropAgent());
		TInt visibleBegin = iActiveView->ListBox()->VisibleItemIndex()+1;
		TInt topIndex = iActiveView->CalculateTopIndex(visibleBegin, currentindex);
		iActiveView->ListBox()->SetTopItemIndex(topIndex);
		iActiveView->ListBox()->SetCurrentItemIndex(currentindex);
		// 枹庢摼偺傾僀僥儉偑偁傟偽撉傒崬傓
		iActiveView->PostRequestGetListItems(topIndex, iActiveView->ItemCount());
		return;
		}
*/
	
	//2006.10.14 TRK#10229
	TBool nulllistForStartApp = EFalse;
	if(3==FilterPathCount())
		{
		if(ESmbLocalListHandleInvalid==FilterPath(2)->ListHandle()
		&& (KSmbMusicAPMainPlayerPLListViewUid==FilterPath(2)->ViewUid()) )
			{
			nulllistForStartApp = ETrue;
			}
		}

	// 専嶕僷僗傪儕僙僢僩偡傞
    ResetFilterPathL(0);
	// 儈儏乕僕僢僋儊僯儏乕傪愭摢偵擖傟偰偍偔
	viewUid = KSmbMusicAPMainPlayerMusicMenuViewUid;
	listView = FindListViewByViewUid(KSmbMusicAPMainPlayerMusicMenuViewUid);
	listView->SetActiveIndex(0);
	AppendFilterPath(listView);
    
    // 専嶕僷僗偐傜摨婜梡専嶕僷僗傪嶌惉偡傞
	TInt pathCount = SyncPathCount();
	// 儈儏乕僕僢僋儊僯儏乕埲崀傪嵞峔惉偡傞
	for(TInt index=1;index<pathCount;index++)
		{
		listHandle = SyncPath(index);
		switch(listHandle)
			{
			case ESmbMusicAPPlayerTopMenu:
				// 儈儏乕僕僢僋儊僯儏乕
				//viewUid = KSmbMusicAPMainPlayerMusicMenuViewUid;
				//listView = FindListViewByViewUid(KSmbMusicAPMainPlayerMusicMenuViewUid);
				//listView->SetActiveIndex(0);
				//AppendFilterPath(listView);
				break;
			case ESmbMusicAPPlayerPlayListMenu:
				{
				// 師偵慗堏偡傞夋柺傪捛壛偡傞
				viewUid = KSmbMusicAPMainPlayerPLTypeListViewUid;
				listView = FindListViewByViewUid(KSmbMusicAPMainPlayerPLTypeListViewUid);
				listView->SetActiveIndex(0);
				AppendFilterPath(listView);
				}
				break;
			case ESmbMusicAPPlayerMemoryMenu:		
				{
				// 師偵慗堏偡傞夋柺傪捛壛偡傞
				viewUid = KSmbMusicAPMainPlayerMemTypeListViewUid;
				listView = FindListViewByViewUid(KSmbMusicAPMainPlayerMemTypeListViewUid);
				listView->SetActiveIndex(0);
				AppendFilterPath(listView);
				}
				break;
			case ESmbLocalListHandleInvalid:
				{
				//2006.10.14 TRK#10229
				if(EFalse!=nulllistForStartApp)
					{
					viewUid = KSmbMusicAPMainPlayerPLListViewUid;
					listView = FindListViewByViewUid(KSmbMusicAPMainPlayerPLListViewUid);
					listView->SetActiveIndex(0);
					AppendFilterPath(listView);
					}
				}
				break;
			default:
				{
				TSmbMusicAPSyncEngineListType listType;
				// 儕僗僩僴儞僪儖偺僞僀僾傪幆暿偡傞
				// 偳偺儌僨儖偐傜庢摼偟偰傕峔傢側偄偼偢
				iView->SyncModel().GetListType(listHandle, listType);
				switch(listType)
					{
					case ESmbMusicAPSyncEngineTypeGenre:				///<僕儍儞儖
						viewUid = KSmbMusicAPMainPlayerGenreListViewUid;
						break;
					case ESmbMusicAPSyncEngineTypeArtist:				///<傾乕僥傿僗僩
						viewUid = KSmbMusicAPMainPlayerArtistListViewUid;
						break;
					case ESmbMusicAPSyncEngineTypeAlbum:				///<傾儖僶儉
						viewUid = KSmbMusicAPMainPlayerAlbumListViewUid;
						break;
					case ESmbMusicAPSyncEngineTypeOriginalPlaylist:		///<僆儕僕僫儖僾儗僀儕僗僩
						viewUid = KSmbMusicAPMainPlayerPLListViewUid;
						break;
					case ESmbMusicAPSyncEngineTypeImportPlaylist:		///<僀儞億乕僩僾儗僀儕僗僩
						viewUid = KSmbMusicAPMainPlayerPLListViewUid;
						break;
// Add-S PTX-824懳墳丂暯壀
					case ESmbMusicAPSyncEngineTypeWMAPlaylist:			///<WMA僾儗僀儕僗僩
						viewUid = KSmbMusicAPMainPlayerPLListViewUid;
						break;
// Add-E PTX-824懳墳丂暯壀
					case ESmbMusicAPSyncEngineTypeSonglist:				///<嬋堦棗
						{
						// 2006.09.13 TRK#8468
						TSmbMusicAPSyncEnginePrevListInfo prevList;
						// 堦偮慜偺儌僨儖傪尒偰僾儗僀儕僗僩堦棗偱偁傟偽
						// 僾儗僀儕僗僩嬋堦棗偺偼偢
						// 嬋堦棗偲僾儗僀儕僗僩嬋堦棗傪幆暿偡傞偨傔偵慗堏尦傪挷傋傞
						viewUid = KSmbMusicAPMainPlayerSongListViewUid;
						if(KErrNone==iView->SyncModel().GetPrevList(listHandle, prevList))
							{
							if(ESmbMusicAPSyncEngineTypeOriginalPlaylist==prevList.iListType
							|| ESmbMusicAPSyncEngineTypeImportPlaylist==prevList.iListType
// Add-S PTX-824懳墳丂暯壀
							|| ESmbMusicAPSyncEngineTypeWMAPlaylist==prevList.iListType)
// Add-E PTX-824懳墳丂暯壀							
								{
								viewUid = KSmbMusicAPMainPlayerPLSongListViewUid;
								}
							}
						}
						break;
					default:
						viewUid = KSmbMusicAPMainPlayerInvalidUid;		///Unknown list
						break;
					}
				// 堦墳丄儕僗僩僴儞僪儖偺懨摉惈傪僠僃僢僋偟偰偍偔
				if(viewUid!=KSmbMusicAPMainPlayerInvalidUid)
					{
					// 師偵慗堏偡傞夋柺傪捛壛偡傞
					listView = FindListViewByViewUid(viewUid);
					if(NULL!=listView)
						{
						// 儕僗僩僴儞僪儖傪愝掕偡傞
						listView->ResetListInfo();
						listView->SetListHandle(listHandle);
						listView->SetItemCount(iView->SyncModel().GetItemCount(listHandle));
						listView->SetActiveIndex(0);
						AppendFilterPath(listView);
						needGetItem = ETrue;
						}
					}
				}
				break;
			}
		}
	
	// 傾僋僥傿僽僀儞僨僢僋僗傪愝掕偡傞
	AdjustActiveIndexL(FilterPath(FilterPathCount()-1)->ListHandle());
// Add-S PTX-824 D_82400015162懳墳 暯壀 2007.09.17
	TInt playListHandle;
	TInt playListItem;
	if(EFalse!=iView->CurrentPlayList(playListHandle, playListItem))
		{
		if(playListHandle==listView->ListHandle())
			{
			listView->SetDefaultIndex(playListItem);
			listView->AdjustDefaultIndex();
			}
		}
// Add-E PTX-824 D_82400015162懳墳 暯壀 2007.09.17
	// 専嶕僷僗夋柺傪惍楍偡傞
	AdjustFilterPathL(ETrue);
	// 傾僋僥傿僽價儏乕傪曄峏偡傞
	iActiveView = FilterPath(FilterPathCount()-1);
	// 僇儗儞僩僀儞僨僢僋僗偺夋柺偵堏摦偡傞
	iView->JumpToScreen(FilterPathCount()-1);
	// 僼僅乕僇僗傪愝掕偡傞
//DEL-S>2006.10.31 TRK#12252 師婡庬(PTX-824)懳墳 TRK-572
//	iActiveView->DoViewActivatedL();
//DEL-E<2006.10.31 TRK#12252

//2006.09.06 SEMCJ嬥岝 TRK4121懳墳 ADD-S
	TInt currentindex = SmbPGMusic::APListFocusSyncInfoL(iView->PropAgent());
//2006.09.06 SEMCJ嬥岝 TRK4121懳墳 ADD-E

	// 傾僀僥儉傪嵞庢摼偡傞
	if(EFalse!=needGetItem)
		{
		// 儕僗僩偵傾僀僥儉偑偁傟偽傾僀僥儉庢摼偡傞
		if(0<iActiveView->ItemCount())
			{
			// 傾僀僥儉傪庢摼偡傞
			iActiveView->ProcessLoadListItemsForScreenSync(ECmdFilterViewGetListItems, currentindex);
			iActiveView->SetActiveIndex(currentindex);
			AdjustActiveIndexL(iActiveView->ListHandle());
//DEL-S>2006.10.31 TRK#12252 師婡庬(PTX-824)懳墳 TRK-572
//			iActiveView->DoViewActivatedL();
//DEL-E<2006.10.31 TRK#12252
			}
		}
//2006.09.06 SEMCJ嬥岝 TRK4121懳墳 ADD-S
	else
		{
		TInt topIndex = iActiveView->SyncFocusIndex(currentindex);
		iActiveView->ListBox()->SetTopItemIndex(topIndex);
		iActiveView->ListBox()->SetCurrentItemIndex(currentindex);
		}
//2006.09.06 SEMCJ嬥岝 TRK4121懳墳 ADD-E

//ADD-S>2006.10.31 TRK#12252 師婡庬(PTX-824)懳墳 TRK-572
	iActiveView->DoViewActivatedL();
//ADD-E<2006.10.31 TRK#12252
	}

//2006.09.21 TRK#9459
/**
 * 僒僽僾儗僀儎偐傜偺夋柺慗堏捠抦偱丄懠偺夋柺偐傜専嶕夋柺偵慗堏偟偨応崌
 */
void CSmbMusicAPMainPlayerFilterViewModel::UpdateSyncPathL(TInt aListHandle)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::UpdateSyncPathL(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100840, ELogLevelNormal, KLogFmt, aListHandle);
	// 専嶕僷僗傪偦偺傑傑堐帩偡傞応崌	
	if(ESmbMusicAPPlayerKeep==aListHandle)
		{
		// 壗傕偟側偄
		return;
		}

	//摨婜梡僷僗傪儕僙僢僩偡傞
	iSyncArray.Reset();
	//儕僗僩僴儞僪儖傪愊傫偱偍偔
	//仸捠忢偺夋柺摨婜偱偼愭摢偵乽儈儏乕僕僢僋儊僯儏乕(ESmbMusicAPPlayerTopMenu)乿偑愊傑傟傞偑丄
	//  偙偺働乕僗偩偗偱偼摿暿偵儕僗僩僴儞僪儖傪愊傫偱偍偒丄抂枛僆乕僾儞帪偵専嶕僷僗傪嵞峔抸偡傞
    AppendSyncPath(aListHandle);
	}

/**
 * 摨婜梡専嶕僷僗偺夋柺忣曬庢摼
 * @param aIndex	     [in] 僀儞僨僢僋僗
 * @return					  儕僗僩儃僢僋僗僐儞僩儘乕儖
 */
TInt CSmbMusicAPMainPlayerFilterViewModel::SyncPath(TInt aIndex) const
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::SyncPath(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100850, ELogLevelNormal, KLogFmt, aIndex);
	if(0<iSyncArray.Count() && aIndex<iSyncArray.Count())
		{
		return iSyncArray[aIndex];
		}
	return 0;
	}
	
/**
 * 摨婜梡専嶕僷僗偺夋柺忣曬悢庢摼
 * @return					  儕僗僩儃僢僋僗僐儞僩儘乕儖偺悢
 */
TInt CSmbMusicAPMainPlayerFilterViewModel::SyncPathCount() const
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::SyncPathCount()");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100860, ELogLevelNormal, KLogFmt);
	return iSyncArray.Count();
	}
	
/**
 * 摨婜梡専嶕僷僗偵夋柺忣曬憓擖
 * @param aListBoxControl	     [in] 儕僗僩儃僢僋僗僐儞僩儘乕儖
 */
void CSmbMusicAPMainPlayerFilterViewModel::InsertSyncPath(TInt aIndex, TInt aListHandle)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::InsertSyncPath(%d, %d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100870, ELogLevelNormal, KLogFmt, aIndex, aListHandle);
    TInt err = iSyncArray.Insert(aIndex, aListHandle);
    if(KErrNone!=err)
	    {
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::InsertSyncPath(%d, %d) error=%d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100811, ELogLevelHighest, KLogFmt, aIndex, aListHandle, err);
		User::Leave(err);
	    }
	}

/**
 * 摨婜梡専嶕僷僗偵夋柺忣曬偺捛壛
 * @param aListBoxControl	     [in] 儕僗僩儃僢僋僗僐儞僩儘乕儖
 */
void CSmbMusicAPMainPlayerFilterViewModel::AppendSyncPath(TInt aListHandle)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::AppendSyncPath(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100880, ELogLevelNormal, KLogFmt, aListHandle);
    TInt err = iSyncArray.Append(aListHandle);
    if(KErrNone!=err)
	    {
		_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::AppendSyncPath(%d) error=%d");
		SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100821, ELogLevelHighest, KLogFmt, aListHandle, err);
		User::Leave(err);
	    }
	}

/**
 * 摨婜梡専嶕僷僗偺夋柺忣曬偺嶍彍
 * @param aListBoxControl	     [in] 儕僗僩儃僢僋僗僐儞僩儘乕儖
 */
void CSmbMusicAPMainPlayerFilterViewModel::DeleteSyncPath(TInt aIndex)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::DeleteSyncPath(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100890, ELogLevelNormal, KLogFmt, aIndex);
	if(iSyncArray.Count()>aIndex)
		{
		iSyncArray.Remove(aIndex);
		}
	}

//2006.09.07 SEMCJ嬥岝 TRK7077懳墳 ADD-S
void CSmbMusicAPMainPlayerFilterViewModel::ResetSyncPath()
	{
	//摨婜梡僷僗傪儕僙僢僩偡傞
	iSyncArray.Reset();
	//儈儏乕僕僢僋儊僯儏乕偩偗偼愊傫偱偍偔
    AppendSyncPath(ESmbMusicAPPlayerTopMenu);
	}
//2006.09.07 SEMCJ嬥岝 TRK7077懳墳 ADD-E

/**
 * 僨僼僅儖僩僒儉僱僀儖偺愝掕
 * @param aDefaultThumbnail	     [in] 僨僼僅儖僩僒儉僱僀儖
 */
void CSmbMusicAPMainPlayerFilterViewModel::SetDefaultThumbnail(CGulIcon* aDefaultThumbnail)
	{
	TInt count = iViewArray.Count();
	for(TInt i=0; i<count; i++)
		{
		iViewArray[i]->SetDefaultThumbnail(aDefaultThumbnail);
		}
	}

SEMCJ_NAMESPACE_END

// end of SmbMusicAPMainPlayerFilterViewModel.cpp
/* Copyright (C) 2006-2007 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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