smbmusicapmainplayerfilterlistviewpltype.cpp

来自「symbian」· C++ 代码 · 共 398 行

CPP
398
字号
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*-------------------------------------------------------------------------*/
// FileName:
//  SmbMusicAPMainPlayerFilterListViewPLType.cpp
//
// Description: 
//  CSmbMusicAPMainPlayerFilterListViewPLType class source.
/*------------------------------------------------------------------------*/
//曄峏棜楌
//擔晅          |曄峏幰     |撪梕
//--------------+-----------+----------------------------------------------
//2006/08/16	|SDNA嶳壀	| 怴婯嶌惉
//2006/08/28	|SDNA嶳壀	| 儕僗僩僴儞僪儖偵掕媊抣傪愝掕
//2007/07/23	|SEMCJ暯壀	| D_82400006405, D_82400004469 儈儏乕僕僢僋儊僯儏乕傾僀僐儞懳墳

#include <SmbAfWordingFormatter.h>
#include <SmbAfWording.rsg>
#include <SmbAfWording.loc>
#include <Music.mbg>
#include <SmbMusicAPMainPlayer.rsg>
#include "SmbMusicAPMainPlayer.hrh"
#include "SmbMusicAPMainPlayerFilterView.hrh"
#include "SmbMusicAPMainPlayerFilterView.h"
#include "SmbMusicAPMainPlayerFilterListView.h"
#include "SmbMusicAPMainPlayerFilterListViewPLType.h"
#include "SmbMusicAPMainPlayerFilterListItem.h"
#include "SmbMusicAPMainPlayerFilterSyncServerController.h"

#include <FjAfEnv.h>
#include "SmbMusicAPMainPlayerUtility.h"

SEMCJ_NAMESPACE_BEGIN

/**
 * 儐乕僓僾儗僀儕僗僩儊僯儏乕儕僗僩僋儔僗
 *	KSmbMusicAPMainPlayerPLTypeListViewUid
 */

//////////////////////////////////////////////////////////////////////////////////////
// 僋儔僗偺惗惉偲攋婞
//////////////////////////////////////////////////////////////////////////////////////
/**
 * 儐乕僓僾儗僀儕僗僩儊僯儏乕僋儔僗偺惗惉
 *
 * @param aView [in]	僼傿儖僞價儏乕
 * @return				儈儏乕僕僢僋儊僯儏乕儕僗僩僋儔僗
 */
CSmbMusicAPMainPlayerFilterListViewPLType* CSmbMusicAPMainPlayerFilterListViewPLType::NewL(TUid aViewUid, CSmbMusicAPMainPlayerFilterView* aView)
	{
	// 僀儞僗僞儞僗惗惉
	CSmbMusicAPMainPlayerFilterListViewPLType* self = new(ELeave) CSmbMusicAPMainPlayerFilterListViewPLType();
	// 僋儕乕儞傾僢僾僗僞僢僋妋曐
	CleanupStack::PushL(self);
	// 僙僇儞僪僐儞僗僩儔僋僞
	self->ConstructL(aViewUid, aView);
	// 僋儕乕儞傾僢僾僗僞僢僋奐曻
	CleanupStack::Pop();// self
	return self;
	}

/**
 * 僐儞僗僩儔僋僞
 *
 * @param aView [in]	僼傿儖僞價儏乕
 * @return				儈儏乕僕僢僋儊僯儏乕儕僗僩僋儔僗
 */
CSmbMusicAPMainPlayerFilterListViewPLType::CSmbMusicAPMainPlayerFilterListViewPLType()
	{
	}

/**
 * 僙僇儞僪僐儞僗僩儔僋僞
 * @param aView       [in] FilterView
 * @param aSyncEngine [in] 摨婜僄儞僕儞
 * 
 */
void CSmbMusicAPMainPlayerFilterListViewPLType::ConstructL(TUid aViewUid, CSmbMusicAPMainPlayerFilterView* aView)
	{
	// 僞僀僩儖僶乕丄儕僗僩儃僢僋僗傪惗惉偡傞
	CSmbMusicAPMainPlayerFilterListView::ConstructL(aViewUid, aView);
	// 儕僗僩僴儞僪儖傪愝掕偡傞
	SetListHandle(ESmbLocalListHandlePLType);
	}

/**
 * 僨僗僩儔僋僞
 */
CSmbMusicAPMainPlayerFilterListViewPLType::~CSmbMusicAPMainPlayerFilterListViewPLType()
	{
	}

//////////////////////////////////////////////////////////////////////////////////////
// 儕僗僩僞僀僾
//////////////////////////////////////////////////////////////////////////////////////
// 儕僗僩僞僀僾傪愝掕偡傞
void CSmbMusicAPMainPlayerFilterListViewPLType::AdjustListType()
	{
	//壗傕偟側偄
	}
	
//////////////////////////////////////////////////////////////////////////////////////
// 儕僗僩僴儞僪儖掕媊抣
//////////////////////////////////////////////////////////////////////////////////////
TInt CSmbMusicAPMainPlayerFilterListViewPLType::ListHandle()
	{
	return ESmbLocalListHandlePLType;
	}
	
//////////////////////////////////////////////////////////////////////////////////////
// 弶婜愝掕
//////////////////////////////////////////////////////////////////////////////////////
void CSmbMusicAPMainPlayerFilterListViewPLType::SetupModelL()
	{
	// 儐乕僓僾儗僀儕僗僩儊僯儏乕偺弶婜傾僀僥儉傪撉傒崬傓
	ReadItemsFromResourceL(R_OT_MUSIC_MAIN_FLT_PLTYPELIST_LIST);
	}

void CSmbMusicAPMainPlayerFilterListViewPLType::SetupControlL()
	{
	// 僞僀僩儖傪撉傒崬傫偱愝掕偡傞
	SetTitleTextL(R_OT_MUSIC_MAIN_FLT_PLTYPELIST_TITLE);
// Change-S PTX-824懳墳(D_82400006405, D_82400004469) 儈儏乕僕僢僋儊僯儏乕傾僀僐儞懳墳
//	SetTitleIconL(EMbmMusicMc_titlebar_icon_clear_main, 0);
	SetTitleIconL(EMbmMusicMc_titlebar_icon_menu_main, 0);
// Change-E PTX-824懳墳(D_82400006405, D_82400004469) 儈儏乕僕僢僋儊僯儏乕傾僀僐儞懳墳
	}

////////////////////////////////////////////////////////////////////////////
// 僼傿儖僞儕僗僩儌僨儖僀儀儞僩
////////////////////////////////////////////////////////////////////////////
TBool CSmbMusicAPMainPlayerFilterListViewPLType::HasParentList()
	{
	// 恊奒憌偼偁傞
	return ETrue;
	}

TBool CSmbMusicAPMainPlayerFilterListViewPLType::HasChildList()
	{
	// 巕奒憌偼偁傞
	return ETrue;
	}

TBool CSmbMusicAPMainPlayerFilterListViewPLType::CanResetCache() const
	{
	return EFalse;
	}
	
////////////////////////////////////////////////////////////////////////////
// 僐儅儞僪幚峴
////////////////////////////////////////////////////////////////////////////
// from MSmbAfCommandBase
/**
 * 儐乕僓僐儅儞僪幚峴
 *
 * @param aCommandId [in]	僐儅儞僪ID
 */
MSmbAfCommandBase::TSmbAfCmdIdResponse CSmbMusicAPMainPlayerFilterListViewPLType::HandleCommandL(TInt aCommandId)
	{
	// 婎杮僐儅儞僪
	switch(aCommandId)
		{
		case EMainPlayerFilterViewKGCmdSelect:			// 崁栚慖戰僐儅儞僪乮抁墴偟乯
		case EMainPlayerFilterViewKGCmdChildView:		// 巕奒憌夋柺慗堏僐儅儞僪
// Add-S PTX-824懳墳 2007.06.22 暯壀
		case EMainPlayerFilterViewKGCmdLongSelect:		// 崁栚慖戰僐儅儞僪乮挿墴偟乯
// Add-E PTX-824懳墳 2007.06.22 暯壀
			{
			// 慖戰偝傟偨傾僀僥儉傪庢摼偡傞
			CSmbMusicAPMainPlayerFilterListItem* item = CurrentItem();
			// 儊僯儏乕僐儅儞僪偑愝掕偝傟偰偄傞応崌
			if(NULL!=item && 0!=item->CommandID())
				{
				// 僐儅儞僪張棟偡傞
				return ProcessCommandL(item->CommandID());
				}
			}
			break;
// Del-S PTX-824懳墳 2007.06.22 暯壀
//		case EMainPlayerFilterViewKGCmdLongSelect:		// 崁栚慖戰僐儅儞僪乮挿墴偟乯
//			break;
// Del-E PTX-824懳墳 2007.06.22 暯壀
		case EMainPlayerFilterViewKGCmdClear:			// 僋儕傾乮慜夋柺乯僐儅儞僪
			break;
		case EMainPlayerFilterViewKGCmdParentView:		// 恊奒憌夋柺慗堏僐儅儞僪
			break;
		}
	return CSmbMusicAPMainPlayerFilterListView::HandleCommandL(aCommandId);
	}

/**
 * 僐儅儞僪幚峴
 *
 * @param aCommandId [in]	僐儅儞僪ID
 */
MSmbAfCommandBase::TSmbAfCmdIdResponse CSmbMusicAPMainPlayerFilterListViewPLType::ProcessCommandL(TInt aCommandId)
	{
	//
	// 儐乕僓僾儗僀儕僗僩儊僯儏乕僐儅儞僪
	//
	switch(aCommandId)
		{
		case ECmdFilterViewShowOriginalPlaylist:	// 僆儕僕僫儖僾儗僀儕僗僩
			{
			// 僀儀儞僩梷惂偡傞
			View()->SetEventDisabled(ETrue);
			ProcessGetListFromSearchTop(aCommandId, ESmbMusicAPSyncEngineOriginalPlaylist, ESmbMusicAPSyncEngineCategoryList, KSmbMusicAPMainPlayerPLListViewUid);
			}
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
		case ECmdFilterViewShowImportPlaylist:		// 僀儞億乕僩僾儗僀儕僗僩
			{
			//2006.10.01 TRK#8990
			//DB峔抸拞偐偳偆偐傪僠僃僢僋偡傞
			if(EFalse!=View()->IsMusicDbUpdatingL())
				{
				//DB峔抸拞偺応崌偼僀儞億乕僩僾儗僀儕僗僩偼慖戰晄壜乽嬋忣曬庢摼拞偺偨傔昞帵偱偒傑偣傫乿
				HandleDialogCommandL(EShowWarningModelessDialog, R_DL_MUSIC_MAIN_FLT_IMPORTPLAYLIST_DBUPDATE_WARNING);
				}
// Add-S PTX-824懳墳 暯壀
			// 儊儌儕儌乕僪/MTP儌乕僪拞偐偳偆偐傪僠僃僢僋偡傞
			else if (EFalse != View()->IsMemoryOrMTPModeL())
				{
				// 儊儌儕儌乕僪拞偁傞偄偼MTP儌乕僪拞偺応崌偼僀儞億乕僩僾儗僀儕僗僩偼慖戰晄壜
				HandleDialogCommandL(EShowWarningModelessDialog, R_DL_MUSIC_MAIN_FLT_PLAYLIST_MEMORYMODE_WARNING);
				}
// Add-E PTX-824懳墳 暯壀
			else
				{
				// 僀儀儞僩梷惂偡傞
				View()->SetEventDisabled(ETrue);
				ProcessGetListFromSearchTop(aCommandId, ESmbMusicAPSyncEngineImportPlaylist, ESmbMusicAPSyncEngineCategoryList, KSmbMusicAPMainPlayerPLListViewUid);
				}
			}
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
// Add-S PTX-824懳墳 暯壀
		case ECmdFilterViewShowWMAPlaylist:		// WMA僾儗僀儕僗僩
			{
			//DB峔抸拞偐偳偆偐傪僠僃僢僋偡傞
			if (EFalse!=View()->IsMusicDbUpdatingL())
				{
				//DB峔抸拞偺応崌偼WMA僾儗僀儕僗僩偼慖戰晄壜乽嬋忣曬庢摼拞偺偨傔昞帵偱偒傑偣傫乿(僀儞億乕僩僾儗僀儕僗僩偺応崌偲摨偠)
				HandleDialogCommandL(EShowWarningModelessDialog, R_DL_MUSIC_MAIN_FLT_IMPORTPLAYLIST_DBUPDATE_WARNING);	
				}
			// 儊儌儕儌乕僪/MTP儌乕僪拞偐偳偆偐傪僠僃僢僋偡傞
			else if (EFalse != View()->IsMemoryOrMTPModeL())
				{
				// 儊儌儕儌乕僪拞偁傞偄偼MTP儌乕僪拞偺応崌偼WMA僾儗僀儕僗僩偼慖戰晄壜
				HandleDialogCommandL(EShowWarningModelessDialog, R_DL_MUSIC_MAIN_FLT_PLAYLIST_MEMORYMODE_WARNING);
				}
			else
				{
				// 僀儀儞僩梷惂偡傞
				View()->SetEventDisabled(ETrue);
				ProcessGetListFromSearchTop(aCommandId, ESmbMusicAPSyncEngineWMAPlaylist, ESmbMusicAPSyncEngineCategoryList, KSmbMusicAPMainPlayerPLListViewUid);
				}
			}
			return MSmbAfCommandBase::ESmbAfCmdIdWasConsumed;
// Add-E PTX-824懳墳 暯壀
		}
	return MSmbAfCommandBase::ESmbAfCmdIdWasNotConsumed;
	}

//////////////////////////////////////////////////////////////////////////////////////
// 旕摨婜僾儘僙僗
//////////////////////////////////////////////////////////////////////////////////////
// from MSmbMusicAPMainPlayerFilterProcessObserver
void CSmbMusicAPMainPlayerFilterListViewPLType::ProcessComplete(TInt aResult, CSmbMusicAPMainPlayerFilterProcess& aProcess)
	{
	if( NULL!=ProcessObj() && &aProcess==ProcessObj() &&
		CSmbMusicAPMainPlayerFilterProcess::EProcessTypeGetListFromSearchTop == aProcess.GetProcessType() && 
		KErrNone==aResult)
		{
		// 幚峴拞偺僐儅儞僪傪僠僃僢僋偡傞
		switch(aProcess.GetRequestOwnerInfo())
			{
			case ECmdFilterViewShowOriginalPlaylist:	// 僆儕僕僫儖僾儗僀儕僗僩
			case ECmdFilterViewShowImportPlaylist:		// 僀儞億乕僩僾儗僀儕僗僩
			case ECmdFilterViewShowWMAPlaylist:			// WMA僾儗僀儕僗僩
				{
				//2006.10.20 摨婜僒乕僶強桳尃傪僠僃僢僋偟偰幚峴偡傞
				if(EFalse!=View()->IsAccessSyncEngine())
					{
					TInt listHandle = 0;
					TInt count = 0;
					CSmbMusicAPMainPlayerFilterProcessGetListFromSearchTop* processObj = static_cast<CSmbMusicAPMainPlayerFilterProcessGetListFromSearchTop*>(&aProcess);
//					CSmbMusicAPMainPlayerFilterProcessGetListFromSearchTop* processObj = STATIC_CAST(CSmbMusicAPMainPlayerFilterProcessGetListFromSearchTop*,&aProcess);
					processObj->GetListHandle(listHandle);
					processObj->GetCount(count);
					// 巕夋柺偵慗堏偡傞
					View()->ShowChildViewL(ProcessTargetViewUid(), listHandle, count);
					}
				else
					{
					// 僀儀儞僩梷惂夝彍偡傞
					View()->SetEventDisabled(EFalse);
					}
				}
				break;
			}
		}
	// 婎掙僋儔僗偱姰椆張棟偡傞
	CSmbMusicAPMainPlayerFilterListView::ProcessComplete(aResult,aProcess);
	}

/**
 * 僟僀傾儘僌僋儘乕僘捠抦
 *
 * @param[in]		aResourceId		儕僜乕僗俬俢
 * @param[in]		aResult			慖戰寢壥
 */
void CSmbMusicAPMainPlayerFilterListViewPLType::HandleDialogClosed(TInt aResourceId, TInt aResult)
	{
	CSmbMusicAPMainPlayerFilterListView::HandleDialogClosed(aResourceId, aResult);
	
	switch(aResourceId)
		{
		// DB峔抸拞
		case R_DL_MUSIC_MAIN_FLT_IMPORTPLAYLIST_DBUPDATE_WARNING:
			//壗傕偟側偄
			break;
		}
	}

//////////////////////////////////////////////////////////////////////////////////////
// 僞僀僩儖僶乕張棟
//////////////////////////////////////////////////////////////////////////////////////
/**
 * 僞僀僩儖僶乕傾僀僐儞偺愝掕
 *
 * @param aState       [in] FilterView
 */
void CSmbMusicAPMainPlayerFilterListViewPLType::AdjustTitleIconL()
	{
	CSmbMusicAPMainPlayerFilterListItem* item = CurrentItem();
	if(NULL!=item)
		{
		switch(item->CommandID())
			{
			case ECmdFilterViewShowOriginalPlaylist:	// 僆儕僕僫儖僾儗僀儕僗僩
				SetTitleIconL(0, EMbmMusicMc_original_playlist_icon);
				break;
			case ECmdFilterViewShowImportPlaylist:		// 僀儞億乕僩僾儗僀儕僗僩
				SetTitleIconL(0, EMbmMusicMc_import_playlist_icon);
				break;
			case ECmdFilterViewShowWMAPlaylist:			// WMA僾儗僀儕僗僩
				SetTitleIconL(0, EMbmMusicMc_wma_playlist_icon);
				break;
			}
		}
	}

//////////////////////////////////////////////////////////////////////////////////////
// 儕僗僩儃僢僋僗張棟
//////////////////////////////////////////////////////////////////////////////////////
/**
 * 儕僗僩儃僢僋僗偺敿婸搙挷惍
 *
 * @param aState       [in] FilterView
 */
void CSmbMusicAPMainPlayerFilterListViewPLType::AdjustListBoxL(TBool /*aState*/)
	{
	}

//////////////////////////////////////////////////////////////////////////////////////
// 僒僽儊僯儏乕
//////////////////////////////////////////////////////////////////////////////////////
/**
 * 儊僯儏儕僜乕僗俬俢
 *
 * @return				儕僜乕僗俬俢
 */
TInt CSmbMusicAPMainPlayerFilterListViewPLType::SubMenuID()
	{
	return R_SB_MUSIC_MAIN_FLT_OTHER;
	}

// 僒僽儊僯儏乕敿婸搙張棟
void CSmbMusicAPMainPlayerFilterListViewPLType::AdjustSubMenuL(CSkonSubMenu* aSubMenu, TInt /*aResId*/)
	{
	// 嵞惗拞偐偳偆偐傪僠僃僢僋偡傞
	TSmbPGMusicAPPlayerState playState = SmbPGMusic::MusicAPPlayerStateL(View()->PropAgent());
	if(ESmbPGMusicAPPlayerStatePlaying==playState)	// 嵞惗拞
		{
		aSubMenu->SetItemDisableL(aSubMenu->MenuItemArrayL(), 0, EFalse);
		aSubMenu->SetItemDisableL(aSubMenu->MenuItemArrayL(), 1, EFalse);
		}
	else
		{
		aSubMenu->SetItemDisableL(aSubMenu->MenuItemArrayL(), 0, ETrue);
		aSubMenu->SetItemDisableL(aSubMenu->MenuItemArrayL(), 1, ETrue);
		}
	}


SEMCJ_NAMESPACE_END

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

⌨️ 快捷键说明

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