smbmusicapmainplayerfilterviewmodel.cpp

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

CPP
1,747
字号
			InsertFilterPath(1, listView);
			}
		}
	// 2006.09.23 儕僗僩僴儞僪儖偺応崌
	else
		{
		if(KErrNone==iView->SyncModel().GetListType(listHandle, listType))
			{
			switch(listType)
				{
				case ESmbMusicAPSyncEngineTypeGenre:				///<僕儍儞儖
					targetViewUid = KSmbMusicAPMainPlayerGenreListViewUid;
					break;
				case ESmbMusicAPSyncEngineTypeArtist:				///<傾乕僥傿僗僩
					targetViewUid = KSmbMusicAPMainPlayerArtistListViewUid;
					break;
				case ESmbMusicAPSyncEngineTypeAlbum:				///<傾儖僶儉
					targetViewUid = KSmbMusicAPMainPlayerAlbumListViewUid;
					break;
				case ESmbMusicAPSyncEngineTypeOriginalPlaylist:		///<僆儕僕僫儖僾儗僀儕僗僩
				case ESmbMusicAPSyncEngineTypeImportPlaylist:		///<僀儞億乕僩僾儗僀儕僗僩
// Add-S PTX-824懳墳丂暯壀
				case ESmbMusicAPSyncEngineTypeWMAPlaylist:			///<WMA僾儗僀儕僗僩
// Add-E PTX-824懳墳丂暯壀
					targetViewUid = KSmbMusicAPMainPlayerPLListViewUid;
					break;
				case ESmbMusicAPSyncEngineTypeSonglist:				///<嬋堦棗
					// 嬋堦棗偺昞帵偺応崌
					// 嬋堦棗偲僾儗僀儕僗僩嬋堦棗傪幆暿偡傞偨傔偵慗堏尦傪挷傋傞
					targetViewUid = 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懳墳丂暯壀
							{
							targetViewUid = KSmbMusicAPMainPlayerPLSongListViewUid;
							}
						}
					break;
				case ESmbMusicAPSyncEngineTypeInvalidlist:			///<柍岠側儕僗僩
					listHandle = ESmbLocalListHandleInvalid;
					break;
				}
			}
		else
			{
			listHandle = ESmbLocalListHandleInvalid;
			}
		
		if(ESmbLocalListHandleInvalid!=listHandle)
			{
		    // 夋柺傪庢摼偡傞
			listView = FindListViewByViewUid(targetViewUid);
			if(NULL!=listView)
				{
				if(ESmbLocalListHandlePLType!=listHandle && ESmbLocalListHandleMemType!=listHandle)
					{
					// 儕僗僩僴儞僪儖傪愝掕偡傞
					listView->SetListHandle(listHandle);
					}
				// 僀儞僨僢僋僗傪愝掕偡傞
				listView->SetActiveIndex(itemIndex);
				if(KSmbMusicAPMainPlayerSongListViewUid==targetViewUid || KSmbMusicAPMainPlayerPLSongListViewUid==targetViewUid)
					{
					//2006.09.21 TRK#9528
					//listView->SetDefaultIndex(itemIndex);
					TInt playListHandle;
					TInt playListItem;
					if(EFalse!=iView->CurrentPlayList(playListHandle, playListItem))
						{
						if(playListHandle==listView->ListHandle())
							{
							listView->SetDefaultIndex(playListItem);
							}
						}
					}
				listView->AdjustActiveIndex();
			    // 専嶕僷僗偺儈儏乕僕僢僋儊僯儏乕偺屻傠偵儕僗僩夋柺傪捛壛偡傞
				AppendFilterPath(listView);
				}
			}
		}
	
	// 儕僗僩僴儞僪儖偐傜専嶕僷僗傪嵞峔抸偡傞
	//2006.10.06 TRK#10926
	TInt selectedAll = -1;
	// 2006.09.18 TRK#8996
//	while(ESmbLocalListHandleMusicMenu!=listHandle && ESmbLocalListHandleInvalid!=listHandle)
	while(ESmbLocalListHandleMusicMenu!=listHandle
	&& ESmbLocalListHandlePLType!=listHandle
	&& ESmbLocalListHandleMemType!=listHandle
	&& ESmbLocalListHandleInvalid!=listHandle)
		{
		// 慗堏尦偺儕僗僩傪庢摼偡傞
		if(KErrNone==iView->SyncModel().GetPrevList(listHandle, prevList))
			{
			// 慗堏尦儕僗僩忣曬偑儕僗僩傾僀僥儉偐偳偆偐丠乮iListInfo ETrue:慗堏尦儕僗僩傾僀僥儉丄EFalse:専嶕忣曬乯
			if(EFalse!=prevList.iListInfo)
				{
				// 儕僗僩僴僴儞僪儖傪愝掕偡傞
				listHandle = prevList.iListItem.iListHandle;
				// 僀儞僨僢僋僗傪愝掕偡傞
				if(0>prevList.iListItem.iIndex)
					{
					// 乽偡傋偰偺乣乿偺応崌偺僀儞僨僢僋僗傪愝掕偡傞
					itemIndex = 0;
					//2006.10.06 TRK#10926
					selectedAll++;
					}
				else
					{
					itemIndex = prevList.iListItem.iIndex;
					}
				// 價儏乕僞僀僾傪愝掕偡傞
				switch(prevList.iListType)
					{
					case ESmbMusicAPSyncEngineTypeGenre:				///<僕儍儞儖
						viewUid = KSmbMusicAPMainPlayerGenreListViewUid;
						itemIndex++;
						break;
					case ESmbMusicAPSyncEngineTypeArtist:				///<傾乕僥傿僗僩
						viewUid = KSmbMusicAPMainPlayerArtistListViewUid;
						itemIndex++;
						break;
					case ESmbMusicAPSyncEngineTypeAlbum:				///<傾儖僶儉
						viewUid = KSmbMusicAPMainPlayerAlbumListViewUid;
						itemIndex++;
						break;
					case ESmbMusicAPSyncEngineTypeOriginalPlaylist:		///<僆儕僕僫儖僾儗僀儕僗僩
					case ESmbMusicAPSyncEngineTypeImportPlaylist:		///<僀儞億乕僩僾儗僀儕僗僩
// Add-S PTX-824懳墳丂暯壀
					case ESmbMusicAPSyncEngineTypeWMAPlaylist:			///<WMA僾儗僀儕僗僩
// Add-E PTX-824懳墳丂暯壀
						viewUid = KSmbMusicAPMainPlayerPLListViewUid;
						break;
					case ESmbMusicAPSyncEngineTypeSonglist:				///<嬋堦棗
						// 偡偱偵嬋堦棗偼捛壛嵪傒偺偼偢偩偑丄堦墳張棟偼擖傟偰偍偔
						// 嬋堦棗偲僾儗僀儕僗僩嬋堦棗傪幆暿偡傞偨傔偵慗堏尦傪挷傋傞
						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;
					case ESmbMusicAPSyncEngineTypeInvalidlist:			///<柍岠側儕僗僩
					default:
						// 堎忢張棟
						// 儖乕僾傪敳偗傞
						listHandle = ESmbLocalListHandleInvalid;
						break;
					}
				//2006.10.06 TRK#10926
				if (ESmbMusicAPSyncEngineTypeGenre == prevList.iListType || 
					ESmbMusicAPSyncEngineTypeArtist == prevList.iListType || 
					ESmbMusicAPSyncEngineTypeAlbum == prevList.iListType)
					{
					if (0 == selectedAll)
						{
						itemIndex = 0;
						selectedAll++;
						}
					}
				}
			// 専嶕忣曬乮儈儏乕僕僢僋儊僯儏乕/僾儗僀儕僗僩僞僀僾慖戰/曐懚愭慖戰乯偺応崌
			else
				{
				switch(prevList.iSearchCondition)
					{
					// 儈儏乕僕僢僋儊僯儏乕
					case ESmbMusicAPSyncEngineAlbum:						///<傾儖僶儉
						listHandle = ESmbLocalListHandleMusicMenu;
						viewUid = KSmbMusicAPMainPlayerMusicMenuViewUid;
						itemIndex = 2;
						break;
					case ESmbMusicAPSyncEngineArtist:						///<傾乕僥傿僗僩
						listHandle = ESmbLocalListHandleMusicMenu;
						viewUid = KSmbMusicAPMainPlayerMusicMenuViewUid;
						itemIndex = 3;
						break;
					case ESmbMusicAPSyncEngineGenre:						///<僕儍儞儖
						listHandle = ESmbLocalListHandleMusicMenu;
						viewUid = KSmbMusicAPMainPlayerMusicMenuViewUid;
						itemIndex = 4;
						break;
					case ESmbMusicAPSyncEngineAll:							///<偡傋偰偺嬋
						listHandle = ESmbLocalListHandleMusicMenu;
						viewUid = KSmbMusicAPMainPlayerMusicMenuViewUid;
						itemIndex = 6;
						break;
					case ESmbMusicAPSyncEngineOften50:						///<傛偔挳偔50嬋
						listHandle = ESmbLocalListHandleMusicMenu;
						viewUid = KSmbMusicAPMainPlayerMusicMenuViewUid;
						itemIndex = 7;
						break;
					case ESmbMusicAPSyncEngineLatest50:						///<嵟嬤挳偄偨50嬋
						listHandle = ESmbLocalListHandleMusicMenu;
						viewUid = KSmbMusicAPMainPlayerMusicMenuViewUid;
						itemIndex = 8;
						break;
					// 僾儗僀儕僗僩僞僀僾慖戰
					case ESmbMusicAPSyncEngineOriginalPlaylist:				///<僆儕僕僫儖僾儗僀儕僗僩
						listHandle = ESmbLocalListHandlePLType;
						viewUid = KSmbMusicAPMainPlayerPLTypeListViewUid;
						itemIndex = 0;
						break;
					case ESmbMusicAPSyncEngineImportPlaylist:				///<僀儞億乕僩僾儗僀儕僗僩
						listHandle = ESmbLocalListHandlePLType;
						viewUid = KSmbMusicAPMainPlayerPLTypeListViewUid;
						itemIndex = 1;
						break;
//Add-S PTX-824懳墳丂暯壀
					case ESmbMusicAPSyncEngineWMAPlaylist:					///<WMA僾儗僀儕僗僩
						listHandle = ESmbLocalListHandlePLType;
						viewUid = KSmbMusicAPMainPlayerPLTypeListViewUid;
						itemIndex = 2;
						break;
//Add-E PTX-824懳墳丂暯壀
					// 曐懚愭慖戰
					case ESmbMusicAPSyncEngineDataBox:						///<曐懚愭偐傜1(僨乕僞BOX)
						listHandle = ESmbLocalListHandleMemType;
						viewUid = KSmbMusicAPMainPlayerMemTypeListViewUid;
						itemIndex = 0;
						break;
// Del-S PTX-824懳墳 TRK955 暯壀
#ifdef EXPANDEDMEM_DELETE
					case ESmbMusicAPSyncEngineMassStorage:					///<曐懚愭偐傜2(杮懱奼挘儊儌儕)
						listHandle = ESmbLocalListHandleMemType;
						viewUid = KSmbMusicAPMainPlayerMemTypeListViewUid;
						itemIndex = 1;
						break;
#endif
// Del-S PTX-824懳墳 TRK955 暯壀
					case ESmbMusicAPSyncEngineMSDuo:						///<曐懚愭偐傜3(M.S.Duo)
					case ESmbMusicAPSyncEngineMiniSD:						///<曐懚愭偐傜4(miniSD)
						listHandle = ESmbLocalListHandleMemType;
						viewUid = KSmbMusicAPMainPlayerMemTypeListViewUid;
						itemIndex = 2;
						break;
					}
				}
			
			// 柍岠側儕僗僩僴儞僪儖偺応崌
			if(ESmbLocalListHandleInvalid==listHandle)
				{
				// 儖乕僾傪敳偗傞
				break;
				}

			// 儈儏乕僕僢僋儊僯儏乕偺応崌
			if(ESmbLocalListHandleMusicMenu==listHandle)
				{
				// 儈儏乕僕僢僋儊僯儏乕偺僀儞僨僢僋僗傪愝掕偟偰儖乕僾傪敳偗傞
				FilterPath(0)->SetActiveIndex(itemIndex);
//				FilterPath(0)->SetDefaultIndex(itemIndex);
				FilterPath(0)->AdjustActiveIndex();
				break;
				}
				
				// ADD-S thiguchi TRK10383
				TInt index(-1);	
				switch(listHandle)
					{
				case ESmbLocalListHandlePLType:
					index = 5;
					break;
				case ESmbLocalListHandleMemType:
					index = 9;
					break;
				default:
					break;
					}
				if(-1 != index)
					{
					// 儈儏乕僕僢僋儊僯儏乕偺僀儞僨僢僋僗傪愝掕偡傞
					FilterPath(0)->SetActiveIndex(index);
					FilterPath(0)->AdjustActiveIndex();
					}
				// ADD-E thiguchi TRK10383		
				
					
		    // 夋柺傪庢摼偡傞
			listView = FindListViewByViewUid(viewUid);
			if(NULL!=listView)
				{
				if(ESmbLocalListHandlePLType!=listHandle && ESmbLocalListHandleMemType!=listHandle)
					{
					// 儕僗僩僴儞僪儖傪愝掕偡傞
					listView->ResetListInfo();
					listView->SetListHandle(listHandle);
					listView->SetItemCount(iView->SyncModel().GetItemCount(listHandle));
					}
				// 僀儞僨僢僋僗傪愝掕偡傞
				listView->SetActiveIndex(itemIndex);
//				listView->SetDefaultIndex(itemIndex);
				listView->AdjustActiveIndex();
			    // 専嶕僷僗偺儈儏乕僕僢僋儊僯儏乕偺屻傠偵夋柺傪憓擖偡傞
				InsertFilterPath(1, listView);
				}
			}
		else
			{
			// 僾儗僀儕僗僩慖戰丄曐懚愭慖戰偺応崌偼偙偙傪捠傞偼偢
			// 儖乕僾傪敳偗傞
			listHandle = ESmbLocalListHandleMusicMenu;
			break;
			}
		}
		
	// 柍岠側儕僗僩僴儞僪儖偺応崌偼儈儏乕僕僢僋儊僯儏乕傪昞帵偡傞
	if(ESmbLocalListHandleInvalid==listHandle)
		{
		// 専嶕僷僗傪儕僙僢僩偡傞
	    ResetFilterPathL(1);
		targetViewUid = KSmbMusicAPMainPlayerMusicMenuViewUid;
		}

	// 専嶕僷僗夋柺傪惍楍偡傞
	AdjustFilterPathL(EFalse);
	// 傾僋僥傿僽價儏乕傪曄峏偡傞
	iActiveView = FilterPath(FilterPathCount()-1);
	// 僇儗儞僩僀儞僨僢僋僗偺夋柺偵堏摦偡傞
	iView->JumpToScreen(FilterPathCount()-1);
	// 僼僅乕僇僗傪愝掕偡傞
	iActiveView->DoViewActivatedL();
	// 嬋堦棗偺傾僀僥儉傪嵞庢摼偡傞
	if(KSmbMusicAPMainPlayerSongListViewUid==targetViewUid
	|| KSmbMusicAPMainPlayerPLSongListViewUid==targetViewUid)
		{
		//2006.10.06 TRK#10070
		//TInt activeIndex = iActiveView->ActiveIndex();
		TInt activeIndex = aIndex;
		// 傾僀僥儉傪庢摼偡傞
		iActiveView->ProcessLoadListItemsForScreenSync(ECmdFilterViewGetListItems, activeIndex);
		iActiveView->SetActiveIndex(activeIndex);
		//2006.09.21 TRK#9528
		//iActiveView->SetDefaultIndex(activeIndex);
		TInt playListHandle;
		TInt playListItem;
		if(EFalse!=iView->CurrentPlayList(playListHandle, playListItem))
			{

⌨️ 快捷键说明

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