smbmusicapmainplayerfilterviewmodel.cpp

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

CPP
1,747
字号
			if(playListHandle==iActiveView->ListHandle())
				{
				iActiveView->SetDefaultIndex(playListItem);
				}
			}
		iActiveView->AdjustActiveIndex();
		}
	// 嬋堦棗埲奜偺応崌偺傾僀僥儉庢摼
	else if(KSmbMusicAPMainPlayerGenreListViewUid==targetViewUid
		|| KSmbMusicAPMainPlayerArtistListViewUid==targetViewUid
		|| KSmbMusicAPMainPlayerAlbumListViewUid==targetViewUid
		|| KSmbMusicAPMainPlayerPLListViewUid==targetViewUid)
		{
		TInt activeIndex = iActiveView->ActiveIndex();
		// 傾僀僥儉傪庢摼偡傞
		iActiveView->ProcessLoadListItemsForScreenSync(ECmdFilterViewGetListItems, activeIndex);
		iActiveView->SetActiveIndex(activeIndex);
		iActiveView->AdjustActiveIndex();
		}
	}

/**
 * 傾僋僥傿僽僀儞僨僢僋僗偺愝掕
 *
 * @param[in]	aListHandle		儕僗僩僴儞僪儖
 */
void CSmbMusicAPMainPlayerFilterViewModel::AdjustActiveIndexL(TInt aListHandle)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::AdjustActiveIndexL(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100714, ELogLevelNormal, KLogFmt, aListHandle);
	TUid viewUid = KSmbMusicAPMainPlayerInvalidUid;
	CSmbMusicAPMainPlayerFilterListView* listView;
	TSmbMusicAPSyncEnginePrevListInfo prevList;
	TInt listHandle = aListHandle;
	TInt itemIndex = 0;

	//2006.10.14 TRK#11530
	TInt selectedAll = -1;
	// 儕僗僩僴儞僪儖偐傜専嶕僷僗傪嵞峔抸偡傞
	while(ESmbLocalListHandleMusicMenu!=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.14 TRK#11530
					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:		///<僀儞億乕僩僾儗僀儕僗僩
					case ESmbMusicAPSyncEngineTypeWMAPlaylist:			///<WMA僾儗僀儕僗僩
						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.14 TRK#11530
				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-E 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);
				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)
				{
				// 僀儞僨僢僋僗傪愝掕偡傞
				listView->SetActiveIndex(itemIndex);
				//2006.09.21 TRK#9528
				TInt playListHandle;
				TInt playListItem;
				if(EFalse!=iView->CurrentPlayList(playListHandle, playListItem))
					{
					if(playListHandle==listView->ListHandle())
						{
						listView->SetDefaultIndex(playListItem);
						listView->AdjustDefaultIndex();
						}
					}
				}
			}
		else
			{
				
			// 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		
				
			// 僾儗僀儕僗僩慖戰丄曐懚愭慖戰偺応崌偼偙偙傪捠傞偼偢
			listHandle = ESmbLocalListHandleMusicMenu;
			break;
			}
		}
	}


/**
 * 儊僯儏乕夋柺偺専嶕僷僗峔抸
 *
 * @param[in]	aCommandId
 */
void CSmbMusicAPMainPlayerFilterViewModel::SetPlaylistViewL(TInt aCommandId)
	{
	_LIT(KLogFmt, "CSmbMusicAPMainPlayerFilterViewModel::SetPlaylistViewL(%d)");
	SmbMusicAPMainPlayerUtility::OutputLog(iLog, 100715, ELogLevelNormal, KLogFmt, aCommandId);
	// 専嶕僷僗傪儕僙僢僩偡傞
	// 儈儏乕僕僢僋儊僯儏偼巆偟偰偍偔
    ResetFilterPathL(1);
    
    CSmbMusicAPMainPlayerFilterListView* listView = NULL;
    // 僾儗僀儕僗僩慖戰夋柺傪捛壛偡傞
	listView = FindListViewByViewUid(KSmbMusicAPMainPlayerPLTypeListViewUid);
	if(NULL!=listView)
		{
		AppendFilterPath(listView);
		}
	
    // 僾儗僀儕僗僩夋柺傪捛壛偡傞
	listView = FindListViewByViewUid(KSmbMusicAPMainPlayerPLListViewUid);
	if(NULL!=listView)
		{
		AppendFilterPath(listView);
		if(ECmdFilterViewShowOriginalPlaylistForStartApp == aCommandId)
			{
			listView->SetListType(EPLOriginalPLListType);
			}
// Change-S PTX-824懳墳丂暯壀
		else if (ECmdFilterViewShowImportPlaylistForStartApp == aCommandId)
			{
			listView->SetListType(EPLImportPLListType);
			}
		else
			{
			listView->SetListType(EPLWMAPLListType);
			}
// Change-E PTX-824懳墳丂暯壀
		//2006.10.14 TRK#10229
		listView->SetListHandle(ESmbLocalListHandleInvalid);
		}

	// 専嶕僷僗夋柺傪惍楍偡傞
	AdjustFilterPathL(EFalse);
	// 僇儗儞僩僀儞僨僢僋僗偺夋柺偵堏摦偡傞
	iView->JumpToScreen(FilterPathCount()-1);
	// 傾僋僥傿僽價儏乕傪曄峏偡傞
	iActiveView = FilterPath(FilterPathCount()-1);
	iActiveView->ProcessCommandL(aCommandId);
	// 僼僅乕僇僗傪愝掕偡傞
	iActiveView->DoViewActivatedL();
	}
	
/**
 * 尰嵼偺傾僋僥傿僽側價儏乕偺夋柺悢傪庢摼
 */
TInt CSmbMusicAPMainPlayerFilterViewModel::CountListView()
	{
/*
	TInt count = FilterPathCount();
	TInt viewcount=0;
	for(TInt index=0;index<count;index++)
		{
		TUid viewUid=FilterPath(index)->ViewUid();
		if(KSmbMusicAPMainPlayerMusicMenuViewUid==viewUid
		|| KSmbMusicAPMainPlayerPLTypeListViewUid==viewUid

⌨️ 快捷键说明

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